use stdarg when compiling with ANSI C compiler
This commit is contained in:
		
							parent
							
								
									7b207deeb7
								
							
						
					
					
						commit
						4c73887050
					
				
					 1 changed files with 249 additions and 21 deletions
				
			
		|  | @ -6,7 +6,11 @@ | |||
| /*	E R R O R   A N D  D I A G N O S T I C   R O U T I N E S	*/ | ||||
| 
 | ||||
| #include	"lint.h" | ||||
| #if __STDC__ | ||||
| #include	<stdarg.h> | ||||
| #else | ||||
| #include	<varargs.h> | ||||
| #endif | ||||
| #include	<system.h> | ||||
| #ifndef	LINT | ||||
| #include	<em.h> | ||||
|  | @ -60,6 +64,218 @@ extern char loptions[]; | |||
| 
 | ||||
| static _error(); | ||||
| 
 | ||||
| #if __STDC__ | ||||
| /*VARARGS*/ | ||||
| error(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(ERROR, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| expr_error(struct expr *expr, char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		if (!(expr->ex_flags & EX_ERROR)) { | ||||
| 			/* to prevent proliferation */ | ||||
| 			_error(ERROR, expr->ex_file, expr->ex_line, fmt, ap); | ||||
| 			expr->ex_flags |= EX_ERROR; | ||||
| 		} | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| lexstrict(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(STRICT, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| strict(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(STRICT, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| expr_strict(struct expr *expr, char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		if (!(expr->ex_flags & EX_ERROR)) { | ||||
| 			/* to prevent proliferation */ | ||||
| 			_error(STRICT, expr->ex_file, expr->ex_line, fmt, ap); | ||||
| 		} | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| #ifdef DEBUG | ||||
| /*VARARGS*/ | ||||
| debug(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(DO_DEBUG, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| #endif /* DEBUG */ | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| warning(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(WARNING, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| expr_warning(struct expr *expr, char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		if (!(expr->ex_flags & EX_ERROR)) { | ||||
| 			/* to prevent proliferation */ | ||||
| 			_error(WARNING, expr->ex_file, expr->ex_line, fmt, ap); | ||||
| 		} | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| #ifdef	LINT | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| def_warning(struct def *def, char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(WARNING, def->df_file, def->df_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| hwarning(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		if (loptions['h']) | ||||
| 			_error(WARNING, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| awarning(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		if (loptions['a']) | ||||
| 			_error(WARNING, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| #endif	/* LINT */ | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| lexerror(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(ERROR, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| lexwarning(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(WARNING, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| crash(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(CRASH, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| 
 | ||||
| 	C_close(); | ||||
| #ifdef	DEBUG | ||||
| 	sys_stop(S_ABORT); | ||||
| #else	/* DEBUG */ | ||||
| 	sys_stop(S_EXIT); | ||||
| #endif	/* DEBUG */ | ||||
| 	/* NOTREACHED */ | ||||
| } | ||||
| 
 | ||||
| /*VARARGS*/ | ||||
| fatal(char *fmt, ...) | ||||
| { | ||||
| 	va_list ap; | ||||
| 
 | ||||
| 	va_start(ap, fmt); | ||||
| 	{ | ||||
| 		_error(FATAL, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| 
 | ||||
| 	if (C_busy()) C_close(); | ||||
| 	sys_stop(S_EXIT); | ||||
| 	/*NOTREACHED*/ | ||||
| } | ||||
| #else | ||||
| /*VARARGS*/ | ||||
| error(va_alist)				/* fmt, args */ | ||||
| 	va_dcl | ||||
|  | @ -68,7 +284,8 @@ error(va_alist)				/* fmt, args */ | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		_error(ERROR, dot.tk_file, dot.tk_line, ap); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		_error(ERROR, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -82,10 +299,11 @@ expr_error(va_alist)			/* expr, fmt, args */ | |||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		register struct expr *expr = va_arg(ap, struct expr *); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 
 | ||||
| 		if (!(expr->ex_flags & EX_ERROR)) { | ||||
| 			/* to prevent proliferation */ | ||||
| 			_error(ERROR, expr->ex_file, expr->ex_line, ap); | ||||
| 			_error(ERROR, expr->ex_file, expr->ex_line, fmt, ap); | ||||
| 			expr->ex_flags |= EX_ERROR; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -100,7 +318,8 @@ lexstrict(va_alist) | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		_error(STRICT, FileName, LineNumber, ap); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		_error(STRICT, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -113,7 +332,8 @@ strict(va_alist) | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		_error(STRICT, dot.tk_file, dot.tk_line, ap); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		_error(STRICT, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -127,10 +347,11 @@ expr_strict(va_alist)			/* expr, fmt, args */ | |||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		struct expr *expr = va_arg(ap, struct expr *); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 
 | ||||
| 		if (!(expr->ex_flags & EX_ERROR)) { | ||||
| 			/* to prevent proliferation */ | ||||
| 			_error(STRICT, expr->ex_file, expr->ex_line, ap); | ||||
| 			_error(STRICT, expr->ex_file, expr->ex_line, fmt, ap); | ||||
| 		} | ||||
| 	} | ||||
| 	va_end(ap); | ||||
|  | @ -145,9 +366,8 @@ debug(va_alist) | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		_error(DO_DEBUG, dot.tk_file, dot.tk_line, ap); | ||||
| 		/* _error(DO_DEBUG, NILEXPR, ap);
 | ||||
| 		*/ | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		_error(DO_DEBUG, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -161,9 +381,8 @@ warning(va_alist) | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		_error(WARNING, dot.tk_file, dot.tk_line, ap); | ||||
| 		/* _error(WARNING, NILEXPR, ap);
 | ||||
| 		*/ | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		_error(WARNING, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -177,10 +396,11 @@ expr_warning(va_alist)			/* expr, fmt, args */ | |||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		struct expr *expr = va_arg(ap, struct expr *); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 
 | ||||
| 		if (!(expr->ex_flags & EX_ERROR)) { | ||||
| 			/* to prevent proliferation */ | ||||
| 			_error(WARNING, expr->ex_file, expr->ex_line, ap); | ||||
| 			_error(WARNING, expr->ex_file, expr->ex_line, fmt, ap); | ||||
| 		} | ||||
| 	} | ||||
| 	va_end(ap); | ||||
|  | @ -197,8 +417,9 @@ def_warning(va_alist)			/* def, fmt, args */ | |||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		register struct def *def = va_arg(ap, struct def *); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 
 | ||||
| 		_error(WARNING, def->df_file, def->df_line, ap); | ||||
| 		_error(WARNING, def->df_file, def->df_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -212,8 +433,9 @@ hwarning(va_alist)			/* fmt, args */ | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		if (loptions['h']) | ||||
| 			_error(WARNING, dot.tk_file, dot.tk_line, ap); | ||||
| 			_error(WARNING, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -226,8 +448,9 @@ awarning(va_alist)			/* fmt, args */ | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		if (loptions['a']) | ||||
| 			_error(WARNING, dot.tk_file, dot.tk_line, ap); | ||||
| 			_error(WARNING, dot.tk_file, dot.tk_line, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -242,7 +465,8 @@ lexerror(va_alist)			/* fmt, args */ | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		_error(ERROR, FileName, LineNumber, ap); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		_error(ERROR, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -255,7 +479,8 @@ lexwarning(va_alist)			/* fmt, args */ | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		_error(WARNING, FileName, LineNumber, ap); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		_error(WARNING, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| } | ||||
|  | @ -268,7 +493,8 @@ crash(va_alist)				/* fmt, args */ | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		_error(CRASH, FileName, LineNumber, ap); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		_error(CRASH, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| 
 | ||||
|  | @ -289,7 +515,8 @@ fatal(va_alist)				/* fmt, args */ | |||
| 
 | ||||
| 	va_start(ap); | ||||
| 	{ | ||||
| 		_error(FATAL, FileName, LineNumber, ap); | ||||
| 		char *fmt = va_arg(ap, char *); | ||||
| 		_error(FATAL, FileName, LineNumber, fmt, ap); | ||||
| 	} | ||||
| 	va_end(ap); | ||||
| 
 | ||||
|  | @ -297,16 +524,17 @@ fatal(va_alist)				/* fmt, args */ | |||
| 	sys_stop(S_EXIT); | ||||
| 	/*NOTREACHED*/ | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
| static | ||||
| _error(class, fn, ln, ap) | ||||
| _error(class, fn, ln, fmt, ap) | ||||
| 	int class; | ||||
| 	char *fn; | ||||
| 	unsigned int ln; | ||||
| 	char *fmt; | ||||
| 	va_list ap; | ||||
| { | ||||
| 	char *remark; | ||||
| 	char *fmt = va_arg(ap, char *); | ||||
| 	 | ||||
| 	/* check visibility of message */ | ||||
| 	switch (class)	{ | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue