Browse Source

archive: fix unrar-free and add support for unar (#1383)

* archive: fix unrar check when using unrar-free

unrar-free returns the error code 1 when run without arguments, thus
failing the presence check. Replacing the current presence check with
(( $+commands[unrar] )) fixes the problem.

* archive: add unar support for lsarchive and unarchive

No `archive` support with unar.
master
Nicola Corna 7 years ago committed by Kaleb Elwert
parent
commit
9520f1be6f
  1. 2
      modules/archive/README.md
  2. 8
      modules/archive/functions/lsarchive
  3. 8
      modules/archive/functions/unarchive

2
modules/archive/README.md

@ -27,7 +27,7 @@ installed:
- *.lzma* requires `unlzma`. - *.lzma* requires `unlzma`.
- *.Z* requires `uncompress`. - *.Z* requires `uncompress`.
- *.zip*, *.jar* requires `unzip`. - *.zip*, *.jar* requires `unzip`.
- *.rar* requires `unrar` or `rar`. - *.rar* requires `rar` (needed for `archive` support), `unrar` or `lsar` and `unar`.
- *.7z* requires `7za`. - *.7z* requires `7za`.
- *.deb* requires `ar`, `tar`. - *.deb* requires `ar`, `tar`.

8
modules/archive/functions/lsarchive

@ -43,9 +43,11 @@ while (( $# > 0 )); do
|| lzcat "$1" | tar x${verbose:+v}f - ;; || lzcat "$1" | tar x${verbose:+v}f - ;;
(*.tar) tar t${verbose:+v}f "$1" ;; (*.tar) tar t${verbose:+v}f "$1" ;;
(*.zip|*.jar) unzip -l${verbose:+v} "$1" ;; (*.zip|*.jar) unzip -l${verbose:+v} "$1" ;;
(*.rar) unrar &> /dev/null \ (*.rar) ( (( $+commands[unrar] )) \
&& unrar ${${verbose:+v}:-l} "$1" \ && unrar ${${verbose:+v}:-l} "$1" ) \
|| rar ${${verbose:+v}:-l} "$1" ;; || ( (( $+commands[rar] )) \
&& rar ${${verbose:+v}:-l} "$1" ) \
|| lsar ${verbose:+-l} "$1" ;;
(*.7z) 7za l "$1" ;; (*.7z) 7za l "$1" ;;
(*) (*)
print "$0: cannot list: $1" >&2 print "$0: cannot list: $1" >&2

8
modules/archive/functions/unarchive

@ -57,9 +57,11 @@ while (( $# > 0 )); do
(*.lzma) unlzma "$1" ;; (*.lzma) unlzma "$1" ;;
(*.Z) uncompress "$1" ;; (*.Z) uncompress "$1" ;;
(*.zip|*.jar) unzip "$1" -d $extract_dir ;; (*.zip|*.jar) unzip "$1" -d $extract_dir ;;
(*.rar) unrar &> /dev/null \ (*.rar) ( (( $+commands[unrar] )) \
&& unrar x -ad "$1" \ && unrar x -ad "$1" ) \
|| rar x -ad "$1" ;; || ( (( $+commands[rar] )) \
&& rar x -ad "$1" ) \
|| unar -d "$1" ;;
(*.7z) 7za x "$1" ;; (*.7z) 7za x "$1" ;;
(*.deb) (*.deb)
mkdir -p "$extract_dir/control" mkdir -p "$extract_dir/control"

Loading…
Cancel
Save