#!/bin/sh
+set -e
+
usage()
{
cat <<EOF
mkzip()
{
archive=$1; shift
- sevenzipflags=-mx=9
- zipflags=-9
- ziplist=`mktemp`
- find "$@" -xtype f \( -executable -or -type l \) -print > "$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
[ -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
*)
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
+ unzip "$to" "$line"
done
- case "$output" in
- /*)
- ;;
- *)
- output=`pwd`/$output
- ;;
- esac
- cd "$tempdir"
- $ziptool "$output" .
+ $ziptool "$output" *
cd ..
fi
;;