[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] Improve “missing separator” error when reading spaces
From: |
Michael Stapelberg |
Subject: |
[PATCH] Improve “missing separator” error when reading spaces |
Date: |
Sat, 19 Nov 2016 18:49:38 +0100 |
With this change, users who have their editor misconfigured when writing
Makefiles without using 8 spaces for one TAB character will also get a
friendly error message.
I used the following 3 test cases:
echo -e "foo:\n echo bar" > broken.make
echo -e "foo:\n echo bar" > broken.8.make
echo -e "foo:\n--echo bar" > broken.else.make
Before this commit, running make on these files results in:
$ make -f broken.make
broken.make:2: *** missing separator. Stop.
$ make -f broken.8.make
broken.8.make:2: *** missing separator (did you mean TAB instead of 8
spaces?). Stop.
$ make -f broken.else.make
broken.else.make:2: *** missing separator. Stop.
After this commit, running make on these files results in:
$ /tmp/make/make -f broken.make
broken.make:2: *** missing separator (expected TAB, found SPACE). Stop.
$ /tmp/make/make -f broken.8.make
broken.8.make:2: *** missing separator (did you mean TAB instead of 8
spaces?). Stop.
$ /tmp/make/make -f broken.else.make
broken.else.make:2: *** missing separator. Stop.
---
read.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/read.c b/read.c
index b870aa8..3c67e55 100644
--- a/read.c
+++ b/read.c
@@ -1122,6 +1122,8 @@ eval (struct ebuffer *ebuf, int set_default)
one of the most common bugs found in makefiles... */
if (cmd_prefix == '\t' && strneq (line, " ", 8))
O (fatal, fstart, _("missing separator (did you mean TAB instead
of 8 spaces?)"));
+ else if (cmd_prefix == '\t' && strneq (line, " ", 1))
+ O (fatal, fstart, _("missing separator (expected TAB, found
SPACE)"));
else
O (fatal, fstart, _("missing separator"));
}
--
2.9.3