1#!/bin/sh 2# 3# $FreeBSD$ 4# 5 6# PROVIDE: savecore 7# REQUIRE: dumpon ddb syslogd 8# KEYWORD: nojail 9 10. /etc/rc.subr 11 12name="savecore" 13start_cmd="savecore_start" 14start_precmd="savecore_prestart" 15stop_cmd=":" 16 17savecore_prestart() 18{ 19 # Quit if we have no dump device 20 case ${dumpdev} in 21 [Nn][Oo] | '') 22 debug 'No dump device. Quitting.' 23 return 1 24 ;; 25 [Aa][Uu][Tt][Oo]) 26 if [ ! -L /dev/dumpdev ]; then 27 return 1 28 fi 29 dumpdev=`/bin/realpath /dev/dumpdev` 30 ;; 31 esac 32 33 # If there is no crash directory set it now 34 case ${dumpdir} in 35 '') 36 dumpdir='/var/crash' 37 ;; 38 [Nn][Oo]) 39 dumpdir='NO' 40 ;; 41 esac 42 43 if [ ! -c "${dumpdev}" ]; then 44 warn "Dump device does not exist. Savecore not run." 45 return 1 46 fi 47 48 if [ ! -d "${dumpdir}" ]; then 49 warn "Dump directory does not exist. Savecore not run." 50 return 1 51 fi 52 return 0 53} 54 55savecore_start() 56{ 57 local dev 58 59 case "${dumpdev}" in 60 [Aa][Uu][Tt][Oo]) 61 dev= 62 ;; 63 *) 64 dev="${dumpdev}" 65 ;; 66 esac 67 68 if savecore -C "${dev}" >/dev/null; then 69 savecore ${savecore_flags} ${dumpdir} ${dumpdev} 70 if checkyesno crashinfo_enable; then 71 ${crashinfo_program} -d ${dumpdir} 72 fi 73 sync 74 else 75 check_startmsgs && echo 'No core dumps found.' 76 fi 77} 78 79load_rc_config $name 80run_rc_command "$1" 81