Module Name: src Committed By: rillig Date: Fri Jan 19 19:23:35 UTC 2024
Modified Files: src/tests/usr.bin/xlint/lint1: lex_char.c lex_wide_char.c msg_079.c src/usr.bin/xlint/lint1: lex.c Log Message: lint: allow '\e' only in GCC mode To generate a diff of this commit: cvs rdiff -u -r1.7 -r1.8 src/tests/usr.bin/xlint/lint1/lex_char.c cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/lex_wide_char.c \ src/tests/usr.bin/xlint/lint1/msg_079.c cvs rdiff -u -r1.198 -r1.199 src/usr.bin/xlint/lint1/lex.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/lex_char.c diff -u src/tests/usr.bin/xlint/lint1/lex_char.c:1.7 src/tests/usr.bin/xlint/lint1/lex_char.c:1.8 --- src/tests/usr.bin/xlint/lint1/lex_char.c:1.7 Tue Mar 28 14:44:34 2023 +++ src/tests/usr.bin/xlint/lint1/lex_char.c Fri Jan 19 19:23:34 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_char.c,v 1.7 2023/03/28 14:44:34 rillig Exp $ */ +/* $NetBSD: lex_char.c,v 1.8 2024/01/19 19:23:34 rillig Exp $ */ # 3 "lex_char.c" /* @@ -27,9 +27,11 @@ test(void) sink('ä'); /* GCC extension */ - /* expect+1: warning: dubious escape \e [79] */ sink('\e'); + /* expect+1: warning: dubious escape \y [79] */ + sink('\y'); + /* since C99 */ sink('\x12'); Index: src/tests/usr.bin/xlint/lint1/lex_wide_char.c diff -u src/tests/usr.bin/xlint/lint1/lex_wide_char.c:1.4 src/tests/usr.bin/xlint/lint1/lex_wide_char.c:1.5 --- src/tests/usr.bin/xlint/lint1/lex_wide_char.c:1.4 Tue Mar 28 14:44:34 2023 +++ src/tests/usr.bin/xlint/lint1/lex_wide_char.c Fri Jan 19 19:23:34 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: lex_wide_char.c,v 1.4 2023/03/28 14:44:34 rillig Exp $ */ +/* $NetBSD: lex_wide_char.c,v 1.5 2024/01/19 19:23:34 rillig Exp $ */ # 3 "lex_wide_char.c" /* @@ -26,9 +26,11 @@ test(void) sink(L'ä'); /* GCC extension */ - /* expect+1: warning: dubious escape \e [79] */ sink(L'\e'); + /* expect+1: warning: dubious escape \y [79] */ + sink(L'\y'); + /* since C99 */ sink(L'\x12'); Index: src/tests/usr.bin/xlint/lint1/msg_079.c diff -u src/tests/usr.bin/xlint/lint1/msg_079.c:1.4 src/tests/usr.bin/xlint/lint1/msg_079.c:1.5 --- src/tests/usr.bin/xlint/lint1/msg_079.c:1.4 Tue Mar 28 14:44:34 2023 +++ src/tests/usr.bin/xlint/lint1/msg_079.c Fri Jan 19 19:23:34 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: msg_079.c,v 1.4 2023/03/28 14:44:34 rillig Exp $ */ +/* $NetBSD: msg_079.c,v 1.5 2024/01/19 19:23:34 rillig Exp $ */ # 3 "msg_079.c" // Test for message: dubious escape \%c [79] @@ -10,7 +10,7 @@ int my_printf(const char *, ...); void print_color(_Bool red, _Bool green, _Bool blue) { - /* expect+1: warning: dubious escape \e [79] */ - my_printf("\e[%dm", + /* expect+1: warning: dubious escape \y [79] */ + my_printf("\e[%dm\y", 30 + (red ? 1 : 0) + (green ? 2 : 0) + (blue ? 4 : 0)); } Index: src/usr.bin/xlint/lint1/lex.c diff -u src/usr.bin/xlint/lint1/lex.c:1.198 src/usr.bin/xlint/lint1/lex.c:1.199 --- src/usr.bin/xlint/lint1/lex.c:1.198 Fri Jan 19 18:23:13 2024 +++ src/usr.bin/xlint/lint1/lex.c Fri Jan 19 19:23:34 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: lex.c,v 1.198 2024/01/19 18:23:13 christos Exp $ */ +/* $NetBSD: lex.c,v 1.199 2024/01/19 19:23:34 rillig Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -38,7 +38,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: lex.c,v 1.198 2024/01/19 18:23:13 christos Exp $"); +__RCSID("$NetBSD: lex.c,v 1.199 2024/01/19 19:23:34 rillig Exp $"); #endif #include <ctype.h> @@ -791,7 +791,11 @@ read_escaped_backslash(int delim) return '\a'; case 'b': return '\b'; - case 'e': /* Not in the C standard yet, compilers recognize it */ + case 'e': + if (!allow_gcc) + break; + /* Not in the C standard yet, compilers recognize it */ + /* LINTED 79 */ return '\e'; case 'f': return '\f'; @@ -820,15 +824,15 @@ read_escaped_backslash(int delim) case EOF: return -2; default: - if (isprint(c)) { - /* dubious escape \%c */ - warning(79, c); - } else { - /* dubious escape \%o */ - warning(80, c); - } - return c; + break; } + if (isprint(c)) + /* dubious escape \%c */ + warning(79, c); + else + /* dubious escape \%o */ + warning(80, c); + return c; } /*