old-awk expire for bsnews version 1.3
Ronald Florence
ron at mlfarm.com
Sun Jan 13 05:43:40 AEST 1991
The bsnews (Bootstrap News) package I posted to comp.sources.misc
includes an expire command which relies on features of nawk/gawk. I
received a number of requests for an old-awk version, including one
from Forrie Aldrich (morwyn!forrie), to whom return mail bounces.
The old-awk version is ugly, and gawk is widely available, but for
anyone who needs it, here is expire.oldawk:
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
# /u/src/bsnews/expire.oldawk
# This archive created: Mon Jan 7 17:52:21 1991
# By: Ronald Florence (Maple Lawn Farm, Stonington, CT)
export PATH; PATH=/bin:/usr/bin:$PATH
echo shar: "extracting 'expire.oldawk'" '(1754 characters)'
if test -f 'expire.oldawk'
then
echo shar: "will not over-write existing file 'expire.oldawk'"
else
sed 's/^X//' << \SHAR_EOF > 'expire.oldawk'
X:
X#! /bin/sh
X# expire - expires bsnews spool
X# copyright 1990 Ronald Florence
X# version 1.3 (ron at mlfarm.com, 21 Dec 90)
X#
X# A version for gawk or nawk would be cleaner; this is portable.
X
Xwhile [ $# -gt 0 ]
X do
X case $1 in
X -e|-E) shift;;
X *) exp=`expr $1 : "-*[eE]*\([0-9]*\)"`; break;;
X esac
X done
X[ -z "$exp" ] && { echo "usage: $0 days"; exit; }
X
XNewsspool=NEWSSPOOL
XTimestamp=`ls -l $Newsspool | awk '
X BEGIN {
X month["Jan"] = 1
X month["Feb"] = 2
X month["Mar"] = 3
X month["Apr"] = 4
X month["May"] = 5
X month["Jun"] = 6
X month["Jul"] = 7
X month["Aug"] = 8
X month["Sep"] = 9
X month["Oct"] = 10
X month["Nov"] = 11
X month["Dec"] = 12
X }
X { split($8, time, ":")
X printf "%02d%02d%02d%02d", month[$6], $7, time[1], time[2]
X }'`
XTmpspool=/tmp/expire.$$
Xtrap 'rm -f $Tmpspool' 1 2 3 15
X
Xawk '
XBEGIN {
X month["Jan"] = 1
X month["Feb"] = 2
X month["Mar"] = 3
X month["Apr"] = 4
X month["May"] = 5
X month["Jun"] = 6
X month["Jul"] = 7
X month["Aug"] = 8
X month["Sep"] = 9
X month["Oct"] = 10
X month["Nov"] = 11
X month["Dec"] = 12
X expired = 0
X expdays = '`echo $exp`'
X split ("'"`date`"'", now)
X split("31 28 31 30 31 30 31 31 30 31 30 31", days)
X n = (now[6] - 1901) * 365 + int((now[6] - 1901) / 4)
X if (now[6] % 4 == 0)
X days[2]++
X for (i = 1; i < month[now[2]]; i++)
X n += days[i]
X zap = n + now[3] - expdays
X}
X
X/^From / && expired == 0 {
X split("31 28 31 30 31 30 31 31 30 31 30 31", days)
X n = ($7 - 1901) * 365 + int(($7 - 1901) / 4)
X if ($7 % 4 == 0)
X days[2]++
X for (i = 1; i < month[$4]; i++)
X n += days[i]
X if (n + $5 > zap)
X expired = 1
X}
Xexpired == 1 { print $0 }
X' < $Newsspool > $Tmpspool
X
Xtouch $Timestamp $Newsspool
Xmv $Tmpspool $Newsspool
X
SHAR_EOF
if test 1754 -ne "`wc -c < 'expire.oldawk'`"
then
echo shar: "error transmitting 'expire.oldawk'" '(should have been 1754 characters)'
fi
fi
exit 0
# End of shell archive
--
Ronald Florence ron at mlfarm.com
More information about the Comp.sources.bugs
mailing list