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>
#!/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
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"`