m4-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Changes to m4/modules/format.c,v


From: Eric Blake
Subject: Changes to m4/modules/format.c,v
Date: Mon, 09 Jul 2007 13:21:57 +0000

CVSROOT:        /sources/m4
Module name:    m4
Changes by:     Eric Blake <ericb>      07/07/09 13:21:57

Index: modules/format.c
===================================================================
RCS file: /sources/m4/m4/modules/format.c,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -b -r1.22 -r1.23
--- modules/format.c    30 May 2007 13:36:59 -0000      1.22
+++ modules/format.c    9 Jul 2007 13:21:57 -0000       1.23
@@ -87,7 +87,7 @@
 
   /* 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 = ARG_STR (argc, argv);
   memset (ok, 0, sizeof ok);
@@ -238,14 +238,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 +274,15 @@
        default:
          abort ();
        }
+      *p++ = c;
+      *p = '\0';
 
       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;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]