Module Name: src
Committed By: rillig
Date: Sat Nov 7 10:44:53 UTC 2020
Modified Files:
src/usr.bin/make: job.c make.h parse.c str.c suff.c
Log Message:
make(1): add pp_skip_hspace to skip horizontal whitespace during parsing
To generate a diff of this commit:
cvs rdiff -u -r1.306 -r1.307 src/usr.bin/make/job.c
cvs rdiff -u -r1.196 -r1.197 src/usr.bin/make/make.h
cvs rdiff -u -r1.428 -r1.429 src/usr.bin/make/parse.c
cvs rdiff -u -r1.71 -r1.72 src/usr.bin/make/str.c
cvs rdiff -u -r1.231 -r1.232 src/usr.bin/make/suff.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/make/job.c
diff -u src/usr.bin/make/job.c:1.306 src/usr.bin/make/job.c:1.307
--- src/usr.bin/make/job.c:1.306 Sat Nov 7 10:16:18 2020
+++ src/usr.bin/make/job.c Sat Nov 7 10:44:53 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: job.c,v 1.306 2020/11/07 10:16:18 rillig Exp $ */
+/* $NetBSD: job.c,v 1.307 2020/11/07 10:44:53 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
@@ -143,7 +143,7 @@
#include "trace.h"
/* "@(#)job.c 8.2 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: job.c,v 1.306 2020/11/07 10:16:18 rillig Exp $");
+MAKE_RCSID("$NetBSD: job.c,v 1.307 2020/11/07 10:44:53 rillig Exp $");
/* A shell defines how the commands are run. All commands for a target are
* written into a single file, which is then given to the shell to execute
@@ -1703,9 +1703,7 @@ JobOutput(Job *job, char *cp, char *endp
* command....
*/
cp++;
- while (*cp == ' ' || *cp == '\t' || *cp == '\n') {
- cp++;
- }
+ pp_skip_whitespace(&cp);
} else {
return cp;
}
Index: src/usr.bin/make/make.h
diff -u src/usr.bin/make/make.h:1.196 src/usr.bin/make/make.h:1.197
--- src/usr.bin/make/make.h:1.196 Fri Nov 6 22:39:10 2020
+++ src/usr.bin/make/make.h Sat Nov 7 10:44:53 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: make.h,v 1.196 2020/11/06 22:39:10 rillig Exp $ */
+/* $NetBSD: make.h,v 1.197 2020/11/07 10:44:53 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -742,6 +742,13 @@ pp_skip_whitespace(char **pp)
(*pp)++;
}
+static inline MAKE_ATTR_UNUSED void
+pp_skip_hspace(char **pp)
+{
+ while (**pp == ' ' || **pp == '\t')
+ (*pp)++;
+}
+
#ifdef MAKE_NATIVE
# include <sys/cdefs.h>
# ifndef lint
Index: src/usr.bin/make/parse.c
diff -u src/usr.bin/make/parse.c:1.428 src/usr.bin/make/parse.c:1.429
--- src/usr.bin/make/parse.c:1.428 Sat Nov 7 10:16:19 2020
+++ src/usr.bin/make/parse.c Sat Nov 7 10:44:53 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: parse.c,v 1.428 2020/11/07 10:16:19 rillig Exp $ */
+/* $NetBSD: parse.c,v 1.429 2020/11/07 10:44:53 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -117,7 +117,7 @@
#include "pathnames.h"
/* "@(#)parse.c 8.3 (Berkeley) 3/19/94" */
-MAKE_RCSID("$NetBSD: parse.c,v 1.428 2020/11/07 10:16:19 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.429 2020/11/07 10:44:53 rillig Exp $");
/* types and constants */
@@ -1834,9 +1834,7 @@ Parse_IsVar(const char *p, VarAssign *ou
const char *firstSpace = NULL;
int level = 0;
- /* Skip to variable name */
- while (*p == ' ' || *p == '\t')
- p++;
+ cpp_skip_hspace(&p); /* Skip to variable name */
/* During parsing, the '+' of the '+=' operator is initially parsed
* as part of the variable name. It is later corrected, as is the ':sh'
@@ -2246,8 +2244,7 @@ ParseDoInclude(char *line)
char *file = line + (silent ? 8 : 7);
/* Skip to delimiter character so we know where to look */
- while (*file == ' ' || *file == '\t')
- file++;
+ pp_skip_hspace(&file);
if (*file != '"' && *file != '<') {
Parse_Error(PARSE_FATAL,
@@ -2783,9 +2780,8 @@ ParseGetLine(int flags)
continue;
}
- /* Escaped '\n' replace following whitespace with a single ' ' */
- while (ptr[0] == ' ' || ptr[0] == '\t')
- ptr++;
+ /* Escaped '\n' -- replace following whitespace with a single ' '. */
+ pp_skip_hspace(&ptr);
ch = ' ';
}
Index: src/usr.bin/make/str.c
diff -u src/usr.bin/make/str.c:1.71 src/usr.bin/make/str.c:1.72
--- src/usr.bin/make/str.c:1.71 Sat Nov 7 10:16:19 2020
+++ src/usr.bin/make/str.c Sat Nov 7 10:44:53 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: str.c,v 1.71 2020/11/07 10:16:19 rillig Exp $ */
+/* $NetBSD: str.c,v 1.72 2020/11/07 10:44:53 rillig Exp $ */
/*-
* Copyright (c) 1988, 1989, 1990, 1993
@@ -71,7 +71,7 @@
#include "make.h"
/* "@(#)str.c 5.8 (Berkeley) 6/1/90" */
-MAKE_RCSID("$NetBSD: str.c,v 1.71 2020/11/07 10:16:19 rillig Exp $");
+MAKE_RCSID("$NetBSD: str.c,v 1.72 2020/11/07 10:44:53 rillig Exp $");
/* Return the concatenation of s1 and s2, freshly allocated. */
char *
@@ -139,9 +139,8 @@ Str_Words(const char *str, Boolean expan
char *word_end;
const char *str_p;
- /* skip leading space chars. */
- for (; *str == ' ' || *str == '\t'; ++str)
- continue;
+ /* XXX: why only hspace, not whitespace? */
+ cpp_skip_hspace(&str); /* skip leading space chars. */
/* words_buf holds the words, separated by '\0'. */
str_len = strlen(str);
Index: src/usr.bin/make/suff.c
diff -u src/usr.bin/make/suff.c:1.231 src/usr.bin/make/suff.c:1.232
--- src/usr.bin/make/suff.c:1.231 Thu Nov 5 17:27:16 2020
+++ src/usr.bin/make/suff.c Sat Nov 7 10:44:53 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: suff.c,v 1.231 2020/11/05 17:27:16 rillig Exp $ */
+/* $NetBSD: suff.c,v 1.232 2020/11/07 10:44:53 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -129,7 +129,7 @@
#include "dir.h"
/* "@(#)suff.c 8.4 (Berkeley) 3/21/94" */
-MAKE_RCSID("$NetBSD: suff.c,v 1.231 2020/11/05 17:27:16 rillig Exp $");
+MAKE_RCSID("$NetBSD: suff.c,v 1.232 2020/11/07 10:44:53 rillig Exp $");
#define SUFF_DEBUG0(text) DEBUG0(SUFF, text)
#define SUFF_DEBUG1(fmt, arg1) DEBUG1(SUFF, fmt, arg1)
@@ -1166,15 +1166,15 @@ SuffExpandChildren(GNodeListNode *cln, G
/*
* Break the result into a vector of strings whose nodes
* we can find, then add those nodes to the members list.
- * Unfortunately, we can't use brk_string b/c it
+ * Unfortunately, we can't use brk_string because it
* doesn't understand about variable specifications with
* spaces in them...
*/
char *start;
char *initcp = cp; /* For freeing... */
- for (start = cp; *start == ' ' || *start == '\t'; start++)
- continue;
+ start = cp;
+ pp_skip_hspace(&start);
cp = start;
while (*cp != '\0') {
if (*cp == ' ' || *cp == '\t') {
@@ -1185,9 +1185,7 @@ SuffExpandChildren(GNodeListNode *cln, G
*cp++ = '\0';
gn = Targ_GetNode(start);
Lst_Append(members, gn);
- while (*cp == ' ' || *cp == '\t') {
- cp++;
- }
+ pp_skip_hspace(&cp);
start = cp; /* Continue at the next non-space. */
} else if (*cp == '$') {
/*