Unlink the PID file when terminating.
[doldaconnect.git] / daemon / main.c
index 299fd0d..20aee80 100644 (file)
@@ -371,17 +371,17 @@ int main(int argc, char **argv)
     char *configfile;
     char *pidfile;
     FILE *pfstream, *confstream;
-    int delay;
+    int delay, immsyslog;
     struct module *mod;
     struct timer *timer, *ntimer;
     struct child *child;
     double now;
     
-    nofork = 0;
+    immsyslog = nofork = 0;
     syslogfac = LOG_DAEMON;
     configfile = NULL;
     pidfile = NULL;
-    while((c = getopt(argc, argv, "p:C:f:hn")) != -1)
+    while((c = getopt(argc, argv, "p:C:f:hns")) != -1)
     {
        switch(c)
        {
@@ -424,16 +424,24 @@ int main(int argc, char **argv)
        case 'n':
            nofork = 1;
            break;
+       case 's':
+           immsyslog = 1;
+           break;
        case 'h':
        case ':':
        case '?':
        default:
-           printf("usage: doldacond [-hn] [-C configfile] [-p pidfile] [-f facility]\n");
+           printf("usage: doldacond [-hns] [-C configfile] [-p pidfile] [-f facility]\n");
            exit(c != 'h');
        }
     }
     setlocale(LC_ALL, "");
     initlog();
+    if(immsyslog)
+    {
+       logtosyslog = 1;
+       logtostderr = 0;
+    }
     signal(SIGPIPE, SIG_IGN);
     signal(SIGHUP, handler);
     signal(SIGINT, handler);
@@ -554,5 +562,7 @@ int main(int argc, char **argv)
     }
     flog(LOG_INFO, "terminating...");
     terminate();
+    if(pidfile != NULL)
+       unlink(pidfile);
     return(0);
 }