diff options
author | Jim Meyering <meyering@redhat.com> | 2008-12-26 12:00:18 +0100 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2008-12-26 12:08:51 +0100 |
commit | 0c65638b0fe521a47e72f318edfb12c5b3b850f5 (patch) | |
tree | 86c0cbef89f4047592ef382a15ad9f334909d10b | |
parent | 5c065bb0cb979dff21c474c0ff45b0c9013791d4 (diff) | |
download | coreutils-0c65638b0fe521a47e72f318edfb12c5b3b850f5.tar.xz |
maint: ensure dd's computation of O_FULLBLOCK uses all O_ symbol names
* src/dd.c (O_FULLBLOCK): Use a more uniform initializer, that makes
it easier to extract all O_ symbol names.
* maint.mk (syntax-check-rules): Also search for sc_ rules in cfg.mk.
(sc_root_tests): Ensure that this rule sets $diff.
* cfg.mk (sc_dd_O_FLAGS): New rule.
-rw-r--r-- | cfg.mk | 14 | ||||
-rw-r--r-- | maint.mk | 4 | ||||
-rw-r--r-- | src/dd.c | 3 |
3 files changed, 18 insertions, 3 deletions
@@ -43,3 +43,17 @@ gnulib_dir = /gnulib export VERBOSE = yes old_NEWS_hash = e56dee27333ad86eaf0aa7ac7d04fca5 - + +# Ensure that the list of O_ symbols used to compute O_FULLBLOCK is complete. +dd = $(srcdir)/src/dd.c +sc_dd_O_FLAGS: + @rm -f $@.1 $@.2 + @{ echo O_FULLBLOCK; perl -nle '/MAX \((O_\w*),/ and print $$1' \ + $(dd); } | sort > $@.1 + @{ echo O_NOFOLLOW; perl -nle '/{"[a-z]+",\s*(O_\w+)},/ and print $$1' \ + $(dd); } | sort > $@.2 + @diff -u $@.1 $@.2 || diff=1 || diff=; \ + rm -f $@.1 $@.2; \ + test "$$diff" \ + && { echo '$(ME): $(dd) has inconsistent O_ flag lists'>&2; \ + exit 1; } || : @@ -70,7 +70,7 @@ export LC_ALL = C # Collect the names of rules starting with `sc_'. syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \ - $(srcdir)/$(ME)) + $(srcdir)/$(ME) $(srcdir)/cfg.mk) .PHONY: $(syntax-check-rules) local-checks-available = \ @@ -318,7 +318,7 @@ sc_root_tests: $(srcdir)/tests/Makefile.am \ | sed 's/^ *//;/^root_tests =/d' \ | tr -s '\012\\' ' ' | fmt -1 | sort > $$t2; \ - diff -u $$t1 $$t2 || diff=1; \ + diff -u $$t1 $$t2 || diff=1 || diff=; \ rm -f $$t1 $$t2; \ test "$$diff" \ && { echo 'tests/Makefile.am: missing check-root action'>&2; \ @@ -279,7 +279,8 @@ enum MAX (O_NOFOLLOW, MAX (O_NOLINKS, MAX (O_NONBLOCK, - MAX (O_SYNC, O_TEXT))))))))))))) << 1) + MAX (O_SYNC, + MAX (O_TEXT, 0)))))))))))))) << 1) }; /* Ensure that we didn't shift it off the end. */ |