aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2012-02-27 13:53:12 +0200
committerPeter Eisentraut <peter_e@gmx.net>2012-02-27 13:53:12 +0200
commit9bf8603c7a9153cada7e32eb0cf7ac1feb1d3b56 (patch)
tree5ad54b73d478dd7fe08c96b7e27f17930b120cba /src
parent1b630751d0ffef4c856bfe382889d0d187eca404 (diff)
downloadpostgresql-9bf8603c7a9153cada7e32eb0cf7ac1feb1d3b56.tar.gz
postgresql-9bf8603c7a9153cada7e32eb0cf7ac1feb1d3b56.zip
Call check_keywords.pl in maintainer-check
For that purpose, have check_keywords.pl print errors to stderr and return a useful exit status.
Diffstat (limited to 'src')
-rw-r--r--src/backend/common.mk2
-rw-r--r--src/backend/parser/Makefile4
-rwxr-xr-xsrc/tools/check_keywords.pl25
3 files changed, 22 insertions, 9 deletions
diff --git a/src/backend/common.mk b/src/backend/common.mk
index 5d599dbd0ca..2e56151e2b4 100644
--- a/src/backend/common.mk
+++ b/src/backend/common.mk
@@ -45,4 +45,4 @@ clean: clean-local
clean-local:
rm -f $(subsysfilename) $(OBJS)
-$(call recurse,coverage)
+$(call recurse,coverage maintainer-check)
diff --git a/src/backend/parser/Makefile b/src/backend/parser/Makefile
index 0bdb3249a2e..00e8e88e9c2 100644
--- a/src/backend/parser/Makefile
+++ b/src/backend/parser/Makefile
@@ -65,3 +65,7 @@ gram.o keywords.o parser.o: gram.h
# are not cleaned here.
clean distclean maintainer-clean:
rm -f lex.backup
+
+
+maintainer-check:
+ $(PERL) $(top_srcdir)/src/tools/check_keywords.pl $(top_srcdir)
diff --git a/src/tools/check_keywords.pl b/src/tools/check_keywords.pl
index 17877548400..33816c51332 100755
--- a/src/tools/check_keywords.pl
+++ b/src/tools/check_keywords.pl
@@ -7,8 +7,14 @@ use strict;
#
# src/tools/check_keywords.pl
+my $errors = 0;
my $path;
+sub error(@) {
+ print STDERR @_;
+ $errors = 1;
+}
+
if (@ARGV) {
$path = $ARGV[0];
shift @ARGV;
@@ -102,7 +108,8 @@ foreach $kcat (keys %keyword_categories) {
$bare_kword = $kword;
$bare_kword =~ s/_P$//;
if ($bare_kword le $prevkword) {
- print "'$bare_kword' after '$prevkword' in $kcat list is misplaced";
+ error "'$bare_kword' after '$prevkword' in $kcat list is misplaced";
+ $errors = 1;
}
$prevkword = $bare_kword;
}
@@ -141,35 +148,35 @@ kwlist_line: while (<KWLIST>) {
# Check that the list is in alphabetical order
if ($kwstring le $prevkwstring) {
- print "'$kwstring' after '$prevkwstring' in kwlist.h is misplaced";
+ error "'$kwstring' after '$prevkwstring' in kwlist.h is misplaced";
}
$prevkwstring = $kwstring;
# Check that the keyword string is valid: all lower-case ASCII chars
if ($kwstring !~ /^[a-z_]*$/) {
- print "'$kwstring' is not a valid keyword string, must be all lower-case ASCII chars";
+ error "'$kwstring' is not a valid keyword string, must be all lower-case ASCII chars";
}
# Check that the keyword name is valid: all upper-case ASCII chars
if ($kwname !~ /^[A-Z_]*$/) {
- print "'$kwname' is not a valid keyword name, must be all upper-case ASCII chars";
+ error "'$kwname' is not a valid keyword name, must be all upper-case ASCII chars";
}
# Check that the keyword string matches keyword name
$bare_kwname = $kwname;
$bare_kwname =~ s/_P$//;
if ($bare_kwname ne uc($kwstring)) {
- print "keyword name '$kwname' doesn't match keyword string '$kwstring'";
+ error "keyword name '$kwname' doesn't match keyword string '$kwstring'";
}
# Check that the keyword is present in the grammar
%kwhash = %{$kwhashes{$kwcat_id}};
if (!(%kwhash)) {
- #print "Unknown kwcat_id: $kwcat_id";
+ #error "Unknown kwcat_id: $kwcat_id";
} else {
if (!($kwhash{$kwname})) {
- print "'$kwname' not present in $kwcat_id section of gram.y";
+ error "'$kwname' not present in $kwcat_id section of gram.y";
} else {
# Remove it from the hash, so that we can complain at the end
# if there's keywords left that were not found in kwlist.h
@@ -185,6 +192,8 @@ while ( my ($kwcat, $kwcat_id) = each(%keyword_categories) ) {
%kwhash = %{$kwhashes{$kwcat_id}};
for my $kw ( keys %kwhash ) {
- print "'$kw' found in gram.y $kwcat category, but not in kwlist.h"
+ error "'$kw' found in gram.y $kwcat category, but not in kwlist.h"
}
}
+
+exit $errors;