aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2007-05-24 18:48:26 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2007-05-24 18:48:26 +0000
commit63b6aec5433e9610e0b701cf608d234b798a290f (patch)
tree219b5f7e6a9c700187b3fc50f48246edc85bfe28 /src
parent15a613d5247b1e2f739f100ed73c7c95753d9848 (diff)
downloadmailfromd-63b6aec5433e9610e0b701cf608d234b798a290f.tar.gz
mailfromd-63b6aec5433e9610e0b701cf608d234b798a290f.tar.bz2
Further fixes
git-svn-id: file:///svnroot/mailfromd/trunk@1472 7a8a7f39-df28-0410-adc6-e0d955640f24
Diffstat (limited to 'src')
-rw-r--r--src/bi_sprintf.m420
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;
}

Return to:

Send suggestions and report system problems to the System administrator.