From b0bea7418acb390d24bae1707e0f732668046c29 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sun, 3 Sep 2017 10:07:15 +0200 Subject: [PATCH] Make: Fix src/scripts/tarball argument parsing 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 --- src/scripts/tarball | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/scripts/tarball b/src/scripts/tarball index 217594f6..64a13ef4 100755 --- a/src/scripts/tarball +++ b/src/scripts/tarball @@ -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"`