summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/mc-libre/PKGBUILD25
-rw-r--r--libre/mc-libre/unar.in64
2 files changed, 85 insertions, 4 deletions
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