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;
 }
 
 /*

Reply via email to