Module Name: src
Committed By: rillig
Date: Wed Apr 14 20:06:40 UTC 2021
Modified Files:
src/tests/usr.bin/xlint/lint1: msg_343.c
src/usr.bin/xlint/lint1: err.c externs1.h main1.c
src/usr.bin/xlint/xlint: lint.1 xlint.c
Log Message:
lint: add option to accept C11 features
The list of available letters for the command line options gets shorter
and shorter. Most of the interesting letters are already used for some
warning categories. Curiously, -A, -W and -E were all still available.
The option -A nicely matches the intention of the option, which is to
allow a certain set of language features. To keep the option available
for further extensions, define -Ac11 as the currently only valid option
of that kind. This allows straight-forward extension for C17 and future
language standards, as well as independent feature-sets. The options -W
and -E may someday complement the -A option, using the allow/warn/error
categories.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 src/tests/usr.bin/xlint/lint1/msg_343.c
cvs rdiff -u -r1.109 -r1.110 src/usr.bin/xlint/lint1/err.c
cvs rdiff -u -r1.104 -r1.105 src/usr.bin/xlint/lint1/externs1.h
cvs rdiff -u -r1.42 -r1.43 src/usr.bin/xlint/lint1/main1.c
cvs rdiff -u -r1.42 -r1.43 src/usr.bin/xlint/xlint/lint.1
cvs rdiff -u -r1.59 -r1.60 src/usr.bin/xlint/xlint/xlint.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/tests/usr.bin/xlint/lint1/msg_343.c
diff -u src/tests/usr.bin/xlint/lint1/msg_343.c:1.2 src/tests/usr.bin/xlint/lint1/msg_343.c:1.3
--- src/tests/usr.bin/xlint/lint1/msg_343.c:1.2 Wed Apr 14 18:35:40 2021
+++ src/tests/usr.bin/xlint/lint1/msg_343.c Wed Apr 14 20:06:40 2021
@@ -1,9 +1,9 @@
-/* $NetBSD: msg_343.c,v 1.2 2021/04/14 18:35:40 rillig Exp $ */
+/* $NetBSD: msg_343.c,v 1.3 2021/04/14 20:06:40 rillig Exp $ */
# 3 "msg_343.c"
/* Test for message: static array size is a C11 extension [343] */
-/* lint1-flags: -sw */
+/* lint1-flags: -gSw */
void takes_int_pointer(int []);
void takes_int_pointer_with_ignored_size(int [3]);
Index: src/usr.bin/xlint/lint1/err.c
diff -u src/usr.bin/xlint/lint1/err.c:1.109 src/usr.bin/xlint/lint1/err.c:1.110
--- src/usr.bin/xlint/lint1/err.c:1.109 Wed Apr 14 18:38:06 2021
+++ src/usr.bin/xlint/lint1/err.c Wed Apr 14 20:06:40 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: err.c,v 1.109 2021/04/14 18:38:06 rillig Exp $ */
+/* $NetBSD: err.c,v 1.110 2021/04/14 20:06:40 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: err.c,v 1.109 2021/04/14 18:38:06 rillig Exp $");
+__RCSID("$NetBSD: err.c,v 1.110 2021/04/14 20:06:40 rillig Exp $");
#endif
#include <sys/types.h>
@@ -612,19 +612,15 @@ void
va_end(ap);
}
-/* TODO: add a command line option for allowing C99 but not C11. */
void
(c11ism)(int n, ...)
{
va_list ap;
- bool extensions_ok = Sflag || gflag;
+ if (c11flag)
+ return;
va_start(ap, n);
- if (sflag && !extensions_ok) {
- verror(n, ap);
- } else if (sflag || !extensions_ok) {
- vwarning(n, ap);
- }
+ verror(n, ap);
va_end(ap);
}
Index: src/usr.bin/xlint/lint1/externs1.h
diff -u src/usr.bin/xlint/lint1/externs1.h:1.104 src/usr.bin/xlint/lint1/externs1.h:1.105
--- src/usr.bin/xlint/lint1/externs1.h:1.104 Wed Apr 14 18:35:40 2021
+++ src/usr.bin/xlint/lint1/externs1.h Wed Apr 14 20:06:40 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: externs1.h,v 1.104 2021/04/14 18:35:40 rillig Exp $ */
+/* $NetBSD: externs1.h,v 1.105 2021/04/14 20:06:40 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,6 +37,7 @@
extern int aflag;
extern bool bflag;
extern bool cflag;
+extern bool c11flag;
extern bool dflag;
extern bool eflag;
extern bool Fflag;
Index: src/usr.bin/xlint/lint1/main1.c
diff -u src/usr.bin/xlint/lint1/main1.c:1.42 src/usr.bin/xlint/lint1/main1.c:1.43
--- src/usr.bin/xlint/lint1/main1.c:1.42 Fri Apr 2 12:16:50 2021
+++ src/usr.bin/xlint/lint1/main1.c Wed Apr 14 20:06:40 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: main1.c,v 1.42 2021/04/02 12:16:50 rillig Exp $ */
+/* $NetBSD: main1.c,v 1.43 2021/04/14 20:06:40 rillig Exp $ */
/*
* Copyright (c) 1994, 1995 Jochen Pohl
@@ -37,7 +37,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: main1.c,v 1.42 2021/04/02 12:16:50 rillig Exp $");
+__RCSID("$NetBSD: main1.c,v 1.43 2021/04/14 20:06:40 rillig Exp $");
#endif
#include <sys/types.h>
@@ -68,6 +68,9 @@ bool bflag;
/* Print warnings for pointer casts. */
bool cflag;
+/* Allow features from C11, C99 and C90. */
+bool c11flag;
+
/* Print various debug information. */
bool dflag;
@@ -178,7 +181,7 @@ main(int argc, char *argv[])
setprogname(argv[0]);
ERR_ZERO(&msgset);
- while ((c = getopt(argc, argv, "abcdeghmprstuvwyzFPR:STX:")) != -1) {
+ while ((c = getopt(argc, argv, "abcdeghmprstuvwyzA:FPR:STX:")) != -1) {
switch (c) {
case 'a': aflag++; break;
case 'b': bflag = true; break;
@@ -201,6 +204,15 @@ main(int argc, char *argv[])
case 'y': yflag = true; break;
case 'z': zflag = false; break;
+ case 'A':
+ if (strcmp(optarg, "c11") == 0) {
+ c11flag = true;
+ Sflag = true;
+ sflag = true;
+ } else
+ usage();
+ break;
+
case 'm':
msglist();
return 0;
@@ -284,7 +296,8 @@ static void
usage(void)
{
(void)fprintf(stderr,
- "Usage: %s [-abcdeghmprstuvwyzFST] [-X <id>[,<id>]... src dest\n",
+ "usage: %s [-abcdeghmprstuvwyzFST] [-Ac11] [-X <id>[,<id>]... "
+ "src dest\n",
getprogname());
exit(1);
}
Index: src/usr.bin/xlint/xlint/lint.1
diff -u src/usr.bin/xlint/xlint/lint.1:1.42 src/usr.bin/xlint/xlint/lint.1:1.43
--- src/usr.bin/xlint/xlint/lint.1:1.42 Tue Jan 12 20:42:01 2021
+++ src/usr.bin/xlint/xlint/lint.1 Wed Apr 14 20:06:40 2021
@@ -1,4 +1,4 @@
-.\" $NetBSD: lint.1,v 1.42 2021/01/12 20:42:01 rillig Exp $
+.\" $NetBSD: lint.1,v 1.43 2021/04/14 20:06:40 rillig Exp $
.\"
.\" Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
.\" Copyright (c) 1994, 1995 Jochen Pohl
@@ -30,7 +30,7 @@
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd Jan 12, 2021
+.Dd Apr 14, 2021
.Dt LINT 1
.Os
.Sh NAME
@@ -51,6 +51,7 @@
.Op Fl o Ar outputfile
.Op Fl U Ar name
.Op Fl X Ar id Ns Op ,id ...
+.Op Fl Ac11
.Op Fl Z Ar cpparg
.Ar
.Nm lint
@@ -184,6 +185,8 @@ flag must also be specified to provide a
.Pp
.Sy Options
.Bl -tag -width XoXoutputfileXXX
+.It Fl Ac11
+Allow features from C11, C99 and C90.
.It Fl a
Report assignments of
.Sy long
Index: src/usr.bin/xlint/xlint/xlint.c
diff -u src/usr.bin/xlint/xlint/xlint.c:1.59 src/usr.bin/xlint/xlint/xlint.c:1.60
--- src/usr.bin/xlint/xlint/xlint.c:1.59 Wed Apr 14 19:25:48 2021
+++ src/usr.bin/xlint/xlint/xlint.c Wed Apr 14 20:06:40 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: xlint.c,v 1.59 2021/04/14 19:25:48 rillig Exp $ */
+/* $NetBSD: xlint.c,v 1.60 2021/04/14 20:06:40 rillig Exp $ */
/*
* Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved.
@@ -38,7 +38,7 @@
#include <sys/cdefs.h>
#if defined(__RCSID) && !defined(lint)
-__RCSID("$NetBSD: xlint.c,v 1.59 2021/04/14 19:25:48 rillig Exp $");
+__RCSID("$NetBSD: xlint.c,v 1.60 2021/04/14 20:06:40 rillig Exp $");
#endif
#include <sys/param.h>
@@ -297,7 +297,7 @@ usage(void)
"usage: %s [-abceghprvwxzHFST] [-s|-t] [-i|-nu]\n"
"%*s [-Dname[=def]] [-Uname] [-Idirectory] [-Z <cpparg>]\n"
"%*s [-Ldirectory] [-llibrary] [-ooutputfile]\n"
- "%*s [-X <id>[,<id>]...] file...\n",
+ "%*s [-X <id>[,<id>]...] [-Ac11] file...\n",
name, indent, "", indent, "", indent, "");
(void)fprintf(stderr,
" %s [-abceghprvwzHFST] [-s|-t] -Clibrary\n"
@@ -375,7 +375,7 @@ main(int argc, char *argv[])
(void)signal(SIGQUIT, terminate);
(void)signal(SIGTERM, terminate);
while ((c = getopt(argc, argv,
- "abcd:eghil:no:prstuvwxzB:C:D:FHI:L:M:PR:STU:VX:Z:")) != -1) {
+ "abcd:eghil:no:prstuvwxzA:B:C:D:FHI:L:M:PR:STU:VX:Z:")) != -1) {
switch (c) {
case 'a':
@@ -391,6 +391,11 @@ main(int argc, char *argv[])
appcstrg(&l1flags, flgbuf);
break;
+ case 'A':
+ appcstrg(&l1flags, "-A");
+ appcstrg(&l1flags, optarg);
+ break;
+
case 'F':
Fflag = true;
/* FALLTHROUGH */