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