freebsd-src/etc/rc.d/virecover
Mike Makonnen 7361edc7a1 The vi(1) recovery script cannot send mail regarding interrupted
sessions if the mailer is dynamically linked. This happens because
on some systems the ldconfig script is run after the vi recovery
script.

I thought I had already fixed this with revision 1.5 of rc.d/ldconfig,
but apparently not. So, in addition I'm making ldconfig a requirement
of this script.

Approved by:	markm (mentor)(implicit)
PR: bin/51767
2003-05-05 09:53:32 +00:00

75 lines
1.7 KiB
Bash
Executable file

#!/bin/sh
#
# $NetBSD: virecover,v 1.6 2002/03/22 04:34:00 thorpej Exp $
# $FreeBSD$
#
# PROVIDE: virecover
# REQUIRE: mountcritremote ldconfig
# BEFORE: DAEMON
# KEYWORD: FreeBSD NetBSD
#
# XXX: should require `mail'!
. /etc/rc.subr
name="virecover"
stop_cmd=":"
case ${OSTYPE} in
FreeBSD)
start_cmd="virecover_start"
;;
NetBSD)
command="/usr/libexec/${name}"
;;
esac
virecover_start()
{
[ -d /var/tmp/vi.recover ] || return
find /var/tmp/vi.recover ! -type f -a ! -type d -delete
vibackup=`echo /var/tmp/vi.recover/vi.*`
if [ "${vibackup}" != '/var/tmp/vi.recover/vi.*' ]; then
echo -n 'Recovering vi editor sessions:'
for i in /var/tmp/vi.recover/vi.*; do
# Only test files that are readable.
if [ ! -r "${i}" ]; then
continue
fi
# Unmodified nvi editor backup files either have the
# execute bit set or are zero length. Delete them.
if [ -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 /var/tmp/vi.recover/recover.*; do
# Only test files that are readable.
if [ ! -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 [ -n "${recfile}" -a -s "${recfile}" ]; then
sendmail -t < "${i}"
else
rm -f "${i}"
fi
done
fi
echo '.'
fi
}
load_rc_config $name
run_rc_command "$1"