[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Changes to m4/src/Attic/format.c,v [branch-1_4]
From: |
Eric Blake |
Subject: |
Changes to m4/src/Attic/format.c,v [branch-1_4] |
Date: |
Mon, 09 Jul 2007 12:54:29 +0000 |
CVSROOT: /sources/m4
Module name: m4
Branch: branch-1_4
Changes by: Eric Blake <ericb> 07/07/09 12:54:27
Index: src/format.c
===================================================================
RCS file: /sources/m4/m4/src/Attic/format.c,v
retrieving revision 1.1.1.1.2.7
retrieving revision 1.1.1.1.2.8
diff -u -b -r1.1.1.1.2.7 -r1.1.1.1.2.8
--- src/format.c 29 May 2007 13:19:47 -0000 1.1.1.1.2.7
+++ src/format.c 9 Jul 2007 12:54:27 -0000 1.1.1.1.2.8
@@ -85,9 +85,9 @@
/* Buffer and stuff. */
char *str; /* malloc'd buffer of formatted text */
- enum {INT, LONG, DOUBLE, STR} datatype;
+ enum {CHAR, INT, LONG, DOUBLE, STR} datatype;
- f = fmt = (const char *) ARG_STR (argc, argv);
+ f = fmt = ARG_STR (argc, argv);
memset (ok, 0, sizeof ok);
for (;;)
{
@@ -176,13 +176,11 @@
fmt++;
}
else
- {
while (isdigit (to_uchar (*fmt)))
{
width = 10 * width + *fmt - '0';
fmt++;
}
- }
/* Maximum precision; an explicit negative precision is the same
as not giving the precision. A lone '.' is a precision of 0. */
@@ -238,14 +236,13 @@
fmt--;
continue;
}
- *p++ = c;
- *p = '\0';
/* Specifiers. We don't yet recognize C, S, n, or p. */
switch (c)
{
case 'c':
- datatype = INT;
+ datatype = CHAR;
+ p -= 2; /* %.*c is undefined, so undo the '.*'. */
break;
case 's':
@@ -275,9 +272,15 @@
default:
abort ();
}
+ *p++ = c;
+ *p = '\0';
- switch(datatype)
+ switch (datatype)
{
+ case CHAR:
+ str = xasprintf (fstart, width, ARG_INT(argc, argv));
+ break;
+
case INT:
str = xasprintf (fstart, width, prec, ARG_INT(argc, argv));
break;
- Changes to m4/src/Attic/format.c,v [branch-1_4],
Eric Blake <=