10696600cSBjoern A. Zeeb#!/bin/sh 20696600cSBjoern A. Zeeb# 30696600cSBjoern A. Zeeb# $FreeBSD$ 40696600cSBjoern A. Zeeb# 50696600cSBjoern A. Zeeb 60696600cSBjoern A. Zeeb# PROVIDE: savecore 70696600cSBjoern A. Zeeb# REQUIRE: dumpon ddb syslogd 80696600cSBjoern A. Zeeb# KEYWORD: nojail 90696600cSBjoern A. Zeeb 100696600cSBjoern A. Zeeb. /etc/rc.subr 110696600cSBjoern A. Zeeb 120696600cSBjoern A. Zeebname="savecore" 130696600cSBjoern A. Zeebrcvar="savecore_enable" 140696600cSBjoern A. Zeebdesc="Save a core dump of the operating system" 150696600cSBjoern A. Zeebstart_cmd="savecore_start" 160696600cSBjoern A. Zeebstart_precmd="savecore_prestart" 170696600cSBjoern A. Zeebstop_cmd=":" 180696600cSBjoern A. Zeeb 190696600cSBjoern A. Zeebsavecore_prestart() 200696600cSBjoern A. Zeeb{ 210696600cSBjoern A. Zeeb # Quit if we have no dump device 220696600cSBjoern A. Zeeb case ${dumpdev} in 23*ccc806a0SEugene Grosbein [Nn][Oo]) 240696600cSBjoern A. Zeeb debug 'No dump device. Quitting.' 250696600cSBjoern A. Zeeb return 1 260696600cSBjoern A. Zeeb ;; 27*ccc806a0SEugene Grosbein [Aa][Uu][Tt][Oo] | '') 280696600cSBjoern A. Zeeb if [ ! -L /dev/dumpdev ]; then 290696600cSBjoern A. Zeeb return 1 300696600cSBjoern A. Zeeb fi 310696600cSBjoern A. Zeeb dumpdev=`/bin/realpath /dev/dumpdev` 320696600cSBjoern A. Zeeb ;; 330696600cSBjoern A. Zeeb esac 340696600cSBjoern A. Zeeb 350696600cSBjoern A. Zeeb # If there is no crash directory set it now 360696600cSBjoern A. Zeeb case ${dumpdir} in 370696600cSBjoern A. Zeeb '') 380696600cSBjoern A. Zeeb dumpdir='/var/crash' 390696600cSBjoern A. Zeeb ;; 400696600cSBjoern A. Zeeb [Nn][Oo]) 410696600cSBjoern A. Zeeb dumpdir='NO' 420696600cSBjoern A. Zeeb ;; 430696600cSBjoern A. Zeeb esac 440696600cSBjoern A. Zeeb 450696600cSBjoern A. Zeeb if [ ! -c "${dumpdev}" ]; then 460696600cSBjoern A. Zeeb warn "Dump device does not exist. Savecore not run." 470696600cSBjoern A. Zeeb return 1 480696600cSBjoern A. Zeeb fi 490696600cSBjoern A. Zeeb 500696600cSBjoern A. Zeeb if [ ! -d "${dumpdir}" ]; then 510696600cSBjoern A. Zeeb warn "Dump directory does not exist. Savecore not run." 520696600cSBjoern A. Zeeb return 1 530696600cSBjoern A. Zeeb fi 540696600cSBjoern A. Zeeb return 0 550696600cSBjoern A. Zeeb} 560696600cSBjoern A. Zeeb 570696600cSBjoern A. Zeebsavecore_start() 580696600cSBjoern A. Zeeb{ 590696600cSBjoern A. Zeeb local dev 600696600cSBjoern A. Zeeb 610696600cSBjoern A. Zeeb case "${dumpdev}" in 620696600cSBjoern A. Zeeb [Aa][Uu][Tt][Oo]) 630696600cSBjoern A. Zeeb dev= 640696600cSBjoern A. Zeeb ;; 650696600cSBjoern A. Zeeb *) 660696600cSBjoern A. Zeeb dev="${dumpdev}" 670696600cSBjoern A. Zeeb ;; 680696600cSBjoern A. Zeeb esac 690696600cSBjoern A. Zeeb 700696600cSBjoern A. Zeeb if savecore -C "${dev}" >/dev/null; then 710696600cSBjoern A. Zeeb savecore ${savecore_flags} ${dumpdir} ${dumpdev} 720696600cSBjoern A. Zeeb if checkyesno crashinfo_enable; then 730696600cSBjoern A. Zeeb ${crashinfo_program} -b -d ${dumpdir} 740696600cSBjoern A. Zeeb fi 750696600cSBjoern A. Zeeb sync 760696600cSBjoern A. Zeeb else 77325ebf37SJose Luis Duran startmsg 'No core dumps found.' 780696600cSBjoern A. Zeeb fi 790696600cSBjoern A. Zeeb} 800696600cSBjoern A. Zeeb 810696600cSBjoern A. Zeebload_rc_config $name 820696600cSBjoern A. Zeebrun_rc_command "$1" 83