178344Sobrien#!/bin/sh
278344Sobrien#
398184Sgordon# $FreeBSD$
478344Sobrien#
578344Sobrien
678344Sobrien# PROVIDE: savecore
7208307Sdougb# REQUIRE: dumpon ddb syslogd
8136224Smtm# KEYWORD: nojail
978344Sobrien
1078344Sobrien. /etc/rc.subr
1178344Sobrien
1278344Sobrienname="savecore"
1378344Sobrienstart_cmd="savecore_start"
1498184Sgordonstart_precmd="savecore_prestart"
1578344Sobrienstop_cmd=":"
1678344Sobrien
1798184Sgordonsavecore_prestart()
1878344Sobrien{
19124622Smtm	# Quit if we have no dump device
20124622Smtm	case ${dumpdev} in
21124622Smtm	[Nn][Oo] | '')
22124622Smtm		debug 'No dump device. Quitting.'
23124622Smtm		return 1
24124622Smtm		;;
25136684Sthomas	[Aa][Uu][Tt][Oo])
26136901Sdes		dumpdev=`/bin/realpath /dev/dumpdev`
27136684Sthomas		;;
28124622Smtm	esac
2998184Sgordon
30124622Smtm	# If there is no crash directory set it now
31124622Smtm	case ${dumpdir} in
32124622Smtm	'')
33124622Smtm		dumpdir='/var/crash'
3498184Sgordon		;;
35124622Smtm	[Nn][Oo])
36124622Smtm		dumpdir='NO'
3798184Sgordon		;;
3898184Sgordon	esac
39124622Smtm
40136901Sdes	if [ ! -c "${dumpdev}" ]; then
41136901Sdes		warn "Dump device does not exist.  Savecore not run."
42124622Smtm		return 1
43124622Smtm	fi
44136901Sdes
45136901Sdes	if [ ! -d "${dumpdir}" ]; then
46136901Sdes		warn "Dump directory does not exist.  Savecore not run."
47136901Sdes		return 1
48136901Sdes	fi
4998184Sgordon	return 0
5098184Sgordon}
5198184Sgordon
5298184Sgordonsavecore_start()
5398184Sgordon{
54180317Smtm	local dev
55180317Smtm
56180317Smtm	case "${dumpdev}" in
57180317Smtm	[Aa][Uu][Tt][Oo])
58180317Smtm		dev=
59180317Smtm		;;
60180317Smtm	*)
61180317Smtm		dev="${dumpdev}"
62180317Smtm		;;
63180317Smtm	esac
64180317Smtm
65180317Smtm	if savecore -C "${dumpdir}" "${dev}" >/dev/null; then
66180318Smtm		savecore ${savecore_flags} ${dumpdir} ${dumpdev}
67182460Sjhb		if checkyesno crashinfo_enable; then
68182460Sjhb			${crashinfo_program} -d ${dumpdir}
69182460Sjhb		fi
70179962Smtm	else
71197947Sdougb		check_startmsgs && echo 'No core dumps found.'
72179962Smtm	fi
7378344Sobrien}
7478344Sobrien
7578344Sobrienload_rc_config $name
7678344Sobrienrun_rc_command "$1"
77