]> pd.if.org Git - zpackage/commitdiff
quote paths in zpm-add
authorNathan Wagner <nw@hydaspes.if.org>
Wed, 12 Dec 2018 15:48:49 +0000 (15:48 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Wed, 12 Dec 2018 15:48:49 +0000 (15:48 +0000)
add -z option to not clear package hash

zpm-add

diff --git a/zpm-add b/zpm-add
index f627c6dc6990578a0a9a290d87b45761dddfbc78..c910a1cfd30025ae8b82af825f0f0bc43525c4b0 100755 (executable)
--- a/zpm-add
+++ b/zpm-add
@@ -7,8 +7,8 @@
 # no id impossible
 
 die() {
-       echo $* 1>&2
-       exit 1
+       echo "$@" 1>&2
+       exit 255
 }
 
 # basic cleanup on a path
@@ -34,6 +34,7 @@ tags=
 isconfig=0
 addcontent=1
 complete=0
+noclear=0
 # option for "multipackage" just to let the system know that's what you meant
 # option to take filenames from stdin
 # parse package, version, release from file if not given
@@ -43,7 +44,7 @@ complete=0
 # -m set mode
 # -H set hash, will be overridden for regular files unless -N is set
 # -F set filetype, regular, symlink, directory
-while getopts :f:vr:l:P:S:cu:g:NCm:M:T:H:F: opt; do
+while getopts :f:vr:l:P:S:cu:g:NCm:M:T:H:F:z opt; do
        case $opt in
                N) addcontent=0 ;;
                f) pkgfile="$OPTARG" ;;
@@ -60,7 +61,8 @@ while getopts :f:vr:l:P:S:cu:g:NCm:M:T:H:F: opt; do
                H) clhash="$OPTARG" ;;
                v) verbose=$((verbose + 1)) ;;
                C) complete=1 ;;
-               *) echo 'unknown option' $OPTARG; exit 1 ;;
+               z) noclear=1 ;;
+               *) echo 'unknown option' $OPTARG; exit 255 ;;
        esac
 done
 shift $((OPTIND - 1))
@@ -106,8 +108,7 @@ fi
 
 # check for package file
 if [ ! -f "$pkgfile" ]; then
-       echo $pkgfile does not exist
-       exit 1
+       die $pkgfile does not exist
 fi
 
 set -e
@@ -123,17 +124,17 @@ pkgver=$(zpm quote "$version")
 pkgrel=$(zpm quote "$release")
 
 #strip=$(cleanpath "$strip")
-for path in $*; do
+for path in "$@"; do
        #echo adding $path
 if [ $verbose -gt 1 ]; then
-       printf "adding %s\n" $path
+       printf "adding %s\n" "$path"
 fi
 
        # only stat the file for items not set on the command line
-       mode=${clmode:-$(zpm stat -l -f '%a' $path)}
-       username=${cluser:-$(zpm stat -l -f '%U' $path)}
-       groupname=${clgroup:-$(zpm stat -l -f '%G' $path)}
-       mtime=${clmtime:-$(zpm stat -l -f '%y' $path)}
+       mode=${clmode:-$(zpm stat -l -f '%a' "$path")}
+       username=${cluser:-$(zpm stat -l -f '%U' "$path")}
+       groupname=${clgroup:-$(zpm stat -l -f '%G' "$path")}
+       mtime=${clmtime:-$(zpm stat -l -f '%y' "$path")}
        filetype=${cltype:-$(zpm stat -l -f '%t' "$path")}
 
        rpath="$path"
@@ -213,11 +214,15 @@ values ('$package', '$pkgver', $pkgrel, '$rpath', '$mode',$mtime, '$username','$
 commit;
 EOS
 
+if [ $? -ne 0 ]; then
+       die zpm-add shell failed
+fi
+
 #printf "%s %s%s\n" $path $rpath ${target:+" -> $target"}
 if [ $verbose -gt 1 ]; then
-       printf "%s%s %s:%s %s\n" $filetype $mode $username $groupname $path
+       printf "%s%s %s:%s %s\n" $filetype $mode $username $groupname "$path"
 elif [ $verbose -gt 0 ]; then
-       printf "%s\n" $path
+       printf "%s\n" "$path"
 fi
 
 done
@@ -225,6 +230,11 @@ done
 if [ $complete -eq 1 ]; then
        zpm pkg -f $pkgfile $pkgid build_time=$(date +'%s')
        zpm packagehash -f $pkgfile -s -q $pkgid
-else
+elif [ $noclear -eq 0 ]; then
        zpm pkg -f $pkgfile $pkgid hash=
+       rv=$?
+       if [ $rv -ne 0 ]; then
+               die clearing packagehash failed
+       fi
 fi
+exit 0