From dc3c4beda0d5d48003239976135c2b6528a89b04018b1820e23b043a2b301192 Mon Sep 17 00:00:00 2001 From: Ruediger Oertel Date: Fri, 29 Nov 2013 13:47:33 +0000 Subject: [PATCH] Accepting request 208806 from home:dnh:branches:Base:System - Reimplementation of mcrar5fs_list in vfs/extfs/helpers/urar using 'unrar vt' fixing the "trailing space" problem with 'unrar [lv]' closing http://www.midnight-commander.org/ticket/3073 and bnc#849082 OBS-URL: https://build.opensuse.org/request/show/208806 OBS-URL: https://build.opensuse.org/package/show/Base:System/mc?expand=0&rev=78 --- mc-extfs-helpers-urar.patch | 109 ++++++++++++++++++++++++------------ mc.changes | 7 +++ mc.spec | 1 + 3 files changed, 80 insertions(+), 37 deletions(-) diff --git a/mc-extfs-helpers-urar.patch b/mc-extfs-helpers-urar.patch index d037542..366be1f 100644 --- a/mc-extfs-helpers-urar.patch +++ b/mc-extfs-helpers-urar.patch @@ -1,10 +1,25 @@ diff -urN -x '*~' mc-4.8.10.orig/src/vfs/extfs/helpers/urar.in mc-4.8.10/src/vfs/extfs/helpers/urar.in --- mc-4.8.10.orig/src/vfs/extfs/helpers/urar.in 2013-08-02 17:02:39.000000000 +0200 -+++ mc-4.8.10/src/vfs/extfs/helpers/urar.in 2013-11-25 23:10:36.000000000 +0100 -@@ -42,14 +42,43 @@ - $UNRAR v -c- -cfg- "$1" | @AWK@ -v uid=`id -u` -v gid=`id -g` ' - BEGIN { flag=0 } - /^-----------/ { flag++; if (flag > 1) exit 0; next } ++++ mc-4.8.10/src/vfs/extfs/helpers/urar.in 2013-11-28 07:14:54.000000000 +0100 +@@ -4,6 +4,11 @@ + # (C) 1996 2:5020/337.13@fidonet.org + # Updated by christian.gennerat@alcatel.fr 1999 + # Andrew V. Samoilov 2000 ++# ++# Andrew Borodin ++# David Haller ++# 2013: support unrar5 ++# + # beta version 2.0 + # + # rar and unrar can be found on http://www.rarlabs.com/ +@@ -39,18 +44,62 @@ + + mcrar5fs_list () + { +- $UNRAR v -c- -cfg- "$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) @@ -13,43 +28,63 @@ diff -urN -x '*~' mc-4.8.10.orig/src/vfs/extfs/helpers/urar.in mc-4.8.10/src/vfs - 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 -+flag == 1 { -+ name=""; delete fields; delete seps; +-}' ++ $UNRAR vt -c- -cfg- "$1" | @AWK@ -F ':' -v uid=`id -u` -v gid=`id -g` ' ++ { ++ ### remove space after the ":" of the field name ++ sub ("^ ", "", $2); ++ } + -+ ### split line, save n-fields and save seperators in "seps" -+ ### tested with busybox awk -+ nameparts = split($0, fields, " "); -+ split($0, seps, "[^ \t]+"); -+ sub("^ ", "", seps[8]); -+ -+ ### split date for reformatting -+ split(fields[5], date, "-"); -+ -+ ### check/adjust rights -+ if (index(fields[1], "D") != 0) { -+ fields[1] = "drwxr-xr-x"; -+ } else { -+ if (index(fields[1], ".") != 0) { -+ fields[1] = "-rw-r--r--"; ++ $1 ~ / *Name$/ { ++ ### next file ++ name = mtime = size = attrs = ""; ++ delete date; ++ name = $2; ++ ### if the name contains ":", append the rest of the fields ++ if (NF > 2) { ++ for (i = 3; i <= NF; i++) { ++ name = name ":" $i; ++ } + } + } -+ -+ ### join filename from fields 8 .. nameparts (saved above) -+ for(i = 8; i <= nameparts; i++) { -+ name=name seps[i] fields[i]; ++ $1 ~ /^ *mtime$/ { ++ mtime = $2 ":" $3; ++ } ++ $1 ~ /^ *Size$/ { ++ size = $2; ++ } ++ $1 ~ /^ *Attributes$/ { ++ attrs = $2; + } -+ name=name seps[i]; + -+# ### where did this come from? I say: if in doubt: pass on the -+# ### unrar bug to our users ... I leave this in for reference. -+# ### remove padding blanks from short names -+# if (length(name)<13) { -+# sub(" *$", "", name); -+# } ++ $1 ~ /^ *Compression$/ { ++ ### file done, using /^$/ is not so good you ++ ### would have to skip the version stuff first + -+ printf("%s 1 %s %s %d %02d/%02d/%02d %s ./%s\n", -+ fields[1], uid, gid, fields[2], date[2], -+ date[1], date[3], fields[6], name); - }' ++ ### get date and time ++ split (mtime, date, " "); ++ time = date[2]; ++ ### cut off seconds from the time ++ sub (",[0-9]*$", "", time); ++ ### split for reordering of the date in the printf below ++ split (date[1], date, "-"); ++ ### mc seems to be able to parse 4 digit years too, so remove if tested ++ # sub ("^..", "", date[1]); ### cut year to 2 digits only ++ ++ ### check/adjust rights ++ if (index (attrs, "D") != 0) { ++ attrs = "drwxr-xr-x"; ++ } else { ++ if (index (attrs, ".") != 0) { ++ attrs = "-rw-r--r--"; ++ } ++ } ++ ++ ### and finally ++ printf ("%s 1 %s %s %d %02d/%02d/%02d %s ./%s\n", ++ attrs, uid, gid, size, date[2], date[3], date[1], time, name); ++ } ++' } + mcrarfs_list () diff --git a/mc.changes b/mc.changes index 444a334..2da6dc5 100644 --- a/mc.changes +++ b/mc.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Nov 28 12:27:16 UTC 2013 - dnh@opensuse.org + +- Reimplementation of mcrar5fs_list in vfs/extfs/helpers/urar using + 'unrar vt' fixing the "trailing space" problem with 'unrar [lv]' + closing http://www.midnight-commander.org/ticket/3073 and bnc#849082 + ------------------------------------------------------------------- Mon Nov 25 22:45:29 UTC 2013 - dnh@opensuse.org diff --git a/mc.spec b/mc.spec index c616b8b..893d788 100644 --- a/mc.spec +++ b/mc.spec @@ -45,6 +45,7 @@ Patch21: mc-extfs-helpers-deb.patch # add mc-extfs-helpers-urar.patch (by dnh@opensuse.org) - Fix urar # extfs failing on files with spaces (bnc#849082). Forwarded to upstream. +# see http://www.midnight-commander.org/ticket/3073 Patch22: mc-extfs-helpers-urar.patch #debian fixes for vfs