X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fdata-out.c;h=20a0b46df9070df7167fe269f2c0eb17b96a8f82;hb=2764b3157e26955a31af5f4aa7d14e27098ddf19;hp=7f15e5b24a8a42caafe8ad48d5dd809b467d1cd6;hpb=f15c854d8500105766b2f5666bb62b983ff24f88;p=pspp-builds.git diff --git a/src/data/data-out.c b/src/data/data-out.c index 7f15e5b2..20a0b46d 100644 --- a/src/data/data-out.c +++ b/src/data/data-out.c @@ -37,6 +37,7 @@ #include #include #include +#include #include "minmax.h" @@ -105,10 +106,14 @@ data_out_legacy (const union value *input, const char *encoding, converters[format->type] (input, format, output); if (0 != strcmp (encoding, LEGACY_NATIVE) && fmt_get_category (format->type) != FMT_CAT_BINARY) - legacy_recode (LEGACY_NATIVE, output, encoding, output, format->w); + { + char *s = recode_string (encoding, LEGACY_NATIVE, output, format->w ); + memcpy (output, s, format->w); + free (s); + } } -/* Converts the INPUT value into printable form, according to 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 @@ -119,21 +124,25 @@ data_out_legacy (const union value *input, const char *encoding, allocated on that pool. */ char * -data_out_pool (const union value *input, const struct fmt_spec *format, +data_out_pool (const union value *input, const char *encoding, const struct fmt_spec *format, struct pool *pool) { - char *output = pool_malloc (pool, format->w + 1); + char *output = xmalloc (format->w + 1); + char *t ; assert (fmt_check_output (format)); converters[format->type] (input, format, output); output[format->w] = '\0'; - return output; + + t = recode_string_pool (UTF8, encoding, output, format->w, pool); + free (output); + return t; } char * -data_out (const union value *input, const struct fmt_spec *format) +data_out (const union value *input, const char *encoding, const struct fmt_spec *format) { - return data_out_pool (input, format, NULL); + return data_out_pool (input, encoding, format, NULL); }