mc/mc-extfs-helpers-urar.patch

47 lines
1.3 KiB
Diff
Raw Normal View History

--- src/vfs/extfs/helpers/urar.in.orig 2013-11-12 18:27:16.000000000 +0100
+++ src/vfs/extfs/helpers/urar.in 2013-11-12 19:05:31.000000000 +0100
@@ -42,14 +42,35 @@
$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)
- $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
+flag == 1 {
+ name="";
+
+ ### split line and save seperators in 'seps'
+ split($0, fields, " ", seps);
+ ### 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--";
+ }
+ }
+
+ ### join filename from fields 8 .. NR
+ for(i=8; i<=NR; i++) {
+ name=name fields[i] seps[i];
+ }
+ ### remove padding blanks from short names
+ if (length(name)<13) {
+ sub(" *$", "", name);
+ }
+
+ 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);
}'
}