X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp-builds.git;a=blobdiff_plain;f=src%2Fdata%2Fdata-out.c;h=4c6ca3dd3ceaa223217c021e3d45ade44caa2507;hp=7f15e5b24a8a42caafe8ad48d5dd809b467d1cd6;hb=729b96a6bd9342c45e6f65a113fd87c70da85b0a;hpb=f15c854d8500105766b2f5666bb62b983ff24f88 diff --git a/src/data/data-out.c b/src/data/data-out.c index 7f15e5b2..4c6ca3dd 100644 --- a/src/data/data-out.c +++ b/src/data/data-out.c @@ -37,6 +37,7 @@ #include #include #include +#include #include "minmax.h" @@ -108,7 +109,7 @@ data_out_legacy (const union value *input, const char *encoding, legacy_recode (LEGACY_NATIVE, output, encoding, output, format->w); } -/* 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 +120,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); }