lslR.in 1022 B

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