1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #! /bin/sh
- # Based on previous version of lslR
- # Modified by Tomas Novak <tnovak@ipex.cz> April 2000
- # (to allow spaces in filenames)
- #
- # It's assumed that lslR was generated in C locale.
- LC_ALL=C
- export LC_ALL=C
- AWK=@AWK@
- mclslRfs_list () {
- case "$1" in
- *.lzma) MYCAT="lzma -dc";;
- *.xz) MYCAT="xz -dc";;
- *.bz2) MYCAT="bzip2 -dc";;
- *.gz) MYCAT="gzip -dc";;
- *.z) MYCAT="gzip -dc";;
- *.Z) MYCAT="gzip -dc";;
- *) MYCAT="cat";;
- esac
- $MYCAT "$1" | $AWK '
- BEGIN {
- dir="";
- # Pattern to match 8 first fields.
- rx = "[^ ]+[ ]+";
- rx = "^" rx rx rx rx rx rx rx rx;
- }
- /^total\ [0-9]*$/ { next }
- /^$/ { next }
- /^[^ ].*:$/ {
- if ($0 ~ /^\//) dir=substr($0, 2);
- else dir=$0;
- if (dir ~ /\/:$/) sub(/:$/, "", dir);
- else sub(/:$/, "/", dir);
- next;
- }
- ( $9 != "" ) {
- # gensub() is not portable.
- name=$0
- sub(rx, "", name)
- # Cannot assign to $9, or spaces in the filename would be reduced.
- attr=substr($0, 1, length($0)-length(name))
- printf "%s%s%s\n", attr, dir, name
- }'
- }
- case "$1" in
- list) mclslRfs_list "$2"; exit 0;;
- esac
- exit 1
|