
On 06/25/2013 11:22 AM, Gerhard Sittig wrote:
On Mon, Jun 24, 2013 at 09:43 -0600, Stephen Warren wrote:
+checkdtc:
- @if test $(call dtc-version) -lt 0104; then \
echo '*** Your dtc is too old, please upgrade to dtc 1.4 or newer'; \
false; \
- fi
... and ...
--- /dev/null +++ b/tools/dtc-version.sh @@ -0,0 +1,20 @@ +#!/bin/sh +# +# dtc-version dtc-command +# +# Prints the dtc version of `dtc-command' in a canonical 4-digit form +# such as `0222' for binutils 2.22 +#
So the numbers get converted to something that's neatly aligned and free of whitespace and can get sorted alphabetically.
But the numbers get passed to $SHELL and the builtin test(1) command, and get compared numerically ('-lt' operator).
Does that mean that the test break with digits beyond seven, when numbers no longer can get interpreted as valid octal numbers?
I'm pretty sure sh treats the numbers as decimal. Testing appears to support this:
[swarren@swarren-lx1 kernel.git]$ if [ 0104 -lt 0104 ]; then echo yes; else echo no; fi no
[swarren@swarren-lx1 kernel.git]$ if [ 0103 -lt 0104 ]; then echo yes; else echo no; fi yes
[swarren@swarren-lx1 kernel.git]$ if [ 0803 -lt 0104 ]; then echo yes; else echo no; fi no
[swarren@swarren-lx1 kernel.git]$ if [ 0802 -lt 0804 ]; then echo yes; else echo no; fi yes
[swarren@swarren-lx1 kernel.git]$ if [ 0804 -lt 0804 ]; then echo yes; else echo no; fi no
[swarren@swarren-lx1 kernel.git]$ if [ 0806 -lt 0804 ]; then echo yes; else echo no; fi no