Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): rename mode constants for ParseGetLine...



details:   https://anonhg.NetBSD.org/src/rev/f684a7fbaa85
branches:  trunk
changeset: 947883:f684a7fbaa85
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Dec 19 16:05:33 2020 +0000

description:
make(1): rename mode constants for ParseGetLine to be more expressive

diffstat:

 usr.bin/make/parse.c |  40 ++++++++++++++++------------------------
 1 files changed, 16 insertions(+), 24 deletions(-)

diffs (110 lines):

diff -r f1a7a08c0004 -r f684a7fbaa85 usr.bin/make/parse.c
--- a/usr.bin/make/parse.c      Sat Dec 19 16:00:17 2020 +0000
+++ b/usr.bin/make/parse.c      Sat Dec 19 16:05:33 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: parse.c,v 1.498 2020/12/19 15:29:28 rillig Exp $       */
+/*     $NetBSD: parse.c,v 1.499 2020/12/19 16:05:33 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.498 2020/12/19 15:29:28 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.499 2020/12/19 16:05:33 rillig Exp $");
 
 /* types and constants */
 
@@ -2791,25 +2791,26 @@
         * Backslash line continuations are folded into a single space.
         * A trailing comment, if any, is discarded.
         */
-       PARSE_NORMAL,
+       GLM_NONEMPTY,
 
        /*
         * Return the next line, even if it is empty or a comment.
+        * Preserve backslash-newline to keep the line numbers correct.
         *
         * Used in .for loops to collect the body of the loop while waiting
         * for the corresponding .endfor.
         */
-       PARSE_RAW,
+       GLM_FOR_BODY,
 
        /*
-        * Return the next line that is a directive.
+        * Return the next line that starts with a dot.
         * Backslash line continuations are folded into a single space.
         * A trailing comment, if any, is discarded.
         *
         * Used in .if directives to skip over irrelevant branches while
         * waiting for the corresponding .endif.
         */
-       PARSE_SKIP
+       GLM_DOT
 } GetLineMode;
 
 /* Return the next "interesting" logical line from the current file. */
@@ -2832,27 +2833,18 @@
                if (line_end == line || firstComment == line) {
                        if (res == PRLR_EOF)
                                return NULL;
-                       if (mode != PARSE_RAW)
+                       if (mode != GLM_FOR_BODY)
                                continue;
                }
 
                /* We now have a line of data */
                *line_end = '\0';
 
-               if (mode == PARSE_RAW) {
-                       /* Leave '\' (etc) in line buffer (eg 'for' lines) */
-                       return line;
-               }
-
-               if (mode == PARSE_SKIP) {
-                       /* Completely ignore non-directives */
-                       if (line[0] != '.')
-                               continue;
-                       /*
-                        * We could do more of the .else/.elif/.endif checks
-                        * here.
-                        */
-               }
+               if (mode == GLM_FOR_BODY)
+                       return line;    /* Don't join the physical lines. */
+
+               if (mode == GLM_DOT && line[0] != '.')
+                       continue;
                break;
        }
 
@@ -2891,7 +2883,7 @@
        int rval;
 
        for (;;) {
-               line = ParseGetLine(PARSE_NORMAL);
+               line = ParseGetLine(GLM_NONEMPTY);
                if (line == NULL)
                        return NULL;
 
@@ -2904,7 +2896,7 @@
                 */
                switch (Cond_EvalLine(line)) {
                case COND_SKIP:
-                       while ((line = ParseGetLine(PARSE_SKIP)) != NULL) {
+                       while ((line = ParseGetLine(GLM_DOT)) != NULL) {
                                if (Cond_EvalLine(line) == COND_PARSE)
                                        break;
                                /*
@@ -2939,7 +2931,7 @@
                        lineno = CurFile()->lineno;
                        /* Accumulate loop lines until matching .endfor */
                        do {
-                               line = ParseGetLine(PARSE_RAW);
+                               line = ParseGetLine(GLM_FOR_BODY);
                                if (line == NULL) {
                                        Parse_Error(PARSE_FATAL,
                                            "Unexpected end of file "



Home | Main Index | Thread Index | Old Index