savecore revision 180318
178344Sobrien#!/bin/sh
278344Sobrien#
398184Sgordon# $FreeBSD: head/etc/rc.d/savecore 180318 2008-07-06 08:31:29Z mtm $
478344Sobrien#
578344Sobrien
678344Sobrien# PROVIDE: savecore
778344Sobrien# REQUIRE: syslogd
898184Sgordon# BEFORE:  SERVERS
9136224Smtm# KEYWORD: nojail
1078344Sobrien
1178344Sobrien. /etc/rc.subr
1278344Sobrien
1378344Sobrienname="savecore"
1478344Sobrienstart_cmd="savecore_start"
1598184Sgordonstart_precmd="savecore_prestart"
1678344Sobrienstop_cmd=":"
1778344Sobrien
1898184Sgordonsavecore_prestart()
1978344Sobrien{
20124622Smtm	# Quit if we have no dump device
21124622Smtm	case ${dumpdev} in
22124622Smtm	[Nn][Oo] | '')
23124622Smtm		debug 'No dump device. Quitting.'
24124622Smtm		return 1
25124622Smtm		;;
26136684Sthomas	[Aa][Uu][Tt][Oo])
27136901Sdes		dumpdev=`/bin/realpath /dev/dumpdev`
28136684Sthomas		;;
29124622Smtm	esac
3098184Sgordon
31124622Smtm	# If there is no crash directory set it now
32124622Smtm	case ${dumpdir} in
33124622Smtm	'')
34124622Smtm		dumpdir='/var/crash'
3598184Sgordon		;;
36124622Smtm	[Nn][Oo])
37124622Smtm		dumpdir='NO'
3898184Sgordon		;;
3998184Sgordon	esac
40124622Smtm
41136901Sdes	if [ ! -c "${dumpdev}" ]; then
42136901Sdes		warn "Dump device does not exist.  Savecore not run."
43124622Smtm		return 1
44124622Smtm	fi
45136901Sdes
46136901Sdes	if [ ! -d "${dumpdir}" ]; then
47136901Sdes		warn "Dump directory does not exist.  Savecore not run."
48136901Sdes		return 1
49136901Sdes	fi
5098184Sgordon	return 0
5198184Sgordon}
5298184Sgordon
5398184Sgordonsavecore_start()
5498184Sgordon{
55180317Smtm	local dev
56180317Smtm
57180317Smtm	case "${dumpdev}" in
58180317Smtm	[Aa][Uu][Tt][Oo])
59180317Smtm		dev=
60180317Smtm		;;
61180317Smtm	*)
62180317Smtm		dev="${dumpdev}"
63180317Smtm		;;
64180317Smtm	esac
65180317Smtm
66180317Smtm	if savecore -C "${dumpdir}" "${dev}" >/dev/null; then
67180318Smtm		savecore ${savecore_flags} ${dumpdir} ${dumpdev}
68179962Smtm	else
69179962Smtm		[ -z "${rc_quiet}" ] && echo "No core dumps found"
70179962Smtm	fi
7178344Sobrien}
7278344Sobrien
7378344Sobrienload_rc_config $name
7478344Sobrienrun_rc_command "$1"
75