Make: Fix src/scripts/tarball argument parsing
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 3 Sep 2017 08:07:15 +0000 (10:07 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 3 Sep 2017 08:26:47 +0000 (10:26 +0200)
The test for -x uses non-portable operator ==.  Screwed up in commit
63c6dd6.  Fix by using getopts instead.

Missing mandatory arguments aren't diagnosed.  Screwed up in initial
commit 1991652, v4.3.0.  Fix by checking shift's return status.

The error message for missing argument of -C neglects to print $0 and
uses echo in a non-portable way.  Also screwed up in commit 1991652.
Fix the obvious way.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/scripts/tarball

index 217594f..64a13ef 100755 (executable)
@@ -1,20 +1,30 @@
 #!/bin/sh -e
 
-if [ $# = 0 ]; then
+usage()
+{
     echo "Usage: $0 [-x TWEAK-SCRIPT ] NAME VERSION (FILE | -C DIR)..."
-    exit 1
-fi
+}
 
 script=:
-if [ "$1" == -x ]
-then
-    script=$2
-    shift; shift
-fi
+while getopts x: opt
+do
+    case $opt in
+    x)
+       script="$OPTARG"
+       ;;
+    *)
+       usage; exit 1
+       ;;
+    esac
+done
+shift $((OPTIND - 1))
 
 name="$1"
 version="$2"
-shift; shift
+if shift 2
+then :
+else usage; exit 1
+fi
 
 nv=$name-$version
 mkdir $nv
@@ -27,7 +37,7 @@ until [ $# = 0 ]; do
     if [ "$1" = -C ]; then
        dir="$2"
        if shift 2; then continue; fi
-       echo "-C requires an argument" >&2
+       echo "$0: -C requires an argument" >&2
        exit 1
     fi
     mkdir -p `dirname "$nv/$1"`