178344Sobrien#!/bin/sh 278344Sobrien# 398184Sgordon# $FreeBSD: releng/10.3/etc/rc.d/virecover 230099 2012-01-14 02:18:41Z dougb $ 478344Sobrien# 578344Sobrien 678344Sobrien# PROVIDE: virecover 7114726Smtm# REQUIRE: mountcritremote ldconfig 898184Sgordon# BEFORE: DAEMON 978344Sobrien# 1078344Sobrien# XXX: should require `mail'! 1178344Sobrien 1278344Sobrien. /etc/rc.subr 1378344Sobrien 1478344Sobrienname="virecover" 15230099Sdougbrcvar="virecover_enable" 1678344Sobrienstop_cmd=":" 17124622Smtmstart_cmd="virecover_start" 1878344Sobrien 1978344Sobrienvirecover_start() 2078344Sobrien{ 21111210Sdougb [ -d /var/tmp/vi.recover ] || return 2298184Sgordon find /var/tmp/vi.recover ! -type f -a ! -type d -delete 2398184Sgordon vibackup=`echo /var/tmp/vi.recover/vi.*` 2498184Sgordon if [ "${vibackup}" != '/var/tmp/vi.recover/vi.*' ]; then 2598184Sgordon echo -n 'Recovering vi editor sessions:' 2698184Sgordon for i in /var/tmp/vi.recover/vi.*; do 2798184Sgordon # Only test files that are readable. 2898184Sgordon if [ ! -r "${i}" ]; then 2998184Sgordon continue 3098184Sgordon fi 3198184Sgordon 3298184Sgordon # Unmodified nvi editor backup files either have the 3398184Sgordon # execute bit set or are zero length. Delete them. 3498184Sgordon if [ -x "${i}" -o ! -s "${i}" ]; then 3598184Sgordon rm -f "${i}" 3698184Sgordon fi 3778344Sobrien done 3898184Sgordon 3998184Sgordon # It is possible to get incomplete recovery files, if the editor 4098184Sgordon # crashes at the right time. 4198184Sgordon virecovery=`echo /var/tmp/vi.recover/recover.*` 4298184Sgordon if [ "${virecovery}" != "/var/tmp/vi.recover/recover.*" ]; then 4398184Sgordon for i in /var/tmp/vi.recover/recover.*; do 4498184Sgordon # Only test files that are readable. 4598184Sgordon if [ ! -r "${i}" ]; then 4698184Sgordon continue 4798184Sgordon fi 4898184Sgordon 4998184Sgordon # Delete any recovery files that are zero length, 5098184Sgordon # corrupted, or that have no corresponding backup file. 5198184Sgordon # Else send mail to the user. 5298184Sgordon recfile=`awk '/^X-vi-recover-path:/{print $2}' < "${i}"` 5398184Sgordon if [ -n "${recfile}" -a -s "${recfile}" ]; then 5498184Sgordon sendmail -t < "${i}" 5598184Sgordon else 5698184Sgordon rm -f "${i}" 5798184Sgordon fi 5898184Sgordon done 5998184Sgordon fi 6098184Sgordon echo '.' 6178344Sobrien fi 6278344Sobrien} 6378344Sobrien 6478344Sobrienload_rc_config $name 6578344Sobrienrun_rc_command "$1" 66