lslR.in 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. *.lzma) MYCAT="lzma -dc";;
  13. *.bz2) MYCAT="bzip2 -dc";;
  14. *.gz) MYCAT="gzip -dc";;
  15. *.z) MYCAT="gzip -dc";;
  16. *.Z) MYCAT="gzip -dc";;
  17. *) MYCAT="cat";;
  18. esac
  19. $MYCAT "$1" | $AWK '
  20. BEGIN {
  21. dir="";
  22. # Pattern to match 8 first fields.
  23. rx = "[^ ]+[ ]+";
  24. rx = "^" rx rx rx rx rx rx rx rx;
  25. }
  26. /^total\ [0-9]*$/ { next }
  27. /^$/ { next }
  28. /^[^ ].*:$/ {
  29. if ($0 ~ /^\//) dir=substr($0, 2);
  30. else dir=$0;
  31. if (dir ~ /\/:$/) sub(/:$/, "", dir);
  32. else sub(/:$/, "/", dir);
  33. next;
  34. }
  35. ( $9 != "" ) {
  36. # gensub() is not portable.
  37. name=$0
  38. sub(rx, "", name)
  39. # Cannot assign to $9, or spaces in the filename would be reduced.
  40. attr=substr($0, 1, length($0)-length(name))
  41. printf "%s%s%s\n", attr, dir, name
  42. }'
  43. }
  44. case "$1" in
  45. list) mclslRfs_list "$2"; exit 0;;
  46. esac
  47. exit 1