diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -1,16 +1,17 @@ #include "varnish_mib.h" #include <unistd.h> #include <sys/types.h> #include <signal.h> +#include <string.h> char *progname; static void pidfile_check(char const *pid_file); static void pidfile_create(char const *pid_file); static int pidfile_remove(char const *pid_file); void usage(FILE *fp) { fprintf(fp, "usage: varnish-mib [OPTIONS]\n"); fprintf(fp, "SNMP agent for Varnish Cache monitoring\n"); @@ -165,25 +166,24 @@ main(int argc, char **argv) snmp_enable_stderrlog(); SOCK_STARTUP; init_agent(progname); init_varnish_mib(); init_snmp(progname); if (post_config()) exit(1); pidfile_check(pid_file); if (!foreground) { - int i; if (daemon(0, 1)) { fprintf(stderr, "%s: daemon: %s\n", progname, strerror(errno)); exit(1); } openlog(progname, LOG_CONS|LOG_PID, LOG_DAEMON); if (!log_set) { snmp_enable_syslog_ident(progname, LOG_DAEMON); snmp_disable_stderrlog(); } } @@ -221,50 +221,49 @@ pidfile_remove(char const *pid_file) static void pidfile_create(char const *pid_file) { FILE *fp; if (!pid_file) return; fp = fopen(pid_file, "w"); if (!fp) { snmp_log(LOG_CRIT, "cannot create pidfile `%s': %s\n", - progname, pid_file, strerror(errno)); exit(1); } fprintf(fp, "%lu\n", (unsigned long) getpid()); fclose(fp); } /* Check whether pidfile exists and if so, whether its PID is still active. Exit if it is. */ static void pidfile_check(char const *pid_file) { unsigned long pid; FILE *fp; if (!pid_file) return; fp = fopen(pid_file, "r"); if (fp) { if (fscanf(fp, "%lu", &pid) != 1) { snmp_log(LOG_ERR, - "cannot get pid from pidfile `%s'\n", + "cannot get pid from pidfile `%s': %s\n", pid_file, strerror(errno)); } else { if (kill(pid, 0) == 0) { snmp_log(LOG_ERR, "%s appears to run with pid %lu. " "If it does not, remove `%s' and retry.\n", progname, pid, pid_file); exit(1); } |