# @(#)agefile 1.2 /sccs/src/cmd/sadmin/shell/s.agefile # age files by moving to older and older names (agefile) #! chmod +x ${file} cmd=$0 defaultcycles=4 header= pack= set -- `getopt c:fhp $*` || exec ${cmd} while [ -n "$1" ] do case $1 in -c ) shift defaultcycles=$1 shift ;; -f ) # Take arguments from file name. # Lines that start with # are comments. shift shift # get rid of -- introduced by getopt cat $* | grep -v '^#' | xargs ${cmd} -c${defaultcycles} ${headflag} ${packflag} -- exit ;; -h ) header=all headflag=$1 shift ;; -p ) pack=all packflag=$1 shift ;; -- ) shift break esac done if [ $# = 0 ] then echo >&2 "Usage: ${cmd} [ -c <cycles> ] [ -p ] [ -h ] file ... ${cmd} [ -c <cycles> ] [ -p ] [ -h ] -f file ..." exit 1 fi umask 000 for file do if [ -n "${headflag}" ] then header=yes fi if [ -n "${packflag}" ] then pack=.z fi case ${file} in -c[0-9]* ) nextcycle=`expr ${file} : '-c\(.*\)'` continue ;; -p ) pack=.z continue ;; -h ) header=yes continue esac if [ -n "${nextcycle}" ] then cycles=${nextcycle} lastcycle=${nextcycle} nextcycle= else cycles=${defaultcycles} lastcycle=${defaultcycles} fi if [ ! -f ${file} ] then echo >&2 "${cmd}: No file '${file}'" continue fi basename=`basename ${file}` while [ ${cycles} -gt 1 ] do prev=`expr ${cycles} - 1` if [ `expr ${basename}-${cycles}${pack} : '.*'` -gt 14 ] then echo >&2 "${cmd}: filename too long '${file}-${cycles}${pack}'" cycles=${prev} continue fi if [ ${cycles} = ${lastcycle} ] then rm -f ${file}-${cycles} ${file}-${cycles}.z fi if [ -f ${file}-${prev}.z ] then mv -f ${file}-${prev}.z ${file}-${cycles}.z elif [ -f ${file}-${prev} ] then mv -f ${file}-${prev} ${file}-${cycles} fi cycles=${prev} done mv -f ${file} ${file}-1 if [ -n "${pack}" ] then pack ${file}-1 >/dev/null 2>&1 pack= fi >> ${file} if [ ${header} ] then (date; echo ============================) >> ${file} header= fi done