From 9c0e2ca8135a3adbd4217d31b07ca027b9e2801d Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Mon, 7 Oct 2013 01:13:08 -0200 Subject: mc-libre-4.8.10-2.1: add unar support => https://labs.parabola.nu/issues/416 --- libre/mc-libre/PKGBUILD | 25 +++++++++++++++---- libre/mc-libre/unar.in | 64 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 4 deletions(-) create mode 100644 libre/mc-libre/unar.in (limited to 'libre') diff --git a/libre/mc-libre/PKGBUILD b/libre/mc-libre/PKGBUILD index e270f8d3d..07bbfee8b 100644 --- a/libre/mc-libre/PKGBUILD +++ b/libre/mc-libre/PKGBUILD @@ -5,8 +5,8 @@ _pkgname=mc pkgname=mc-libre pkgver=4.8.10 -pkgrel=2 -pkgdesc="Midnight Commander is a text based filemanager/shell that emulates Norton Commander, with unar and arj recommendation included and nonfree unace recommendation removed" +pkgrel=2.1 +pkgdesc="Midnight Commander is a text based filemanager/shell that emulates Norton Commander, with unar support and arj recommendation included and nonfree unace recommendation removed" arch=('i686' 'x86_64') url="http://www.ibiblio.org/mc/" license=('GPL') @@ -45,7 +45,23 @@ backup=('etc/mc/edit.indent.rc' 'etc/mc/mc.menu' 'etc/mc/sfs.ini') source=("http://www.midnight-commander.org/downloads/${_pkgname}-${pkgver}.tar.bz2" - "fs36962.diff") + "fs36962.diff" + "unar.in") + +prepare() { + cd "${srcdir}/${_pkgname}-${pkgver}" + + ## add unar support removing nonfree urar on the source + rm -v src/vfs/extfs/helpers/urar.in + install -m644 $srcdir/unar.in src/vfs/extfs/helpers + sed -i '\|rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null|d + s| unrar v -c-|unar| + ' misc/ext.d/archive.sh + sed -i 's|urar.in|unar.in|g' $(grep -rlI 'urar.in') + sed -i '\|src/vfs/extfs/helpers/urar| s|urar|unar|g + ' configure{,.ac} + sed -i 's|urar|unar|g' src/vfs/extfs/helpers/Makefile.{am,in} +} build() { cd "${srcdir}/${_pkgname}-${pkgver}" @@ -72,4 +88,5 @@ package() { } md5sums=('eb4bdc23abd4fdfa14911d53d65c8186' - '7f7cf5388a5390c2ed49965492f490aa') + '7f7cf5388a5390c2ed49965492f490aa' + 'f549a6c13ac0c3052986fcdc945648a9') diff --git a/libre/mc-libre/unar.in b/libre/mc-libre/unar.in new file mode 100644 index 000000000..3ba37b019 --- /dev/null +++ b/libre/mc-libre/unar.in @@ -0,0 +1,64 @@ +#! /bin/sh + +UNAR=`which unar 2>/dev/null` + +# Define $UNAR version +UNAR_VERSION=`$UNAR -v` + +mcunar4fs_list () +{ + $UNAR -q "$1" | @AWK@ -v uid=`id -u` -v gid=`id -g` ' +BEGIN { flag=0 } +/^-------/ { flag++; if (flag > 1) exit 0; next } +flag==1 { + str = substr($0, 2) + getline + split($4, a, "-") + if (index($6, "D") != 0) + $6="drwxr-xr-x" + else + if (index($6, ".") != 0) + $6="-rw-r--r--" + printf "%s 1 %s %s %d %02d/%02d/%02d %s ./%s\n", $6, uid, gid, $1, a[2], a[1], a[3], $5, str +}' +} + +mcunarfs_list () +{ + $UNAR -q "$1" | @AWK@ -v uid=`id -u` -v gid=`id -g` ' +BEGIN { flag=0 } +/^-----------/ { flag++; if (flag > 1) exit 0; next } +flag==1 { + split($5, a, "-") + if (index($1, "D") != 0) + $1="drwxr-xr-x" + else + if (index($1, ".") != 0) + $1="-rw-r--r--" + printf "%s 1 %s %s %d %02d/%02d/%02d %s ./%s\n", $1, uid, gid, $2, a[2], a[1], a[3], $6, $8 +}' +} + +mcunarfs_list () +{ + mcunarfs_list "$@" +} + +mcunarfs_copyout () +{ + $UNAR -q "$1" "$2" > "$3" +} + +umask 077 + +cmd="$1" +shift + +case "$cmd" in + # Workaround for a bug in mc - directories must precede files to + # avoid duplicate entries, so we sort output by filenames + list) mcunarfs_list "$@" | sort -k 8 ;; + copyout) mcunarfs_copyout "$@" ;; + *) exit 1 ;; +esac +exit 0 -- cgit v1.2.3