src/{collectd,plugin}.[ch]: Changed license to GPLv2 only.
[collectd.git] / src / collectd.c
index b4ee504..6ffb7c3 100644 (file)
@@ -4,8 +4,7 @@
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.
+ * Free Software Foundation; only version 2 of the License is applicable.
  *
  * This program is distributed in the hope that it will be useful, but
  * WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -123,6 +122,8 @@ static void exit_usage (char *name)
                        "  General:\n"
                        "    -C <file>       Configuration file.\n"
                        "                    Default: "CONFIGFILE"\n"
+                       "    -P <file>       PID-file.\n"
+                       "                    Default: "PIDFILE"\n"
 #if COLLECT_DAEMON
                        "    -f              Don't fork to the background.\n"
 #endif
@@ -191,7 +192,7 @@ static int start_client (void)
                curtime = time (NULL);
 
                /* Issue all plugins */
-               plugin_read_all ();
+               plugin_read_all (&loop);
 
                if (gettimeofday (&tv_now, NULL) < 0)
                {
@@ -201,11 +202,11 @@ static int start_client (void)
 
                if (timeval_sub_timespec (&tv_next, &tv_now, &ts_wait) != 0)
                {
-                       syslog (LOG_WARNING, "No sleeping because `timeval_sub_timespec' returned non-zero!");
+                       syslog (LOG_WARNING, "Not sleeping because `timeval_sub_timespec' returned non-zero!");
                        continue;
                }
 
-               while (nanosleep (&ts_wait, &ts_wait) == -1)
+               while ((loop == 0) && (nanosleep (&ts_wait, &ts_wait) == -1))
                {
                        if (errno != EINTR)
                        {
@@ -222,6 +223,8 @@ static int start_client (void)
 static int start_server (void)
 {
        /* FIXME use stack here! */
+       /* FIXME */
+#if 0
        char *host;
        char *type;
        char *instance;
@@ -238,6 +241,7 @@ static int start_server (void)
                if (values   != NULL) free (values);   values   = NULL;
        }
        
+#endif
        return (0);
 } /* static int start_server (void) */
 #endif /* HAVE_LIBRRD */
@@ -281,7 +285,7 @@ int main (int argc, char **argv)
        char *configfile = CONFIGFILE;
 #if COLLECT_DAEMON
        struct sigaction sigChldAction;
-       char *pidfile    = PIDFILE;
+       char *pidfile    = NULL;
        pid_t pid;
        int daemonize    = 1;
 #endif
@@ -291,6 +295,8 @@ int main (int argc, char **argv)
 
 #if HAVE_LIBRRD
        operating_mode = MODE_LOCAL;
+#else
+       operating_mode = MODE_CLIENT;
 #endif
 
        /* open syslog */
@@ -303,7 +309,7 @@ int main (int argc, char **argv)
 
                c = getopt (argc, argv, "hC:"
 #if COLLECT_DAEMON
-                               "f"
+                               "fP:"
 #endif
                );
 
@@ -316,6 +322,9 @@ int main (int argc, char **argv)
                                configfile = optarg;
                                break;
 #if COLLECT_DAEMON
+                       case 'P':
+                               pidfile = optarg;
+                               break;
                        case 'f':
                                daemonize = 0;
                                break;
@@ -366,7 +375,8 @@ int main (int argc, char **argv)
        sigChldAction.sa_handler = SIG_IGN;
        sigaction (SIGCHLD, &sigChldAction, NULL);
 
-       if ((pidfile = cf_get_option ("PIDFile", PIDFILE)) == NULL)
+       if ((pidfile == NULL)
+                       && ((pidfile = cf_get_option ("PIDFile", PIDFILE)) == NULL))
        {
                fprintf (stderr, "Cannot obtain pidfile. This shoud not happen. Ever.");
                return (1);
@@ -436,6 +446,8 @@ int main (int argc, char **argv)
 #endif
                start_client ();
 
+       plugin_shutdown_all ();
+
 #if COLLECT_DEBUG
        if (logfile != NULL)
                DBG_STOPFILE("debug file closed.");