GOPHERSPACE.DE - P H O X Y
gophering on sdf.org
# @(#)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  ] [ -p ] [ -h ] file ...
${cmd} [ -c  ] [ -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