Bring RCNG in from 5.x and adjust config files and scripts accordingly.
[dragonfly.git] / etc / rc.d / virecover
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
17 name="virecover"
18 stop_cmd=":"
19
20 case ${OSTYPE} in
21 DragonFly)
22         start_cmd="virecover_start"
23         ;;
24 FreeBSD)
25         start_cmd="virecover_start"
26         ;;
27 NetBSD)
28         command="/usr/libexec/${name}"
29         ;;
30 esac
31
32 virecover_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
77 load_rc_config $name
78 run_rc_command "$1"