]> jfr.im git - irc/blitzed-org/bopm.git/commitdiff
src/config.c, src/extern.h:
authorandy <redacted>
Sun, 26 May 2002 06:26:31 +0000 (06:26 +0000)
committerandy <redacted>
Sun, 26 May 2002 06:26:31 +0000 (06:26 +0000)
Add support for PIDFILE config option.

bopm.conf.sample:
Document PIDFILE config option.

main.c:
Get PIDFILE path from config file, delay writing of PIDFILE until
after logfile is read.

bopm.conf.sample
src/config.c
src/extern.h
src/main.c

index d3a023c1c5ab49d982a8a0a5f93d7441724ea80e..53139f379a1d31e0d8cd735660f6eedded2f39e6 100644 (file)
@@ -284,3 +284,7 @@ FDLIMIT 512
 #EXCLUDE 192.168.0.*
 #EXCLUDE some-isp-??.example.com
 
+# PIDFILE <filepath> : Full path specifying where bopm should record its
+#                      process ID.
+
+PIDFILE /path/to/bopm.pid
index a7bc6ea8f7a26364f4e7d260adfcbc006b0772bd..463e69a888643b715864520897ac4180e05998db 100644 (file)
@@ -66,6 +66,7 @@ char *CONF_SENDMAIL        = 0;
 char *CONF_HELP_EMAIL      = 0;
 char *CONF_AWAY            = 0;
 char *CONF_TARGET_STRING   = 0;
+char *CONF_PIDFILE         = 0;
 string_list *CONF_EXCLUDE  = 0;
 
 unsigned int  CONF_SCANPORT         = 0;
@@ -103,6 +104,7 @@ config_hash hash[] = {
        {"TARGET_STRING",       TYPE_STRING, 1,0,    &CONF_TARGET_STRING      },
        {"EXCLUDE",             TYPE_LIST,   0,0,    &CONF_EXCLUDE            },
        {"TIMEOUT",             TYPE_INT,    1,0,    &CONF_TIMEOUT            },
+       {"PIDFILE",             TYPE_STRING, 1,0,    &CONF_PIDFILE            },
        {0,                     0,           0,0,    0                        },
 };
 
index 8aea0f382bc838bd5cee15cba7ed65be2d923a5c..dce6d98de1efb3d6dd67c9bbd3e66040ad14ec1b 100644 (file)
@@ -26,6 +26,7 @@ extern char *CONF_SENDMAIL;
 extern char *CONF_HELP_EMAIL;
 extern char *CONF_AWAY;
 extern char *CONF_TARGET_STRING;
+extern char *CONF_PIDFILE;
 extern string_list *CONF_EXCLUDE;
 
 extern unsigned int CONF_PORT;
index 65ec063eda0eb3651384635e6b00484b3416039e..f1c3e09aee1c1f0fe639972f5bb8424479bfd6b9 100644 (file)
@@ -55,7 +55,7 @@ char *CONFNAME = DEFAULTNAME;
 
 char *CONFDIR = BOPM_ETCDIR;
 char *LOGDIR = BOPM_LOGDIR;
-char *CONFFILE, *LOGFILE, *PIDFILE;
+char *CONFFILE, *LOGFILE;
 
 struct sigaction ALARMACTION;
 struct sigaction INTACTION;
@@ -63,7 +63,8 @@ struct sigaction INTACTION;
 int main(int argc, char **argv)
 {
        char spid[16];
-       int pid, c, lenc, lenl, lenp;
+       pid_t pid;
+       int c, lenc, lenl, lenp;
        FILE *pidout;
 
        do_stats_init();
@@ -95,11 +96,9 @@ int main(int argc, char **argv)
 
        CONFFILE = (char *) malloc(lenc * sizeof(*CONFFILE));
        LOGFILE = (char *) malloc(lenl * sizeof(*LOGFILE));
-       PIDFILE = (char *) malloc(lenp * sizeof(*PIDFILE));
 
        snprintf(CONFFILE, lenc, "%s/%s.%s", CONFDIR, CONFNAME, CONFEXT);
        snprintf(LOGFILE, lenl, "%s/%s.%s", LOGDIR, CONFNAME, LOGEXT);
-       snprintf(PIDFILE, lenp, "%s/%s.%s", LOGDIR, CONFNAME, PIDEXT);
 
        /* Fork off. */
 
@@ -108,15 +107,6 @@ int main(int argc, char **argv)
                        perror("fork()");
                        exit(EXIT_FAILURE);
                } else if (pid != 0) {
-                       pidout = fopen(PIDFILE, "w");
-                       snprintf(spid, 16, "%d", pid);
-
-                       if (pidout) {
-                               fwrite(spid, sizeof(char), strlen(spid),
-                                   pidout);
-                       }
-
-                       fclose(pidout);
                        _exit(EXIT_SUCCESS);
                }
 
@@ -145,6 +135,17 @@ int main(int argc, char **argv)
 
        config_load(CONFFILE);
 
+       pid = getpid();
+
+       pidout = fopen(CONF_PIDFILE, "w");
+       snprintf(spid, 16, "%u", pid);
+
+       if (pidout) {
+               fwrite(spid, sizeof(char), strlen(spid), pidout);
+       }
+
+       fclose(pidout);
+
        /* Setup alarm & int handlers. */
  
        ALARMACTION.sa_handler = &(do_signal);