+static void sigUsr1Handler (int signal)
+{
+ pthread_t thread;
+ pthread_attr_t attr;
+
+ /* flushing the data might take a while,
+ * so it should be done asynchronously */
+ pthread_attr_init (&attr);
+ pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
+ pthread_create (&thread, &attr, do_flush, NULL);
+}
+
+static int init_hostname (void)
+{
+ const char *str;
+
+ struct addrinfo ai_hints;
+ struct addrinfo *ai_list;
+ struct addrinfo *ai_ptr;
+ int status;
+
+ str = global_option_get ("Hostname");
+ if (str != NULL)
+ {
+ strncpy (hostname_g, str, sizeof (hostname_g));
+ hostname_g[sizeof (hostname_g) - 1] = '\0';
+ return (0);
+ }
+
+ if (gethostname (hostname_g, sizeof (hostname_g)) != 0)
+ {
+ fprintf (stderr, "`gethostname' failed and no "
+ "hostname was configured.\n");
+ return (-1);
+ }
+
+ str = global_option_get ("FQDNLookup");
+ if ((strcasecmp ("false", str) == 0)
+ || (strcasecmp ("no", str) == 0)
+ || (strcasecmp ("off", str) == 0))
+ return (0);
+
+ memset (&ai_hints, '\0', sizeof (ai_hints));
+ ai_hints.ai_flags = AI_CANONNAME;
+
+ status = getaddrinfo (hostname_g, NULL, &ai_hints, &ai_list);
+ if (status != 0)
+ {
+ ERROR ("Looking up \"%s\" failed. You have set the "
+ "\"FQDNLookup\" option, but I cannot resolve "
+ "my hostname to a fully qualified domain "
+ "name. Please fix you network "
+ "configuration.", hostname_g);
+ return (-1);
+ }
+
+ for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+ {
+ if (ai_ptr->ai_canonname == NULL)
+ continue;
+
+ strncpy (hostname_g, ai_ptr->ai_canonname, sizeof (hostname_g));
+ hostname_g[sizeof (hostname_g) - 1] = '\0';
+ break;
+ }
+
+ freeaddrinfo (ai_list);
+ return (0);
+} /* int init_hostname */
+
+static int init_global_variables (void)
+{
+ const char *str;
+
+ str = global_option_get ("Interval");
+ if (str == NULL)
+ str = "10";
+ interval_g = atoi (str);
+ if (interval_g <= 0)
+ {
+ fprintf (stderr, "Cannot set the interval to a correct value.\n"
+ "Please check your settings.\n");
+ return (-1);
+ }
+ DEBUG ("interval_g = %i;", interval_g);
+
+ if (init_hostname () != 0)
+ return (-1);
+ DEBUG ("hostname_g = %s;", hostname_g);
+
+ return (0);
+} /* int init_global_variables */
+
+static int change_basedir (const char *orig_dir)