Module Name:    src
Committed By:   rillig
Date:           Sat Jan 21 09:42:12 UTC 2023

Modified Files:
        src/usr.bin/xlint/lint1: lex.c

Log Message:
lint: eliminate forward declaration for get_escaped_char

No functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.137 -r1.138 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/usr.bin/xlint/lint1/lex.c
diff -u src/usr.bin/xlint/lint1/lex.c:1.137 src/usr.bin/xlint/lint1/lex.c:1.138
--- src/usr.bin/xlint/lint1/lex.c:1.137	Sat Jan 21 09:16:33 2023
+++ src/usr.bin/xlint/lint1/lex.c	Sat Jan 21 09:42:12 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: lex.c,v 1.137 2023/01/21 09:16:33 rillig Exp $ */
+/* $NetBSD: lex.c,v 1.138 2023/01/21 09:42:12 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.137 2023/01/21 09:16:33 rillig Exp $");
+__RCSID("$NetBSD: lex.c,v 1.138 2023/01/21 09:42:12 rillig Exp $");
 #endif
 
 #include <ctype.h>
@@ -183,9 +183,6 @@ static	sym_t	*symtab[HSHSIZ1];
 symt_t	symtyp;
 
 
-static	int	get_escaped_char(int);
-
-
 static unsigned int
 hash(const char *s)
 {
@@ -848,7 +845,7 @@ read_escaped_backslash(int delim)
 	case 'x':
 		return read_escaped_hex(c);
 	case '\n':
-		return get_escaped_char(delim);
+		return -3;
 	case EOF:
 		return -2;
 	default:
@@ -863,6 +860,51 @@ read_escaped_backslash(int delim)
 	}
 }
 
+/*
+ * Read a character which is part of a character constant or of a string
+ * and handle escapes.
+ *
+ * The argument is the character which delimits the character constant or
+ * string.
+ *
+ * Returns -1 if the end of the character constant or string is reached,
+ * -2 if the EOF is reached, and the character otherwise.
+ */
+static int
+get_escaped_char(int delim)
+{
+	int c;
+
+	if (prev_byte == -1) {
+		c = read_byte();
+	} else {
+		c = prev_byte;
+		prev_byte = -1;
+	}
+	if (c == delim)
+		return -1;
+	switch (c) {
+	case '\n':
+		if (!allow_c90) {
+			/* newline in string or char constant */
+			error(254);
+			return -2;
+		}
+		return c;
+	case '\0':
+		/* syntax error '%s' */
+		error(249, "EOF or null byte in literal");
+		return -2;
+	case EOF:
+		return -2;
+	case '\\':
+		c = read_escaped_backslash(delim);
+		if (c == -3)
+			return get_escaped_char(delim);
+	}
+	return c;
+}
+
 /* Called if lex found a leading "'". */
 int
 lex_character_constant(void)
@@ -948,49 +990,6 @@ lex_wide_character_constant(void)
 	return T_CON;
 }
 
-/*
- * Read a character which is part of a character constant or of a string
- * and handle escapes.
- *
- * The argument is the character which delimits the character constant or
- * string.
- *
- * Returns -1 if the end of the character constant or string is reached,
- * -2 if the EOF is reached, and the character otherwise.
- */
-static int
-get_escaped_char(int delim)
-{
-	int c;
-
-	if (prev_byte == -1) {
-		c = read_byte();
-	} else {
-		c = prev_byte;
-		prev_byte = -1;
-	}
-	if (c == delim)
-		return -1;
-	switch (c) {
-	case '\n':
-		if (!allow_c90) {
-			/* newline in string or char constant */
-			error(254);
-			return -2;
-		}
-		return c;
-	case '\0':
-		/* syntax error '%s' */
-		error(249, "EOF or null byte in literal");
-		return -2;
-	case EOF:
-		return -2;
-	case '\\':
-		return read_escaped_backslash(delim);
-	}
-	return c;
-}
-
 /* See https://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html */
 static void
 parse_line_directive_flags(const char *p,

Reply via email to