#! /bin/sh # Based on previous version of lslR # Modified by Tomas Novak 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";; *.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