#! /bin/sh

# Based on previous version of lslR
# Modified by Tomas Novak <tnovak@ipex.cz>   April 2000
#   (to allow spaces in filenames)

ZCAT="gunzip -c"
CAT="cat"

mclslRfs_list () {
case "$1" in
  *.gz) MYCAT="$ZCAT";;
  *.z)  MYCAT="$ZCAT";;
  *.Z)  MYCAT="$ZCAT";;
  *)	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
}' 2>/dev/null
}

case "$1" in
  list) mclslRfs_list "$2"; exit 0;;
esac
exit 1
