merged in lzma patch from mandriva
[midnight-commander.git] / vfs / extfs / lslR.in
blob67f5edbb3248ec4f19b6008b49f8877aa46e6750
1 #! /bin/sh
3 # Based on previous version of lslR
4 # Modified by Tomas Novak <tnovak@ipex.cz> April 2000
5 # (to allow spaces in filenames)
7 # It's assumed that lslR was generated in C locale.
8 LC_ALL=C
9 export LC_ALL=C
11 AWK=@AWK@
13 mclslRfs_list () {
14 case "$1" in
15 *.lzma) MYCAT="lzma -dc";;
16 *.bz2) MYCAT="bzip2 -dc";;
17 *.gz) MYCAT="gzip -dc";;
18 *.z) MYCAT="gzip -dc";;
19 *.Z) MYCAT="gzip -dc";;
20 *) MYCAT="cat";;
21 esac
23 $MYCAT "$1" | $AWK '
24 BEGIN {
25 dir="";
26 # Pattern to match 8 first fields.
27 rx = "[^ ]+[ ]+";
28 rx = "^" rx rx rx rx rx rx rx rx;
30 /^total\ [0-9]*$/ { next }
31 /^$/ { next }
32 /^[^ ].*:$/ {
33 if ($0 ~ /^\//) dir=substr($0, 2);
34 else dir=$0;
35 if (dir ~ /\/:$/) sub(/:$/, "", dir);
36 else sub(/:$/, "/", dir);
37 next;
39 ( $9 != "" ) {
40 # gensub() is not portable.
41 name=$0
42 sub(rx, "", name)
43 # Cannot assign to $9, or spaces in the filename would be reduced.
44 attr=substr($0, 1, length($0)-length(name))
45 printf "%s%s%s\n", attr, dir, name
46 }'
49 case "$1" in
50 list) mclslRfs_list "$2"; exit 0;;
51 esac
52 exit 1