diff options
Diffstat (limited to 'etc/rc.d/savecore')
-rwxr-xr-x | etc/rc.d/savecore | 62 |
1 files changed, 53 insertions, 9 deletions
diff --git a/etc/rc.d/savecore b/etc/rc.d/savecore index 5b6e115..21a6a4b 100755 --- a/etc/rc.d/savecore +++ b/etc/rc.d/savecore @@ -1,29 +1,73 @@ #!/bin/sh # -# $NetBSD: savecore,v 1.2 2000/05/13 08:45:09 lukem Exp $ +# $NetBSD: savecore,v 1.5 2002/03/22 04:34:00 thorpej Exp $ +# $FreeBSD$ # # PROVIDE: savecore # REQUIRE: syslogd +# BEFORE: SERVERS +# KEYWORD: FreeBSD NetBSD . /etc/rc.subr name="savecore" -rcvar=$name start_cmd="savecore_start" +start_precmd="savecore_prestart" stop_cmd=":" -savecore_start() +case `${CMD_OSTYPE}` in +NetBSD) + rcvar=$name + ;; +esac + +savecore_prestart() { - # /var/crash should be a directory or a symbolic link + # ${DUMPDIR} should be a directory or a symbolic link # to the crash directory if core dumps are to be saved. # - if [ -d /var/crash/. ]; then + DUMPDIR="${dumpdir:-/var/crash}" + + case `${CMD_OSTYPE}` in + FreeBSD) + # Quit if we have no dump device + case ${dumpdev} in + [Nn][Oo] | '') + debug 'No dump device. Quitting.' + return 1 + ;; + esac + + # If there is no crash directory set it now + case ${dumpdir} in + '') + dumpdir='/var/crash' + ;; + [Nn][Oo]) + dumpdir='NO' + ;; + esac + + if [ ! -e "${dumpdev}" -o ! -d "${dumpdir}" ]; then + warn "Wrong dump device or directory. Savecore not run." + return 1 + fi + ;; + NetBSD) + if [ ! -d "${dumpdir}" ]; then + warn "No /var/crash directory; savecore not run." + return 1 + fi + ;; + esac + return 0 +} + +savecore_start() +{ echo "Checking for core dump..." - savecore $savecore_flags /var/crash - else - warn "No /var/crash directory; savecore not run." - fi + savecore ${savecore_flags} ${DUMPDIR} } load_rc_config $name |