X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=misc%2Ftools%2Fzipdiff;h=661d9a2d677b3fcf3c583f5ae4b924b36405497c;hb=e06164f0cb3864bb1fe04c5ae4b90c05219362bc;hp=d0e5acfb11836f545c0d195cc0b0f694df2f12b3;hpb=ad0580082ab83e7f222989e8192b6beb88d7d91d;p=xonotic%2Fxonotic.git diff --git a/misc/tools/zipdiff b/misc/tools/zipdiff index d0e5acfb..661d9a2d 100755 --- a/misc/tools/zipdiff +++ b/misc/tools/zipdiff @@ -1,5 +1,7 @@ #!/bin/sh +set -e + usage() { cat < "$ziplist" - 7za a -tzip $sevenzipflags -x@"$ziplist" "$archive" "$@" || true - zip $zipflags -y -@<"$ziplist" "$archive" || true - rm -f "$ziplist" + zipflags=-1ry + zip $zipflags "$archive" "$@" || true + advzip -z -4 "$archive" } while [ $# -gt 0 ]; do @@ -61,6 +59,10 @@ done [ -n "$from" ] || usage [ -n "$to" ] || usage +case "$output" in '') ;; /*) ;; *) output=`pwd`/$output ;; esac +case "$from" in /*) ;; *) from=`pwd`/$from ;; esac +case "$to" in /*) ;; *) to=`pwd`/$to ;; esac + found() { type=$1 @@ -166,22 +168,14 @@ case "$output" in *) rm -f "$output" if [ -n "$result" ]; then + cd "$tempdir" echo "$result" | while IFS= read -r line; do echo >&2 "extracting $line..." dline=./$line mkdir -p "$tempdir/${dline%/*}" - unzip -p "$to" "$line" > "$tempdir/$line" # this may create an empty file - don't care, DP handles this as deletion - # FIXME permissions + unzip "$to" "$line" done - case "$output" in - /*) - ;; - *) - output=`pwd`/$output - ;; - esac - cd "$tempdir" - $ziptool "$output" . + $ziptool "$output" * cd .. fi ;;