savecore revision 179962
178344Sobrien#!/bin/sh
278344Sobrien#
398184Sgordon# $FreeBSD: head/etc/rc.d/savecore 179962 2008-06-23 20:54:32Z 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{
2098184Sgordon	#	${DUMPDIR} should be a directory or a symbolic link
2178344Sobrien	#	to the crash directory if core dumps are to be saved.
2278344Sobrien	#
2398184Sgordon	DUMPDIR="${dumpdir:-/var/crash}"
2498184Sgordon
25124622Smtm	# Quit if we have no dump device
26124622Smtm	case ${dumpdev} in
27124622Smtm	[Nn][Oo] | '')
28124622Smtm		debug 'No dump device. Quitting.'
29124622Smtm		return 1
30124622Smtm		;;
31136684Sthomas	[Aa][Uu][Tt][Oo])
32136901Sdes		dumpdev=`/bin/realpath /dev/dumpdev`
33136684Sthomas		;;
34124622Smtm	esac
3598184Sgordon
36124622Smtm	# If there is no crash directory set it now
37124622Smtm	case ${dumpdir} in
38124622Smtm	'')
39124622Smtm		dumpdir='/var/crash'
4098184Sgordon		;;
41124622Smtm	[Nn][Oo])
42124622Smtm		dumpdir='NO'
4398184Sgordon		;;
4498184Sgordon	esac
45124622Smtm
46136901Sdes	if [ ! -c "${dumpdev}" ]; then
47136901Sdes		warn "Dump device does not exist.  Savecore not run."
48124622Smtm		return 1
49124622Smtm	fi
50136901Sdes
51136901Sdes	if [ ! -d "${dumpdir}" ]; then
52136901Sdes		warn "Dump directory does not exist.  Savecore not run."
53136901Sdes		return 1
54136901Sdes	fi
5598184Sgordon	return 0
5698184Sgordon}
5798184Sgordon
5898184Sgordonsavecore_start()
5998184Sgordon{
60179962Smtm	if savecore -C >/dev/null; then
61179962Smtm		savecore ${savecore_flags} ${DUMPDIR} ${dumpdev}
62179962Smtm	else
63179962Smtm		[ -z "${rc_quiet}" ] && echo "No core dumps found"
64179962Smtm	fi
6578344Sobrien}
6678344Sobrien
6778344Sobrienload_rc_config $name
6878344Sobrienrun_rc_command "$1"
69