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