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