+
+/* Returns a string of the form "$#,###.##" according to FMT,
+ which must be of type FMT_DOLLAR. The caller must free the
+ string. */
+char *
+fmt_dollar_template (const struct fmt_spec *fmt)
+{
+ struct string s = DS_EMPTY_INITIALIZER;
+ int c;
+
+ assert (fmt->type == FMT_DOLLAR);
+
+ ds_put_char (&s, '$');
+ for (c = MAX (fmt->w - fmt->d - 1, 0); c > 0; )
+ {
+ ds_put_char (&s, '#');
+ if (--c % 4 == 0 && c > 0)
+ {
+ ds_put_char (&s, fmt_grouping_char (fmt->type));
+ --c;
+ }
+ }
+ if (fmt->d > 0)
+ {
+ ds_put_char (&s, fmt_decimal_char (fmt->type));
+ ds_put_char_multiple (&s, '#', fmt->d);
+ }
+
+ return ds_cstr (&s);
+}