version 1.9, 1997/01/25 03:24:52 |
version 1.10, 1997/01/29 18:33:56 |
|
|
char fmt[RECSIZE]; |
char fmt[RECSIZE]; |
char *p, *t, *os; |
char *p, *t, *os; |
Cell *x; |
Cell *x; |
int flag = 0, len = 0, n; |
int flag = 0, n; |
|
|
os = s; |
os = s; |
p = buf; |
p = buf; |
|
|
if (p - buf >= bufsize) |
if (p - buf >= bufsize) |
return -1; |
return -1; |
if (*s != '%') { |
if (*s != '%') { |
len++; |
|
*p++ = *s++; |
*p++ = *s++; |
continue; |
continue; |
} |
} |
if (*(s+1) == '%') { |
if (*(s+1) == '%') { |
len++; |
|
*p++ = '%'; |
*p++ = '%'; |
s += 2; |
s += 2; |
continue; |
continue; |
|
|
a = a->nnext; |
a = a->nnext; |
switch (flag) { |
switch (flag) { |
case 0: sprintf((char *)p, "%s", fmt); /* unknown, so dump it too */ |
case 0: sprintf((char *)p, "%s", fmt); /* unknown, so dump it too */ |
len += strlen(p); |
|
p += strlen(p); |
p += strlen(p); |
sprintf((char *)p, "%s", getsval(x)); |
sprintf((char *)p, "%s", getsval(x)); |
break; |
break; |
|
|
isnum(x) ? |
isnum(x) ? |
(getfval(x) ? |
(getfval(x) ? |
sprintf((char *)p, (char *)fmt, (int) getfval(x)) |
sprintf((char *)p, (char *)fmt, (int) getfval(x)) |
: (*p++ = '\0', len++)) |
: (*p++ = '\0')) |
: sprintf((char *)p, (char *)fmt, getsval(x)[0]); |
: sprintf((char *)p, (char *)fmt, getsval(x)[0]); |
break; |
break; |
} |
} |
tempfree(x); |
tempfree(x); |
len += strlen(p); |
|
p += strlen(p); |
p += strlen(p); |
s++; |
s++; |
} |
} |
*p = '\0'; |
*p = '\0'; |
for ( ; a; a = a->nnext) /* evaluate any remaining args */ |
for ( ; a; a = a->nnext) /* evaluate any remaining args */ |
execute(a); |
execute(a); |
return (len); |
return ((int)(p - buf)); |
} |
} |
|
|
Cell *awksprintf(Node **a, int n) /* sprintf(a[0]) */ |
Cell *awksprintf(Node **a, int n) /* sprintf(a[0]) */ |