home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #31 / NN_1992_31.iso / lib / trn / filexp.sh < prev    next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  1992-03-25  |  980 b   |  40 lines

  1. #!/bin/sh
  2. : expand filename
  3. case $1 in
  4. ~/*|~)
  5.     /bin/echo $1 | /bin/sed "s|~|${HOME-$LOGDIR}|"
  6.     ;;
  7. ~*)
  8.     if /bin/test -f /bin/csh; then
  9.     /bin/csh -f -c "glob $1"
  10.     /bin/echo ""
  11.     else
  12.     name=`/bin/expr x$1 : '..\([^/]*\)'`
  13.     if /bin/test "" != ""; then
  14.          dir=` $name passwd 2>/dev/null | /bin/sed "s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/"'`
  15.     elif /bin/test "" != ""; then
  16.         dir=` passwd / | /bin/sed -n -e "/^${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" -e p -e q -e '}'`
  17.     fi
  18.     if /bin/test "$dir" = ""; then
  19.         dir=`/bin/sed </etc/passwd -n -e "/^${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'$'"/\1/" -e p -e q -e '}'`
  20.     fi
  21.     if /bin/test ! -d "$dir"; then
  22.         me=`basename $0`
  23.         /bin/echo "$me: can't locate home directory for: $name" >&2
  24.         exit 1
  25.     fi
  26.     case $1 in
  27.     */*)
  28.         /bin/echo $dir/`/bin/expr x$1 : '..[^/]*/\(.*\)'`
  29.         ;;
  30.     *)
  31.         /bin/echo $dir
  32.         ;;
  33.     esac
  34.     fi
  35.     ;;
  36. *)
  37.     /bin/echo $1
  38.     ;;
  39. esac
  40.