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 dumpdev=`/bin/realpath /dev/dumpdev` 27 ;; 28 esac 29 30 # If there is no crash directory set it now 31 case ${dumpdir} in 32 '') 33 dumpdir='/var/crash' 34 ;; 35 [Nn][Oo]) 36 dumpdir='NO' 37 ;; 38 esac 39 40 if [ ! -c "${dumpdev}" ]; then 41 warn "Dump device does not exist. Savecore not run." 42 return 1 43 fi 44 45 if [ ! -d "${dumpdir}" ]; then 46 warn "Dump directory does not exist. Savecore not run." 47 return 1 48 fi 49 return 0 50} 51 52savecore_start() 53{ 54 local dev 55 56 case "${dumpdev}" in 57 [Aa][Uu][Tt][Oo]) 58 dev= 59 ;; 60 *) 61 dev="${dumpdev}" 62 ;; 63 esac 64 65 if savecore -C "${dumpdir}" "${dev}" >/dev/null; then 66 savecore ${savecore_flags} ${dumpdir} ${dumpdev} 67 if checkyesno crashinfo_enable; then 68 ${crashinfo_program} -d ${dumpdir} 69 fi 70 else 71 check_startmsgs && echo 'No core dumps found.' 72 fi 73} 74 75load_rc_config $name 76run_rc_command "$1" 77