Module Name:    src
Committed By:   rillig
Date:           Fri Jul  1 21:25:39 UTC 2022

Modified Files:
        src/usr.bin/xlint/lint1: err.c externs1.h lint1.h main1.c

Log Message:
lint: move error handling code from main1.c to err.c

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.177 -r1.178 src/usr.bin/xlint/lint1/err.c
cvs rdiff -u -r1.162 -r1.163 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.154 -r1.155 src/usr.bin/xlint/lint1/lint1.h
cvs rdiff -u -r1.63 -r1.64 src/usr.bin/xlint/lint1/main1.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/xlint/lint1/err.c
diff -u src/usr.bin/xlint/lint1/err.c:1.177 src/usr.bin/xlint/lint1/err.c:1.178
--- src/usr.bin/xlint/lint1/err.c:1.177	Fri Jul  1 20:53:13 2022
+++ src/usr.bin/xlint/lint1/err.c	Fri Jul  1 21:25:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: err.c,v 1.177 2022/07/01 20:53:13 rillig Exp $	*/
+/*	$NetBSD: err.c,v 1.178 2022/07/01 21:25:39 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,11 +37,14 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: err.c,v 1.177 2022/07/01 20:53:13 rillig Exp $");
+__RCSID("$NetBSD: err.c,v 1.178 2022/07/01 21:25:39 rillig Exp $");
 #endif
 
+#include <errno.h>
+#include <limits.h>
 #include <stdarg.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "lint1.h"
 
@@ -264,7 +267,7 @@ static const char *const msgs[] = {
 	"break outside loop or switch",				      /* 208 */
 	"continue outside loop",				      /* 209 */
 	"enum type mismatch between '%s' and '%s' in initialization", /* 210 */
-	"function has return type '%s' but returns '%s'",		      /* 211 */
+	"function has return type '%s' but returns '%s'",	      /* 211 */
 	"cannot return incomplete type",			      /* 212 */
 	"void function '%s' cannot return value",		      /* 213 */
 	"function '%s' expects to return value",		      /* 214 */
@@ -405,12 +408,46 @@ static const char *const msgs[] = {
 	"non type argument to alignof is a GCC extension",	      /* 349 */
 };
 
+#define	ERR_SETSIZE	1024
+#define __NERRBITS (sizeof(unsigned int))
+
+typedef	struct err_set {
+	unsigned int	errs_bits[(ERR_SETSIZE + __NERRBITS-1) / __NERRBITS];
+} err_set;
+
+#define	ERR_SET(n, p)	\
+	((p)->errs_bits[(n)/__NERRBITS] |= (1 << ((n) % __NERRBITS)))
+#define	ERR_CLR(n, p)	\
+	((p)->errs_bits[(n)/__NERRBITS] &= ~(1 << ((n) % __NERRBITS)))
+#define	ERR_ISSET(n, p)	\
+	(((p)->errs_bits[(n)/__NERRBITS] & (1 << ((n) % __NERRBITS))) != 0)
+#define	ERR_ZERO(p)	(void)memset((p), 0, sizeof(*(p)))
+
+static err_set	msgset;
+
 static struct include_level {
 	const char *filename;
 	int lineno;
 	struct include_level *by;
 } *includes;
 
+void
+suppress_messages(char *ids)
+{
+	char *ptr, *end;
+	long id;
+
+	for (ptr = strtok(ids, ","); ptr != NULL; ptr = strtok(NULL, ",")) {
+		errno = 0;
+		id = strtol(ptr, &end, 0);
+		if ((id == TARG_LONG_MIN || id == TARG_LONG_MAX) &&
+		    errno == ERANGE)
+			err(1, "invalid error message id '%s'", ptr);
+		if (*end != '\0' || ptr == end || id < 0 || id >= ERR_SETSIZE)
+			errx(1, "invalid error message id '%s'", ptr);
+		ERR_SET(id, &msgset);
+	}
+}
 
 void
 update_location(const char *filename, int lineno, bool is_begin, bool is_end)

Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.162 src/usr.bin/xlint/lint1/externs1.h:1.163
--- src/usr.bin/xlint/lint1/externs1.h:1.162	Wed Jun 15 18:29:21 2022
+++ src/usr.bin/xlint/lint1/externs1.h	Fri Jul  1 21:25:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: externs1.h,v 1.162 2022/06/15 18:29:21 rillig Exp $	*/
+/*	$NetBSD: externs1.h,v 1.163 2022/07/01 21:25:39 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -168,6 +168,7 @@ extern	void	internal_error(const char *,
 extern	void	assert_failed(const char *, int, const char *, const char *)
 		__attribute__((__noreturn__));
 extern	void	update_location(const char *, int, bool, bool);
+extern	void	suppress_messages(char *);
 
 /*
  * decl.c

Index: src/usr.bin/xlint/lint1/lint1.h
diff -u src/usr.bin/xlint/lint1/lint1.h:1.154 src/usr.bin/xlint/lint1/lint1.h:1.155
--- src/usr.bin/xlint/lint1/lint1.h:1.154	Thu May 26 13:40:49 2022
+++ src/usr.bin/xlint/lint1/lint1.h	Fri Jul  1 21:25:39 2022
@@ -1,4 +1,4 @@
-/* $NetBSD: lint1.h,v 1.154 2022/05/26 13:40:49 rillig Exp $ */
+/* $NetBSD: lint1.h,v 1.155 2022/07/01 21:25:39 rillig Exp $ */
 
 /*
  * Copyright (c) 1996 Christopher G. Demetriou.  All Rights Reserved.
@@ -442,21 +442,6 @@ typedef struct {
 
 #include "externs1.h"
 
-#define	ERR_SETSIZE	1024
-#define __NERRBITS (sizeof(unsigned int))
-
-typedef	struct err_set {
-	unsigned int	errs_bits[(ERR_SETSIZE + __NERRBITS-1) / __NERRBITS];
-} err_set;
-
-#define	ERR_SET(n, p)	\
-	((p)->errs_bits[(n)/__NERRBITS] |= (1 << ((n) % __NERRBITS)))
-#define	ERR_CLR(n, p)	\
-	((p)->errs_bits[(n)/__NERRBITS] &= ~(1 << ((n) % __NERRBITS)))
-#define	ERR_ISSET(n, p)	\
-	(((p)->errs_bits[(n)/__NERRBITS] & (1 << ((n) % __NERRBITS))) != 0)
-#define	ERR_ZERO(p)	(void)memset((p), 0, sizeof(*(p)))
-
 #define INTERNAL_ERROR(fmt, args...) \
 	internal_error(__FILE__, __LINE__, fmt, ##args)
 
@@ -466,9 +451,6 @@ typedef	struct err_set {
 			assert_failed(__FILE__, __LINE__, __func__, #cond); \
 	} while (false)
 
-extern err_set	msgset;
-
-
 #ifdef DEBUG
 #  include "err-msgs.h"
 

Index: src/usr.bin/xlint/lint1/main1.c
diff -u src/usr.bin/xlint/lint1/main1.c:1.63 src/usr.bin/xlint/lint1/main1.c:1.64
--- src/usr.bin/xlint/lint1/main1.c:1.63	Mon May 30 15:13:25 2022
+++ src/usr.bin/xlint/lint1/main1.c	Fri Jul  1 21:25:39 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: main1.c,v 1.63 2022/05/30 15:13:25 rillig Exp $	*/
+/*	$NetBSD: main1.c,v 1.64 2022/07/01 21:25:39 rillig Exp $	*/
 
 /*
  * Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,12 +37,10 @@
 
 #include <sys/cdefs.h>
 #if defined(__RCSID)
-__RCSID("$NetBSD: main1.c,v 1.63 2022/05/30 15:13:25 rillig Exp $");
+__RCSID("$NetBSD: main1.c,v 1.64 2022/07/01 21:25:39 rillig Exp $");
 #endif
 
 #include <sys/types.h>
-#include <errno.h>
-#include <limits.h>
 #include <signal.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -120,8 +118,6 @@ bool	allow_c99;
 bool	allow_c11;
 bool	allow_gcc;
 
-err_set	msgset;
-
 sig_atomic_t fpe;
 
 static	void	usage(void);
@@ -174,24 +170,6 @@ sigfpe(int s)
 	fpe = 1;
 }
 
-static void
-suppress_messages(char *ids)
-{
-	char *ptr, *end;
-	long id;
-
-	for (ptr = strtok(ids, ","); ptr != NULL; ptr = strtok(NULL, ",")) {
-		errno = 0;
-		id = strtol(ptr, &end, 0);
-		if ((id == TARG_LONG_MIN || id == TARG_LONG_MAX) &&
-		    errno == ERANGE)
-			err(1, "invalid error message id '%s'", ptr);
-		if (*end != '\0' || ptr == end || id < 0 || id >= ERR_SETSIZE)
-			errx(1, "invalid error message id '%s'", ptr);
-		ERR_SET(id, &msgset);
-	}
-}
-
 int
 main(int argc, char *argv[])
 {
@@ -199,7 +177,6 @@ main(int argc, char *argv[])
 
 	setprogname(argv[0]);
 
-	ERR_ZERO(&msgset);
 	while ((c = getopt(argc, argv, "abceghmprstuvwyzA:FPR:STX:")) != -1) {
 		switch (c) {
 		case 'a':	aflag++;	break;

Reply via email to