diff --git a/optipdf b/optipdf index 859bbda..aa48c72 100755 --- a/optipdf +++ b/optipdf @@ -12,6 +12,46 @@ cleanup() { } trap 'cleanup' EXIT +FILES=() +NO_MORE_FLAGS=0 +for ARG; do + # Assume arguments that don't begin with a - are supposed to be files or other operands + if [[ $NO_MORE_FLAGS -eq 0 && $ARG = -* ]]; then + case "$ARG" in + --backup=*) + KEEP_BACKUP_SUFFIX=${ARG#*=} + ;; + --no-backup) + KEEP_BACKUP_SUFFIX= + ;; + --force|-f) + FORCE=1 + ;; + --no-force|--careful) + FORCE=0 + ;; + --lossy) + LOSSY=1 + ;; + --no-lossy) + LOSSY=0 + ;; + --) + NO_MORE_FLAGS=1 + ;; + *) + printf 'Unrecognized flag: %s\n' \ + "$ARG" \ + >&2 + USAGE >&2 + exit 2 + ;; + esac + else + FILES+=("$ARG") + fi +done + file_size() { stat \ --format='%s' \ @@ -149,7 +189,7 @@ fi ERRORS=0 FREED_TOTAL=0 -for FILE; do +for FILE in "${FILES[@]}"; do rm -f -- "$TEMP" BEGIN_FILESIZE=$(file_size "$FILE")