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