summaryrefslogtreecommitdiff
path: root/top
diff options
context:
space:
mode:
authorJim Meyering <meyering@redhat.com>2011-05-11 10:07:32 +0200
committerJim Meyering <meyering@redhat.com>2011-05-11 10:07:32 +0200
commit6adb4cdee88c73b0824cc094853737878cd38fd1 (patch)
tree56d633bbb234de8159bbd4e0c39cbabc2cad62e1 /top
parent112b21e3861a4887731b61888d1388127957ba93 (diff)
downloadgnulib-6adb4cdee88c73b0824cc094853737878cd38fd1.tar.gz
maint.mk: improve "can not" detection and generalize rule name
* top/maint.mk (sc_prohibit_misc): Renamed from sc_prohibit_can_not, since we'll probably add a few more word pairs here. Use the same technique as in sc_prohibit_doubled_word, so that we recognize "can not" also when the words are separated by a newline. Suggested by Eric Blake. (perl_filename_lineno_text_): Define. Factored out of... (prohibit_doubled_word_): ...here. Use the new definition. (prohibit_misc_): New var. Use it here, too. (prohibit_misc_RE_): New overridable variable.
Diffstat (limited to 'top')
-rw-r--r--top/maint.mk30
1 files changed, 22 insertions, 8 deletions
diff --git a/top/maint.mk b/top/maint.mk
index 346fe0068c..bb4354fa9b 100644
--- a/top/maint.mk
+++ b/top/maint.mk
@@ -840,16 +840,21 @@ sc_prohibit_S_IS_definition:
halt='do not define S_IS* macros; include <sys/stat.h>' \
$(_sc_search_regexp)
-prohibit_doubled_word_RE_ ?= \
- /\b(then?|[iao]n|i[fst]|but|f?or|at|and|[dt]o)\s+\1\b/gims
-prohibit_doubled_word_ = \
- -e 'while ($(prohibit_doubled_word_RE_))' \
+# Perl block to convert a match to FILE_NAME:LINENO:TEST,
+# that is shared by two definitions below.
+perl_filename_lineno_text_ = \
-e ' {' \
-e ' $$n = ($$` =~ tr/\n/\n/ + 1);' \
-e ' ($$v = $$&) =~ s/\n/\\n/g;' \
-e ' print "$$ARGV:$$n:$$v\n";' \
-e ' }'
+prohibit_doubled_word_RE_ ?= \
+ /\b(then?|[iao]n|i[fst]|but|f?or|at|and|[dt]o)\s+\1\b/gims
+prohibit_doubled_word_ = \
+ -e 'while ($(prohibit_doubled_word_RE_))' \
+ $(perl_filename_lineno_text_)
+
# Define this to a regular expression that matches
# any filename:dd:match lines you want to ignore.
# The default is to ignore no matches.
@@ -860,10 +865,19 @@ sc_prohibit_doubled_word:
| grep -vE '$(ignore_doubled_word_match_RE_)' \
| grep . && { echo '$(ME): doubled words' 1>&2; exit 1; } || :
-sc_prohibit_can_not:
- @prohibit='\<can[ ]not\>' \
- halt='use "cannot", not "can'' not"' \
- $(_sc_search_regexp)
+# A regular expression matching undesirable combinations of words like
+# "can not"; this matches them even when the two words appear on different
+# lines, but not when there is an intervening delimiter like "#" or "*".
+prohibit_misc_RE_ ?= \
+ /\bcan\s+not\b/gims
+prohibit_misc_ = \
+ -e 'while ($(prohibit_misc_RE_))' \
+ $(perl_filename_lineno_text_)
+
+sc_prohibit_misc:
+ @perl -n -0777 $(prohibit_misc_) $$($(VC_LIST_EXCEPT)) \
+ | grep -vE '$(prohibit_misc_RE_)' \
+ | grep . && { echo '$(ME): undesirable words' 1>&2; exit 1; } || :
_ptm1 = use "test C1 && test C2", not "test C1 -''a C2"
_ptm2 = use "test C1 || test C2", not "test C1 -''o C2"