diff --git a/src/collectd.c b/src/collectd.c
index c86a67803ade6fd7b686de0d67007a9316a9b9e1..0d9a7db872cf8b714383bff404eeb44e64f43f90 100644 (file)
--- a/src/collectd.c
+++ b/src/collectd.c
* Alvaro Barcellos <alvaro.barcellos at gmail.com>
**/
+#include "collectd.h"
#include "common.h"
#include "utils_debug.h"
loop++;
}
+static void sigTermHandler (int signal)
+{
+ loop++;
+}
+
static int change_basedir (char *dir)
{
int dirlen = strlen (dir);
int main (int argc, char **argv)
{
- struct sigaction sigIntAction, sigChldAction;
+#if COLLECT_DAEMON
+ struct sigaction sigChldAction;
+#endif
+ struct sigaction sigIntAction;
+ struct sigaction sigTermAction;
char *configfile = CONFIGFILE;
- char *plugindir = PLUGINDIR;
+ char *plugindir = NULL;
char *datadir = PKGLOCALSTATEDIR;
#if COLLECT_DAEMON
char *pidfile = PIDFILE;
DBG_STARTFILE(logfile, "debug file opened.");
+ /* FIXME this is the wrong place to call this function, because
+ * `cf_read' is called below. We'll need an extra callback for this.
+ * Right now though I'm to tired to do this. G'night. -octo */
+ if ((plugindir == NULL) && ((plugindir = cf_get_mode_option ("PluginDir")) == NULL))
+ plugindir = PLUGINDIR;
+
/*
* Read the config file. This will load any modules automagically.
*/
}
/*
- * install signal handlers
+ * fork off child
*/
- sigIntAction.sa_handler = sigIntHandler;
- sigaction (SIGINT, &sigIntAction, NULL);
-
+#if COLLECT_DAEMON
sigChldAction.sa_handler = SIG_IGN;
sigaction (SIGCHLD, &sigChldAction, NULL);
- /*
- * fork off child
- */
-#if COLLECT_DAEMON
if (daemonize)
{
if ((pid = fork ()) == -1)
} /* if (daemonize) */
#endif /* COLLECT_DAEMON */
+ /*
+ * install signal handlers
+ */
+ sigIntAction.sa_handler = sigIntHandler;
+ sigaction (SIGINT, &sigIntAction, NULL);
+
+ sigIntAction.sa_handler = sigTermHandler;
+ sigaction (SIGTERM, &sigTermAction, NULL);
+
/*
* run the actual loops
*/