summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>1996-11-01 09:45:51 +0000
committerpeter <peter@FreeBSD.org>1996-11-01 09:45:51 +0000
commit78f24241f239dd123b22744c5c01cfe274aa41da (patch)
tree5672e527be823c0d83697b293e7008820df2b27e /etc
parent633ae526c538f50204af23b165cb9f3de80a32fe (diff)
downloadFreeBSD-src-78f24241f239dd123b22744c5c01cfe274aa41da.zip
FreeBSD-src-78f24241f239dd123b22744c5c01cfe274aa41da.tar.gz
Update to use the recommended recovery procedure from nvi-1.76.
This is a lot more robust and handles errors a lot better. It also cleans up stray, hopeless, or unmodified files rather than leaving them there forever.
Diffstat (limited to 'etc')
-rw-r--r--etc/rc41
1 files changed, 36 insertions, 5 deletions
diff --git a/etc/rc b/etc/rc
index 0353293..a6ed4e9 100644
--- a/etc/rc
+++ b/etc/rc
@@ -1,5 +1,5 @@
#!/bin/sh
-# $Id: rc,v 1.102 1996/10/21 20:09:30 wpaul Exp $
+# $Id: rc,v 1.103 1996/10/28 08:28:02 joerg Exp $
# From: @(#)rc 5.27 (Berkeley) 6/5/91
# System startup script run by init on autoboot
@@ -341,12 +341,43 @@ if [ -f /etc/rc.${arch} ]; then
fi
# Recover vi editor files.
-virecovery=`echo /var/tmp/vi.recover/recover.*`
-if [ "$virecovery" != '/var/tmp/vi.recover/recover.*' ]; then
+vibackup=`echo /var/tmp/vi.recover/vi.*`
+if [ "$vibackup" != '/var/tmp/vi.recover/vi.*' ]; then
echo 'Recovering vi editor sessions'
- for i in $virecovery; do
- sendmail -t < $i
+ for i in $vibackup; do
+ # Only test files that are readable.
+ if test ! -r $i; then
+ continue
+ fi
+
+ # Unmodified nvi editor backup files either have the
+ # execute bit set or are zero length. Delete them.
+ if test -x $i -o ! -s $i; then
+ rm -f $i
+ fi
done
+
+ # It is possible to get incomplete recovery files, if the editor
+ # crashes at the right time.
+ virecovery=`echo /var/tmp/vi.recover/recover.*`
+ if [ "$virecovery" != "/var/tmp/vi.recover/recover.*" ]; then
+ for i in $virecovery; do
+ # Only test files that are readable.
+ if test ! -r $i; then
+ continue
+ fi
+
+ # Delete any recovery files that are zero length,
+ # corrupted, or that have no corresponding backup file.
+ # Else send mail to the user.
+ recfile=`awk '/^X-vi-recover-path:/{print $2}' < $i`
+ if test -n "$recfile" -a -s "$recfile"; then
+ sendmail -t < $i
+ else
+ rm -f $i
+ fi
+ done
+ fi
fi
# for each valid dir in $local_startup, search for init scripts matching *.sh
OpenPOWER on IntegriCloud