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 == '$') {
 		    /*

Reply via email to