home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / news / cnews.tar / util / lock < prev    next >
Text File  |  1995-04-27  |  1KB  |  61 lines

  1. #! /bin/sh
  2. # lock - lock the news system
  3.  
  4. # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  5. . ${NEWSCONFIG-/etc/news/bin/config}
  6.  
  7. PATH=$NEWSCTL/bin:$NEWSBIN:$NEWSPATH ; export PATH
  8. umask $NEWSUMASK
  9.  
  10. usage="Usage: $0 [-o] [-v] lockname pid [sleeptime]"
  11. persist=y
  12. verbose=n
  13. for arg
  14. do
  15.     case "$1" in
  16.     -o)    persist=n    ;;
  17.     -v)    verbose=y    ;;
  18.     --)    shift ; break    ;;
  19.     -*)    echo "$usage" >&2 ; exit 2    ;;
  20.     *)    break        ;;
  21.     esac
  22.     shift
  23. done
  24. case "$#" in
  25. 2)    sleep=30    ;;
  26. 3)    sleep="$3"    ;;
  27. *)    echo "$usage" >&2 ; exit 2    ;;
  28. esac
  29.  
  30. case "$1" in
  31. */*)    lock=$1 ; ltemp=$1.$$    ;;
  32. *)    lock=$NEWSCTL/$1 ; ltemp=$NEWSCTL/L.$$    ;;
  33. esac
  34. pid="$2"
  35.  
  36. status=1
  37. trap 'rm -f $ltemp ; trap 0 ; exit $status' 0 1 2 15
  38. echo "$pid" >$ltemp || exit 1
  39. while :
  40. do
  41.     if newslock $ltemp $lock
  42.     then
  43.         status=0
  44.         touch $lock        # make the date current
  45.         exit
  46.     elif test ! -f $ltemp
  47.     then
  48.         echo "$0: \`$ltemp' disappeared!!" >&2
  49.         exit
  50.     elif test " $persist" = " n"
  51.     then
  52.         exit
  53.     fi
  54.  
  55.     if test " $verbose" = " y"
  56.     then
  57.         echo 'news system locked, waiting...'
  58.     fi
  59.     sleep $sleep
  60. done
  61.