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