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;
{"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 },
};
char *CONFDIR = BOPM_ETCDIR;
char *LOGDIR = BOPM_LOGDIR;
-char *CONFFILE, *LOGFILE, *PIDFILE;
+char *CONFFILE, *LOGFILE;
struct sigaction ALARMACTION;
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();
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. */
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);
}
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);