Update copyrights, links, email addresses and let Subversion update $Id$ keywords.
[oweals/tinc.git] / src / process.c
index a5abc9364a559b5fee5bb19ed1c264765967da86..c1dd2d0f3606c25b909093165f39a2580d0ff9eb 100644 (file)
@@ -1,7 +1,7 @@
 /*
     process.c -- process management functions
-    Copyright (C) 1999-2003 Ivo Timmermans <ivo@o2w.nl>,
-                  2000-2003 Guus Sliepen <guus@sliepen.eu.org>
+    Copyright (C) 1999-2004 Ivo Timmermans <ivo@tinc-vpn.org>,
+                  2000-2004 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id: process.c,v 1.1.2.76 2003/10/06 16:13:08 guus Exp $
+    $Id$
 */
 
 #include "system.h"
@@ -257,8 +257,10 @@ static bool write_pidfile(void)
        }
 
        /* if it's locked, write-protected, or whatever */
-       if(!write_pid(pidfilename))
+       if(!write_pid(pidfilename)) {
+               fprintf(stderr, _("Could write pid file %s: %s\n"), pidfilename, strerror(errno));
                return false;
+       }
 
        return true;
 }
@@ -335,8 +337,10 @@ bool detach(void)
 
                /* Now UPDATE the pid in the pidfile, because we changed it... */
 
-               if(!write_pid(pidfilename))
+               if(!write_pid(pidfilename)) {
+                       fprintf(stderr, _("Could not write pid file %s: %s\n"), pidfilename, strerror(errno));
                        return false;
+               }
 #else
                if(!statushandle)
                        exit(install_service());
@@ -427,13 +431,19 @@ bool execute_script(const char *name, char **envp)
 static RETSIGTYPE sigterm_handler(int a)
 {
        logger(LOG_NOTICE, _("Got %s signal"), "TERM");
-       running = false;
+       if(running)
+               running = false;
+       else
+               exit(1);
 }
 
 static RETSIGTYPE sigquit_handler(int a)
 {
        logger(LOG_NOTICE, _("Got %s signal"), "QUIT");
-       running = false;
+       if(running)
+               running = false;
+       else
+               exit(1);
 }
 
 static RETSIGTYPE fatal_signal_square(int a)