diff src/emacs.c @ 14127:ebaba7107594

(main): In batch mode, don't handle SIGHUP if was ignored. Block it while we decide what to do.
author Karl Heuer <kwzh@gnu.org>
date Tue, 09 Jan 1996 23:38:34 +0000
parents d6f46c53f2aa
children 7acafb848e80
line wrap: on
line diff
--- a/src/emacs.c	Tue Jan 09 23:38:20 1996 +0000
+++ b/src/emacs.c	Tue Jan 09 23:38:34 1996 +0000
@@ -646,6 +646,22 @@
   init_signals ();
 #endif
 
+  /* Don't catch SIGHUP if dumping.  */
+  if (1
+#ifndef CANNOT_DUMP
+      && initialized
+#endif
+      )
+    {
+      sigblockx (SIGHUP);
+      /* In --batch mode, don't catch SIGHUP if already ignored.
+	 That makes nohup work.  */
+      if (! noninteractive
+	  || signal (SIGHUP, SIG_IGN) != SIG_IGN)
+	signal (SIGHUP, fatal_error_signal);
+      sigunblockx (SIGHUP);
+    }
+
   if (
 #ifndef CANNOT_DUMP
       ! noninteractive || initialized
@@ -654,10 +670,9 @@
 #endif
       )
     {
-      /* Don't catch these signals in batch mode if not initialized.
+      /* Don't catch these signals in batch mode if dumping.
 	 On some machines, this sets static data that would make
 	 signal fail to work right when the dumped Emacs is run.  */
-      signal (SIGHUP, fatal_error_signal);
       signal (SIGQUIT, fatal_error_signal);
       signal (SIGILL, fatal_error_signal);
       signal (SIGTRAP, fatal_error_signal);