diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-05-24 18:48:26 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2007-05-24 18:48:26 +0000 |
commit | 63b6aec5433e9610e0b701cf608d234b798a290f (patch) | |
tree | 219b5f7e6a9c700187b3fc50f48246edc85bfe28 | |
parent | 15a613d5247b1e2f739f100ed73c7c95753d9848 (diff) | |
download | mailfromd-63b6aec5433e9610e0b701cf608d234b798a290f.tar.gz mailfromd-63b6aec5433e9610e0b701cf608d234b798a290f.tar.bz2 |
Further fixes
git-svn-id: file:///svnroot/mailfromd/trunk@1472 7a8a7f39-df28-0410-adc6-e0d955640f24
-rw-r--r-- | src/bi_sprintf.m4 | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/bi_sprintf.m4 b/src/bi_sprintf.m4 index de1a571d..453831d1 100644 --- a/src/bi_sprintf.m4 +++ b/src/bi_sprintf.m4 @@ -77,7 +77,6 @@ MF_DEFUN_VARARGS(sprintf, STRING, STRING format) flags = 0; width = 0; prec = 0; - argnum = i; } else MF_1GROW_TEMP_SPACE(*p); p++; @@ -143,8 +142,8 @@ MF_DEFUN_VARARGS(sprintf, STRING, STRING format) } else if (*p == '*') { p++; state = fmts_width_arg; - } - state = fmts_prec; + } else + state = fmts_prec; break; case fmts_width_arg: @@ -153,7 +152,8 @@ MF_DEFUN_VARARGS(sprintf, STRING, STRING format) if (isdigit(*p)) { char *q = get_num(p, &n); if (*q == '$') { - num = (unsigned) MF_VA_ARG(n, NUMBER); + num = (unsigned) MF_VA_ARG(n-1, + NUMBER); p = q + 1; if (num < 0) { flags |= FMT_SPACEPFX; @@ -163,7 +163,8 @@ MF_DEFUN_VARARGS(sprintf, STRING, STRING format) break; } } - num = MF_VA_ARG(i++, NUMBER); + num = MF_VA_ARG(i, NUMBER); + i++; if (num < 0) { /* A negative field width is taken as a `-' flag followed by a positive field width. */ @@ -194,19 +195,22 @@ MF_DEFUN_VARARGS(sprintf, STRING, STRING format) if (isdigit(*p)) { char *q = get_num(p, &n); if (*q == '$') { - num = MF_VA_ARG(n, NUMBER); + num = MF_VA_ARG(n-1, NUMBER); if (num > 0) prec = (unsigned) num; p = q + 1; break; } } - num = MF_VA_ARG(i++, NUMBER); + num = MF_VA_ARG(i, NUMBER); + i++; if (num > 0) prec = (unsigned) num; break; case fmts_conv: /* Expect conversion specifier */ + if (!(flags & FMT_ALTPOS)) + argnum = i++; switch (*p) { case 's': str = MF_VA_ARG(argnum,STRING); @@ -406,8 +410,6 @@ MF_DEFUN_VARARGS(sprintf, STRING, STRING format) MF_GROW_TEMP_SPACE(start, p - start + 1); } - if (!(flags & FMT_ALTPOS)) - i++; p++; state = fmts_copy; } |