diff --git a/optipdf b/optipdf index 4ef798c..7aca076 100755 --- a/optipdf +++ b/optipdf @@ -42,12 +42,6 @@ KEEP_BACKUP_SUFFIX= FORCE_OVERWRITE=0 ENCODE_THRU_WARNINGS=0 -TEMP_DIR=$(mktemp -d -t "${0##*/}.XXXXXX") -cleanup() { - rm -fr -- "$TEMP_DIR" -} -trap 'cleanup' EXIT - FILES=() NO_MORE_FLAGS=0 for ARG; do @@ -104,6 +98,8 @@ for ARG; do fi done +TEMP_DIR= + if [[ ${#FILES[@]} -eq 0 ]]; then USAGE >&2 exit 1 @@ -159,6 +155,16 @@ hr_size() ( printf '%g %s\n' "$HR_VAL" "$HR_UNIT" ) +setup_tempdir() { + if [[ -z $TEMP_DIR ]]; then + TEMP_DIR=$(mktemp -d -t "${0##*/}.XXXXXX") + cleanup() { + rm -fr -- "$TEMP_DIR" + } + trap 'cleanup' EXIT + fi +} + # copies $2 over to $1 if $2 is smaller than $1 use_smaller() { # if `$TEMP' isn't empty and it's of a smaller size than `$FILE', @@ -250,6 +256,7 @@ fi ERRORS=0 FREED_TOTAL=0 for FILE in "${FILES[@]}"; do + setup_tempdir TEMP=$(mktemp -p "$TEMP_DIR" -t 'file.XXXXXX') rm -f -- "$TEMP" BEGIN_FILESIZE=$(file_size "$FILE")