home *** CD-ROM | disk | FTP | other *** search
/ Unix System Administration Handbook 1997 October / usah_oct97.iso / news / cnews.tar / maint / logroll < prev    next >
Text File  |  1994-08-17  |  2KB  |  98 lines

  1. #! /bin/sh
  2. # logroll - roll over log files
  3.  
  4. # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  5. . ${NEWSCONFIG-/etc/news/bin/config}
  6.  
  7. PATH=$NEWSCTL/bin:$NEWSBIN/maint:$NEWSBIN:$NEWSPATH ; export PATH
  8. umask $NEWSUMASK
  9.  
  10. suffixes=".9 .8 .7 .6 .5 .4 .3 .2 .1"
  11. initial=
  12. delete=
  13. compat='.3'
  14. defcompat="$compat"
  15. compress="compress -f"
  16. comped='.Z'
  17. notify='sleep 5'
  18.  
  19. for dummy
  20. do
  21.     case "$1" in
  22.     -o)    suffixes=".ooo .oo .o"
  23.         if test " $compat" = " $defcompat"
  24.         then
  25.             compat='.oo'
  26.         fi
  27.         ;;
  28.     -s)    suffixes="$2" ; shift    ;;
  29.     -i)    initial="$2" ; shift    ;;
  30.     -d)    delete="$2" ; shift    ;;
  31.     -c)    compat="$2" ; shift    ;;
  32.     -n)    notify="$2" ; shift    ;;
  33.     -w)    compress="$2" ; shift    ;;
  34.     -z)    comped="$2" ; shift    ;;
  35.     -p)    compress=":" ; comped=    ;;
  36.     --)    shift ; break        ;;
  37.     -*)    echo "$0: unknown option \`$1'" >&2 ; exit 2    ;;
  38.     *)    break            ;;
  39.     esac
  40.     shift
  41. done
  42.  
  43. sufs=
  44. sawdel=n
  45. for s in $suffixes
  46. do
  47.     # default -d is final suffix
  48.     if test " $delete" = " "
  49.     then
  50.         delete="$s"
  51.     fi
  52.     # turn on accumulation of sufs at $delete
  53.     if test " $s" = " $delete"
  54.     then
  55.         sawdel=y
  56.     fi
  57.     # do accumulation
  58.     if test " $sawdel" = " y"
  59.     then
  60.         sufs="$sufs $s"
  61.     fi
  62. done
  63. if test " $sufs" = " "
  64. then
  65.     echo "$0: \`$delete' not in suffix sequence" >&2
  66.     exit 1
  67. fi
  68.  
  69. for f
  70. do
  71.     last=oops
  72.     comp="$comped"
  73.     for s in $sufs "$initial"
  74.     do
  75.         case "$s" in
  76.         "$delete")    rm -f $f$s$comp    ;;
  77.         *)    if test -f $f$s$comp
  78.             then
  79.                 mv $f$s$comp $f$last$comp || exit 1
  80.                 if test " $s" = " $initial"
  81.                 then
  82.                     touch $f$s$comp || exit 1
  83.                     eval $notify
  84.                 fi
  85.                 if test " $last" = " $compat"
  86.                 then
  87.                     eval $compress $f$last || exit 1
  88.                 fi
  89.             fi
  90.             ;;
  91.         esac
  92.         last="$s"
  93.         case "$s" in
  94.         "$compat")    comp=        ;;
  95.         esac
  96.     done
  97. done
  98.