#!/bin/sh # # $NetBSD: virecover,v 1.6 2002/03/22 04:34:00 thorpej Exp $ # $FreeBSD: src/etc/rc.d/virecover,v 1.5 2003/05/05 09:53:32 mtm Exp $ # $DragonFly: src/etc/rc.d/virecover,v 1.4 2005/11/19 21:47:32 swildner Exp $ # # PROVIDE: virecover # REQUIRE: mountcritremote ldconfig # BEFORE: DAEMON # # XXX: should require `mail'! . /etc/rc.subr name="virecover" stop_cmd=":" start_cmd="virecover_start" virecover_start() { if [ ! -d /var/tmp/vi.recover ]; then mkdir /var/tmp/vi.recover chown root:wheel /var/tmp/vi.recover chmod 1777 /var/tmp/vi.recover fi find /var/tmp/vi.recover ! -type f -a ! -type d -delete vibackup=`echo /var/tmp/vi.recover/vi.*` if [ "${vibackup}" != '/var/tmp/vi.recover/vi.*' ]; then echo -n 'Recovering vi editor sessions:' for i in /var/tmp/vi.recover/vi.*; do # Only test files that are readable. if [ ! -r "${i}" ]; then continue fi # Unmodified nvi editor backup files either have the # execute bit set or are zero length. Delete them. if [ -x "${i}" -o ! -s "${i}" ]; then rm -f "${i}" fi done # It is possible to get incomplete recovery files, if the editor # crashes at the right time. virecovery=`echo /var/tmp/vi.recover/recover.*` if [ "${virecovery}" != "/var/tmp/vi.recover/recover.*" ]; then for i in /var/tmp/vi.recover/recover.*; do # Only test files that are readable. if [ ! -r "${i}" ]; then continue fi # Delete any recovery files that are zero length, # corrupted, or that have no corresponding backup file. # Else send mail to the user. recfile=`awk '/^X-vi-recover-path:/{print $2}' < "${i}"` if [ -n "${recfile}" -a -s "${recfile}" ]; then sendmail -t < "${i}" else rm -f "${i}" fi done fi echo '.' fi } load_rc_config $name run_rc_command "$1"