]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - etc/rc.d/savecore
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / etc / rc.d / savecore
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
12 name="savecore"
13 start_cmd="savecore_start"
14 start_precmd="savecore_prestart"
15 stop_cmd=":"
16
17 savecore_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
52 savecore_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
75 load_rc_config $name
76 run_rc_command "$1"