]> git.pond.sub.org Git - empserver/commitdiff
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 217594f6a92224ddfc7606e3fee7cecffe389576..64a13ef40f71a2fc1f2bdc5f5d096e8468fdb84f 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"`