]> git.pond.sub.org Git - empserver/blobdiff - scripts/savecore
client: Unbreak standalone build
[empserver] / scripts / savecore
index 9540da63c031e4a9cb88bd6b16da23751930d1ec..29142e98e88a0b8d6441c501393ffcaff1b8c416 100755 (executable)
@@ -1,6 +1,6 @@
 #!/bin/sh -e
 # Script to save core files, to be run from post_crash_dump_hook
-# Written by Markus Armbruster, 2008-2011
+# Written by Markus Armbruster, 2008-2012
 # This script is in the public domain.
 
 # Use: edit configuration variables below to taste, then set
@@ -18,7 +18,9 @@
 # How your system names core files
 #
 # This is a pattern rather than a name, because modern kernels can put
-# fancy stuff in the name we can't always predict.
+# fancy stuff in the name we can't always predict.  Modern user space
+# can squirrel away core dumps in fancy places; you may need to switch
+# that off for this insufficiently fancy script to work.
 core_pattern=core.*
 #core_pattern=emp_server.core
 #core_pattern=core
@@ -37,33 +39,36 @@ privlog=
 
 # Program to send mail
 mailx=mailx
-#mailx=mail
 
 # End of configuration
 
 saved=
+core_name=
 
 alert_deity ()
 {
-    local msg;
+    local msg
     if [ "$saved" ]
     then msg="Core dump $saved_core saved."
-    else msg="Could not save core dump."
+    elif [ "$core_name" ]
+    then msg="Could not save core dump $core_name."
+    else msg="Could not find core dump to save."
     fi
-    echo $msg | $mailx -s "emp_server dumped core in $PWD" "$privlog"
+    echo "$msg" | $mailx -s "emp_server dumped core in $PWD" "$privlog"
 }
 
 test -n "$privlog" && trap 'alert_deity' EXIT
 
-core_name=`ls -td $core_pattern | head -n 1`
+core_name=`ls -td $core_pattern 2>/dev/null | head -n 1`
 test -n "$core_name"
 test -r "$core_name"
 tstamp=`/bin/date +%Y-%m-%d-%H:%M`
 saved_core=$core_dir/core-$tstamp
 
+mkdir -p $core_dir
 if [ `df -kP $core_dir | awk 'NR!=1 { print $4 }'` -lt "$space_low" ]
-then rm -f $core_name; exit
+then rm -f "$core_name"; exit
 fi
 
-mv -f $core_name $saved_core
+mv -f "$core_name" $saved_core
 saved=y