Replace fake-varargs, which doesn't work on 64-bit machines, with real varargs.

This commit is contained in:
David Given 2018-06-22 22:29:52 +02:00
parent c0276416d8
commit a0c6fea32c
2 changed files with 21 additions and 9 deletions

View file

@ -256,3 +256,6 @@ struct proctab {
cons_t pr_off; /* distance from pb */ cons_t pr_off; /* distance from pb */
cons_t pr_loc; /* number of bytes locals */ cons_t pr_loc; /* number of bytes locals */
}; };
extern void error(const char* string1, ...);
extern void werror(const char* string1, ...);

View file

@ -4,9 +4,10 @@
* *
*/ */
#include "ass00.h" #include "ass00.h"
#include "assex.h" #include "assex.h"
#include <em_path.h> #include <em_path.h>
#include <stdarg.h>
#ifndef NORCSID #ifndef NORCSID
static char rcs_id[] = "$Id$" ; static char rcs_id[] = "$Id$" ;
@ -29,7 +30,7 @@ zero(area,length) char *area; unsigned length ; {
} }
/* VARARGS1 */ /* VARARGS1 */
static void pr_error(string1,a1,a2,a3,a4) char *string1 ; { static void pr_error(const char* string1, va_list ap) {
/* /*
* diagnostic output * diagnostic output
*/ */
@ -44,20 +45,28 @@ static void pr_error(string1,a1,a2,a3,a4) char *string1 ; {
fprintf(stderr,"proc %s, ",pstate.s_curpro->p_name); fprintf(stderr,"proc %s, ",pstate.s_curpro->p_name);
} }
fprintf(stderr,"line %d: ",line_num); fprintf(stderr,"line %d: ",line_num);
fprintf(stderr,string1,a1,a2,a3,a4); vfprintf(stderr,string1,ap);
fprintf(stderr,"\n"); fprintf(stderr,"\n");
} }
/* VARARGS1 */ /* VARARGS1 */
void error(string1,a1,a2,a3,a4) char *string1 ; { void error(const char* string1, ...)
pr_error(string1,a1,a2,a3,a4) ; {
va_list ap;
va_start(ap, string1);
pr_error(string1, ap);
va_end(ap);
nerrors++ ; nerrors++ ;
} }
/* VARARGS1 */ /* VARARGS1 */
void werror(string1,a1,a2,a3,a4) char *string1 ; { void werror(const char* string1, ...) {
va_list ap;
if ( wflag ) return ; if ( wflag ) return ;
pr_error(string1,a1,a2,a3,a4) ;
va_start(ap, string1);
pr_error(string1, ap);
va_end(ap);
} }
fatal(s) char *s; { fatal(s) char *s; {