X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fdata-out.c;h=ca5fcecef79a0b231a482c4a4bb7c429b3a5e372;hb=bc19562deb692e6db3271eb0402e9f9c99e4cbcb;hp=4c6ca3dd3ceaa223217c021e3d45ade44caa2507;hpb=729b96a6bd9342c45e6f65a113fd87c70da85b0a;p=pspp-builds.git diff --git a/src/data/data-out.c b/src/data/data-out.c index 4c6ca3dd..ca5fcece 100644 --- a/src/data/data-out.c +++ b/src/data/data-out.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2009, 2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -104,24 +104,32 @@ data_out_legacy (const union value *input, const char *encoding, assert (fmt_check_output (format)); converters[format->type] (input, format, output); - if (0 != strcmp (encoding, LEGACY_NATIVE) + if (0 != strcmp (encoding, C_ENCODING) && fmt_get_category (format->type) != FMT_CAT_BINARY) - legacy_recode (LEGACY_NATIVE, output, encoding, output, format->w); + { + char *s = recode_string (encoding, C_ENCODING, output, format->w ); + memcpy (output, s, format->w); + free (s); + } } -/* Converts the INPUT value into a UTF8 encoded string, according to format - specification FORMAT. +/* Converts the INPUT value into a UTF8 encoded string, according + to format specification FORMAT. VALUE must be the correct width for FORMAT, that is, its width must be fmt_var_width(FORMAT). + ENCODING must be the encoding of INPUT. Normally this can + be obtained by calling dict_get_encoding on the dictionary + with which INPUT is associated. + The return value is dynamically allocated, and must be freed by the caller. If POOL is non-null, then the return value is allocated on that pool. */ char * -data_out_pool (const union value *input, const char *encoding, const struct fmt_spec *format, - struct pool *pool) +data_out_pool (const union value *input, const char *encoding, + const struct fmt_spec *format, struct pool *pool) { char *output = xmalloc (format->w + 1); char *t ;