Fix more functions in util/ack for 64-bit hosts.
authorGeorge Koehler <xkernigh@netscape.net>
Fri, 7 Sep 2012 20:28:10 +0000 (16:28 -0400)
committerNick Downing <nick@ndcode.org>
Wed, 17 Apr 2019 14:20:38 +0000 (00:20 +1000)
This continues the fix from the previous changeset.  We must use
va_list to forward the arguments, because some of the arguments might
be 64-bit pointers.  A pointer does not fit in an int.

util/ack/util.c

index 9fc3632..de2a3b5 100644 (file)
@@ -117,30 +117,38 @@ prns(s) register char *s ; {
 #endif
 
 /* VARARGS1 */
-fuerror(fmt,p1,p2,p3,p4,p5,p6,p7) char *fmt ; {
+void fuerror(const char *fmt, ...) {
        /* Fatal user error */
+       va_list ap;
+       va_start(ap, fmt);
        fprintf(STDOUT,"%s: ",progname) ;
-       fprintf(STDOUT,fmt,p1,p2,p3,p4,p5,p6,p7);
+       vfprintf(STDOUT, fmt, ap);
        fprintf(STDOUT,"\n") ;
        quit(-1) ;
 }
 
 /* VARARGS1 */
-werror(fmt,p1,p2,p3,p4,p5,p6,p7) char *fmt ; {
+void werror(const char *fmt, ...) {
        /* Warning user error, w_flag */
+       va_list ap;
        if ( w_flag ) return ;
+       va_start(ap, fmt);
        fprintf(STDOUT,"%s: warning, ",progname) ;
-       fprintf(STDOUT,fmt,p1,p2,p3,p4,p5,p6,p7);
+       vfprintf(STDOUT, fmt, ap);
        fprintf(STDOUT,"\n") ;
+       va_end(ap);
 }
 
 /* VARARGS1 */
-error(fmt,p1,p2,p3,p4,p5,p6,p7) char *fmt ; {
+void error(const char *fmt, ...) {
        /* User error, it is the callers responsibility to quit */
+       va_list ap;
+       va_start(ap, fmt);
        fprintf(STDOUT,"%s: ",progname) ;
-       fprintf(STDOUT,fmt,p1,p2,p3,p4,p5,p6,p7);
+       vfprintf(STDOUT, fmt, ap);
        fprintf(STDOUT,"\n") ;
        n_error++ ;
+       va_end(ap);
 }
 
 do_flush() {