X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fformat.c;h=b925f3cf336ffb4115d6f77370a2157b6a35c580;hb=4ec88a3abb859304f42a5905231704b2ecfaf711;hp=60c1d0a9133b98fc33e4411e6b1b7d39e73824db;hpb=338fb2a2e84df6427a2fdee6769421f57d5666d8;p=pspp diff --git a/src/data/format.c b/src/data/format.c index 60c1d0a913..b925f3cf33 100644 --- a/src/data/format.c +++ b/src/data/format.c @@ -1,6 +1,5 @@ /* PSPP - computes sample statistics. Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. - Written by Ben Pfaff . This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -587,6 +586,36 @@ fmt_date_template (enum fmt_type type) NOT_REACHED (); } } + +/* 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); +} /* Returns true if TYPE is a valid format type, false otherwise. */