- 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).
+
+ 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 struct fmt_spec *format,
+ struct pool *pool)
+{
+ char *output = pool_malloc (pool, format->w + 1);
+ assert (fmt_check_output (format));
+
+ converters[format->type] (input, format, output);
+ output[format->w] = '\0';
+ return output;
+}
+
+char *
+data_out (const union value *input, const struct fmt_spec *format)