xref: /dragonfly/etc/rc.d/virecover (revision 2d8a3be7)
1#!/bin/sh
2#
3# $NetBSD: virecover,v 1.6 2002/03/22 04:34:00 thorpej Exp $
4# $FreeBSD: src/etc/rc.d/virecover,v 1.5 2003/05/05 09:53:32 mtm Exp $
5# $DragonFly: src/etc/rc.d/virecover,v 1.1 2003/07/24 06:35:37 dillon Exp $
6#
7
8# PROVIDE: virecover
9# REQUIRE: mountcritremote ldconfig
10# BEFORE:  DAEMON
11# KEYWORD: DragonFly FreeBSD NetBSD
12#
13# XXX: should require `mail'!
14
15. /etc/rc.subr
16
17name="virecover"
18stop_cmd=":"
19
20case ${OSTYPE} in
21DragonFly)
22	start_cmd="virecover_start"
23	;;
24FreeBSD)
25	start_cmd="virecover_start"
26	;;
27NetBSD)
28	command="/usr/libexec/${name}"
29	;;
30esac
31
32virecover_start()
33{
34	[ -d /var/tmp/vi.recover ] || return
35	find /var/tmp/vi.recover ! -type f -a ! -type d -delete
36	vibackup=`echo /var/tmp/vi.recover/vi.*`
37	if [ "${vibackup}" != '/var/tmp/vi.recover/vi.*' ]; then
38		echo -n 'Recovering vi editor sessions:'
39		for i in /var/tmp/vi.recover/vi.*; do
40			# Only test files that are readable.
41			if [ ! -r "${i}" ]; then
42				continue
43			fi
44
45			# Unmodified nvi editor backup files either have the
46			# execute bit set or are zero length.  Delete them.
47			if [ -x "${i}" -o ! -s "${i}" ]; then
48				rm -f "${i}"
49			fi
50		done
51
52		# It is possible to get incomplete recovery files, if the editor
53		# crashes at the right time.
54		virecovery=`echo /var/tmp/vi.recover/recover.*`
55		if [ "${virecovery}" != "/var/tmp/vi.recover/recover.*" ]; then
56			for i in /var/tmp/vi.recover/recover.*; do
57				# Only test files that are readable.
58				if [ ! -r "${i}" ]; then
59					continue
60				fi
61
62				# Delete any recovery files that are zero length,
63				# corrupted, or that have no corresponding backup file.
64				# Else send mail to the user.
65				recfile=`awk '/^X-vi-recover-path:/{print $2}' < "${i}"`
66				if [ -n "${recfile}" -a -s "${recfile}" ]; then
67					sendmail -t < "${i}"
68				else
69					rm -f "${i}"
70				fi
71			done
72		fi
73		echo '.'
74	fi
75}
76
77load_rc_config $name
78run_rc_command "$1"
79