]> git.ipfire.org Git - thirdparty/coreutils.git/commitdiff
maint: make sc_dd_O_FLAGS more robust
authorBernhard Voelker <mail@bernhard-voelker.de>
Mon, 9 Feb 2015 07:19:01 +0000 (08:19 +0100)
committerBernhard Voelker <mail@bernhard-voelker.de>
Mon, 9 Feb 2015 09:42:10 +0000 (10:42 +0100)
The construct "diff ... || diff=1 || diff=" does not set the variable
in all cases.  This could be triggered with:

  $ env make diff=1 make sc_dd_O_FLAGS
  dd_O_FLAGS
  maint.mk: ./src/dd.c has inconsistent O_ flag lists
  cfg.mk:59: recipe for target 'sc_dd_O_FLAGS' failed
  make: *** [sc_dd_O_FLAGS] Error 1

* cfg.mk (sc_dd_O_FLAGS): Remember $? of the diff command directly
and check its value later rather than using the  above mentioned
mapping.

cfg.mk

diff --git a/cfg.mk b/cfg.mk
index 4803074f818c0968c4bf72a3b104054be9be5a42..770527a1c69be4f9611a546f39e44ca1f9ac3e64 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -61,11 +61,11 @@ sc_dd_O_FLAGS:
          perl -nle '/^ +\| (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=;                          \
+       @diff -u $@.1 $@.2; diff=$$?;                                   \
        rm -f $@.1 $@.2;                                                \
-       test "$$diff"                                                   \
-         && { echo '$(ME): $(dd) has inconsistent O_ flag lists'>&2;   \
-              exit 1; } || :
+       test "$$diff" = 0                                               \
+         || { echo '$(ME): $(dd) has inconsistent O_ flag lists'>&2;   \
+              exit 1; }
 
 # Ensure that dd's definition of LONGEST_SYMBOL stays in sync
 # with the strings from the two affected variables.