Module Name: src Committed By: rillig Date: Tue Jul 28 18:15:11 UTC 2020
Modified Files: src/usr.bin/make: parse.c src/usr.bin/make/unit-tests: directives.exp Log Message: make(1): when parsing an unknown directive, print the directive name To generate a diff of this commit: cvs rdiff -u -r1.239 -r1.240 src/usr.bin/make/parse.c cvs rdiff -u -r1.2 -r1.3 src/usr.bin/make/unit-tests/directives.exp 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/parse.c diff -u src/usr.bin/make/parse.c:1.239 src/usr.bin/make/parse.c:1.240 --- src/usr.bin/make/parse.c:1.239 Tue Jul 28 16:42:22 2020 +++ src/usr.bin/make/parse.c Tue Jul 28 18:15:11 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: parse.c,v 1.239 2020/07/28 16:42:22 rillig Exp $ */ +/* $NetBSD: parse.c,v 1.240 2020/07/28 18:15:11 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: parse.c,v 1.239 2020/07/28 16:42:22 rillig Exp $"; +static char rcsid[] = "$NetBSD: parse.c,v 1.240 2020/07/28 18:15:11 rillig Exp $"; #else #include <sys/cdefs.h> #ifndef lint #if 0 static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94"; #else -__RCSID("$NetBSD: parse.c,v 1.239 2020/07/28 16:42:22 rillig Exp $"); +__RCSID("$NetBSD: parse.c,v 1.240 2020/07/28 18:15:11 rillig Exp $"); #endif #endif /* not lint */ #endif @@ -1289,7 +1289,16 @@ ParseDoDependency(char *line) (strncmp(line, ">>>>>>", 6) == 0)) Parse_Error(PARSE_FATAL, "Makefile appears to contain unresolved cvs/rcs/??? merge conflicts"); - else + else if (lstart[0] == '.') { + const char *dirstart = lstart + 1; + while (isspace((unsigned char)*dirstart)) + dirstart++; + const char *dirend = dirstart; + while (isalnum((unsigned char)*dirend) || *dirend == '-') + dirend++; + Parse_Error(PARSE_FATAL, "Unknown directive \"%.*s\"", + (int)(dirend - dirstart), dirstart); + } else Parse_Error(PARSE_FATAL, lstart[0] == '.' ? "Unknown directive" : "Need an operator"); goto out; Index: src/usr.bin/make/unit-tests/directives.exp diff -u src/usr.bin/make/unit-tests/directives.exp:1.2 src/usr.bin/make/unit-tests/directives.exp:1.3 --- src/usr.bin/make/unit-tests/directives.exp:1.2 Tue Jul 28 17:47:57 2020 +++ src/usr.bin/make/unit-tests/directives.exp Tue Jul 28 18:15:11 2020 @@ -1,25 +1,25 @@ make: "directives.mk" line 10: begin .export tests -make: "directives.mk" line 11: Unknown directive +make: "directives.mk" line 11: Unknown directive "expor" make: "directives.mk" line 20: begin .export-env tests make: "directives.mk" line 30: begin .export-literal tests make: "directives.mk" line 40: begin .info tests -make: "directives.mk" line 41: Unknown directive -make: "directives.mk" line 42: Unknown directive +make: "directives.mk" line 41: Unknown directive "inf" +make: "directives.mk" line 42: Unknown directive "info" make: "directives.mk" line 43: message make: "directives.mk" line 44: indented message -make: "directives.mk" line 45: Unknown directive +make: "directives.mk" line 45: Unknown directive "information" make: "directives.mk" line 46: message make: "directives.mk" line 50: begin .undef tests -make: "directives.mk" line 51: Unknown directive +make: "directives.mk" line 51: Unknown directive "unde" make: "directives.mk" line 60: begin .unexport tests -make: "directives.mk" line 61: Unknown directive +make: "directives.mk" line 61: Unknown directive "unexpor" make: "directives.mk" line 70: begin .unexport-env tests make: "directives.mk" line 80: begin .warning tests -make: "directives.mk" line 81: Unknown directive -make: "directives.mk" line 82: Unknown directive -make: "directives.mk" line 83: Unknown directive +make: "directives.mk" line 81: Unknown directive "warn" +make: "directives.mk" line 82: Unknown directive "warnin" +make: "directives.mk" line 83: Unknown directive "warning" make: "directives.mk" line 84: warning: message -make: "directives.mk" line 85: Unknown directive +make: "directives.mk" line 85: Unknown directive "warnings" make: "directives.mk" line 86: warning: messages make: "directives.mk" line 90: begin .elif misspellings tests, part 1 make: "directives.mk" line 100: begin .elif misspellings tests, part 2 @@ -27,9 +27,9 @@ make: "directives.mk" line 110: begin .e make: "directives.mk" line 120: which branch is taken on misspelling after false? make: "directives.mk" line 127: else taken make: "directives.mk" line 130: which branch is taken on misspelling after true? -make: "directives.mk" line 132: Unknown directive +make: "directives.mk" line 132: Unknown directive "elsif" make: "directives.mk" line 133: 1 taken -make: "directives.mk" line 134: Unknown directive +make: "directives.mk" line 134: Unknown directive "elsif" make: "directives.mk" line 135: 2 taken make: "directives.mk" line 140: end of the tests make: Fatal errors encountered -- cannot continue