- width must be fmt_var_width(FORMAT). */
-void
-data_out (const union value *input, const struct fmt_spec *format,
- char *output)
+ 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)
+{
+ char *output;
+ char *t ;
+ assert (fmt_check_output (format));
+
+ output = xmalloc (format->w + 1);
+
+ converters[format->type] (input, format, output);
+
+ t = recode_string_pool (UTF8, encoding, output, format->w, pool);
+ free (output);
+ return t;
+}
+
+char *
+data_out (const union value *input, const char *encoding, const struct fmt_spec *format)