X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/d6b2ae5fa68b9a82ffc006c233aef64c5cdb3bd2..7711f3fc00259e55f630cfe6104eff3083dc9d77:/sbr/fmt_scan.c diff --git a/sbr/fmt_scan.c b/sbr/fmt_scan.c index 5732af91..ec60e1ba 100644 --- a/sbr/fmt_scan.c +++ b/sbr/fmt_scan.c @@ -93,13 +93,18 @@ cpnumber(charstring_t dest, int num, unsigned int wid, char fill, size_t max) { charstring_push_back (rev, '?'); } else if (num < 0 && wid > 0) { /* Shouldn't need the wid > 0 check, that's why the condition - at the top checks wid < max-1 when num < 0. */ - charstring_push_back (rev, '-'); + at the top checks wid < max-1 when num < 0. */ --wid; + if (fill == ' ') { + charstring_push_back (rev, '-'); + } } while (wid-- > 0 && fill != 0) { charstring_push_back (rev, fill); } + if (num < 0 && fill == '0') { + charstring_push_back (rev, '-'); + } { /* Output the string in reverse. */ @@ -740,6 +745,9 @@ fmt_scan (struct format *format, charstring_t scanlp, int width, int *dat, case FT_LV_MINUS_L: value = fmt->f_value - value; break; + case FT_LV_MULTIPLY_L: + value *= fmt->f_value; + break; case FT_LV_DIVIDE_L: if (fmt->f_value) value = value / fmt->f_value;