]> granicus.if.org Git - flex/commitdiff
Allow error reporting routines to accept varying number of arguments in modern style
authorMariusz Pluciński <mplucinski@mplucinski.com>
Fri, 25 Jul 2014 13:22:01 +0000 (15:22 +0200)
committerWill Estes <westes575@gmail.com>
Fri, 25 Jul 2014 13:48:16 +0000 (09:48 -0400)
src/flexdef.h
src/misc.c
src/scanflags.c

index 693f9f9fbe92f8e8863656bc2a046ab605669267..15b344d35e2bd277ef871c13db19e7303b9f5ff5 100644 (file)
@@ -904,13 +904,13 @@ extern void flexfatal PROTO ((const char *));
 extern int htoi PROTO ((Char[]));
 
 /* Report an error message formatted with one integer argument. */
-extern void lerrif PROTO ((const char *, int));
+extern void lerrif PROTO ((const char *, ...));
 
 /* Report an error message formatted with one string argument. */
-extern void lerrsf PROTO ((const char *, const char *));
+extern void lerrsf PROTO ((const char *, ...));
 
 /* Like lerrsf, but also exit after displaying message. */
-extern void lerrsf_fatal PROTO ((const char *, const char *));
+extern void lerrsf_fatal PROTO ((const char *, ...));
 
 /* Spit out a "#line" statement. */
 extern void line_directive_out PROTO ((FILE *, int));
index 0dd8f5087430a0c8860df1b1d161cdc7cc3983ca..0632d3e28d9f75f73a2d7945ce5ed0bb5810bf31 100644 (file)
@@ -385,25 +385,27 @@ int htoi (str)
 
 /* lerrif - report an error message formatted with one integer argument */
 
-void lerrif (msg, arg)
-     const char *msg;
-     int arg;
-{
+void lerrif (const char *msg, ...) {
        char    errmsg[MAXLINE];
+       va_list args;
 
-       snprintf (errmsg, sizeof(errmsg), msg, arg);
+       va_start(args, msg);
+       vsnprintf (errmsg, sizeof(errmsg), msg, args);
+       va_end(args);
        flexerror (errmsg);
 }
 
 
 /* lerrsf - report an error message formatted with one string argument */
 
-void lerrsf (msg, arg)
-       const char *msg, arg[];
+void lerrsf (const char *msg, ...)
 {
        char    errmsg[MAXLINE];
+       va_list args;
 
-       snprintf (errmsg, sizeof(errmsg)-1, msg, arg);
+       va_start(args, msg);
+       vsnprintf (errmsg, sizeof(errmsg)-1, msg, args);
+       va_end(args);
        errmsg[sizeof(errmsg)-1] = 0; /* ensure NULL termination */
        flexerror (errmsg);
 }
@@ -411,12 +413,14 @@ void lerrsf (msg, arg)
 
 /* lerrsf_fatal - as lerrsf, but call flexfatal */
 
-void lerrsf_fatal (msg, arg)
-       const char *msg, arg[];
+void lerrsf_fatal (const char *msg, ...)
 {
        char    errmsg[MAXLINE];
+       va_list args;
+       va_start(args, msg);
 
-       snprintf (errmsg, sizeof(errmsg)-1, msg, arg);
+       vsnprintf (errmsg, sizeof(errmsg)-1, msg, args);
+       va_end(args);
        errmsg[sizeof(errmsg)-1] = 0; /* ensure NULL termination */
        flexfatal (errmsg);
 }
index f75aa827de145c0d07c827c31dc6c450ba0c328b..c61d47fc93a25b7d53a67a7427e89ef693cb8b4f 100644 (file)
@@ -61,8 +61,7 @@ sf_init (void)
     assert(_sf_stk == NULL);
     _sf_stk = (scanflags_t*) flex_alloc ( sizeof(scanflags_t) * (_sf_max = 32));
     if (!_sf_stk)
-        lerrsf_fatal(_("Unable to allocate %ld of stack"),
-            (long)sizeof(scanflags_t));
+        lerrsf_fatal(_("Unable to allocate %ld of stack"), sizeof(scanflags_t));
     _sf_stk[_sf_top_ix] = 0;
 }