Merge remote-tracking branch 'github/pr/2006'
authorFlorian Forster <octo@collectd.org>
Fri, 28 Oct 2016 05:22:59 +0000 (07:22 +0200)
committerFlorian Forster <octo@collectd.org>
Fri, 28 Oct 2016 05:22:59 +0000 (07:22 +0200)
17 files changed:
src/amqp.c
src/curl.c
src/daemon/collectd.c
src/daemon/common.c
src/daemon/plugin.c
src/daemon/utils_time.c
src/daemon/utils_time.h
src/daemon/utils_time_test.c
src/dns.c
src/dpdkstat.c
src/gps.c
src/log_logstash.c
src/logfile.c
src/notify_email.c
src/openldap.c
src/powerdns.c
src/rrdtool.c

index f9777a9..882df7c 100644 (file)
@@ -677,25 +677,21 @@ static void *camqp_subscribe_thread (void *user_data) /* {{{ */
         status = camqp_connect (conf);
         if (status != 0)
         {
-            struct timespec ts_interval;
             ERROR ("amqp plugin: camqp_connect failed. "
                     "Will sleep for %.3f seconds.",
                     CDTIME_T_TO_DOUBLE (interval));
-            CDTIME_T_TO_TIMESPEC (interval, &ts_interval);
-            nanosleep (&ts_interval, /* remaining = */ NULL);
+            nanosleep (&CDTIME_T_TO_TIMESPEC (interval), /* remaining = */ NULL);
             continue;
         }
 
         status = amqp_simple_wait_frame (conf->connection, &frame);
         if (status < 0)
         {
-            struct timespec ts_interval;
             ERROR ("amqp plugin: amqp_simple_wait_frame failed. "
                     "Will sleep for %.3f seconds.",
                     CDTIME_T_TO_DOUBLE (interval));
             camqp_close_connection (conf);
-            CDTIME_T_TO_TIMESPEC (interval, &ts_interval);
-            nanosleep (&ts_interval, /* remaining = */ NULL);
+            nanosleep (&CDTIME_T_TO_TIMESPEC (interval), /* remaining = */ NULL);
             continue;
         }
 
index 1a5258e..ced31e9 100644 (file)
@@ -637,11 +637,11 @@ static void cc_submit_response_code (const web_page_t *wp, long code) /* {{{ */
 } /* }}} void cc_submit_response_code */
 
 static void cc_submit_response_time (const web_page_t *wp, /* {{{ */
-    cdtime_t response_time)
+    gauge_t response_time)
 {
   value_list_t vl = VALUE_LIST_INIT;
 
-  vl.values = &(value_t) { .gauge = CDTIME_T_TO_DOUBLE (response_time) };
+  vl.values = &(value_t) { .gauge = response_time };
   vl.values_len = 1;
   sstrncpy (vl.plugin, "curl", sizeof (vl.plugin));
   sstrncpy (vl.plugin_instance, wp->instance, sizeof (vl.plugin_instance));
@@ -668,7 +668,7 @@ static int cc_read_page (web_page_t *wp) /* {{{ */
   }
 
   if (wp->response_time)
-    cc_submit_response_time (wp, cdtime() - start);
+    cc_submit_response_time (wp, CDTIME_T_TO_DOUBLE (cdtime() - start));
   if (wp->stats != NULL)
     curl_stats_dispatch (wp->stats, wp->curl, hostname_g, "curl", wp->instance);
 
index c9e49f8..4843fc6 100644 (file)
@@ -341,7 +341,6 @@ static int do_loop (void)
 
        while (loop == 0)
        {
-               struct timespec ts_wait = { 0, 0 };
                cdtime_t now;
 
 #if HAVE_LIBKSTAT
@@ -361,7 +360,7 @@ static int do_loop (void)
                        continue;
                }
 
-               CDTIME_T_TO_TIMESPEC (wait_until - now, &ts_wait);
+               struct timespec ts_wait = CDTIME_T_TO_TIMESPEC (wait_until - now);
                wait_until = wait_until + interval;
 
                while ((loop == 0) && (nanosleep (&ts_wait, &ts_wait) != 0))
index 7c64796..02df096 100644 (file)
@@ -1620,10 +1620,8 @@ void set_sock_opts (int sockfd) /* {{{ */
        int status;
        int socktype;
 
-       socklen_t socklen = sizeof (socklen_t);
-       int so_keepalive = 1;
-
-       status = getsockopt (sockfd, SOL_SOCKET, SO_TYPE, &socktype, &socklen);
+       status = getsockopt (sockfd, SOL_SOCKET, SO_TYPE,
+                       &socktype, &(socklen_t) { sizeof (socktype) });
        if (status != 0)
        {
                WARNING ("set_sock_opts: failed to determine socket type");
@@ -1633,7 +1631,7 @@ void set_sock_opts (int sockfd) /* {{{ */
        if (socktype == SOCK_STREAM)
        {
                status = setsockopt(sockfd, SOL_SOCKET, SO_KEEPALIVE,
-                               &so_keepalive, sizeof (so_keepalive));
+                               &(int) {1}, sizeof (int));
                if (status != 0)
                        WARNING ("set_sock_opts: failed to set socket keepalive flag");
 
index 7446b6f..8b84e6a 100644 (file)
@@ -108,7 +108,7 @@ static c_avl_tree_t *data_sets;
 static char *plugindir = NULL;
 
 #ifndef DEFAULT_MAX_READ_INTERVAL
-# define DEFAULT_MAX_READ_INTERVAL TIME_T_TO_CDTIME_T (86400)
+# define DEFAULT_MAX_READ_INTERVAL TIME_T_TO_CDTIME_T_STATIC (86400)
 #endif
 static c_heap_t       *read_heap = NULL;
 static llist_t        *read_list;
@@ -522,12 +522,8 @@ static void *plugin_read_thread (void __attribute__((unused)) *args)
                                && (cdtime () < rf->rf_next_read)
                                && rc == 0)
                {
-                       struct timespec ts = { 0 };
-
-                       CDTIME_T_TO_TIMESPEC (rf->rf_next_read, &ts);
-
                        rc = pthread_cond_timedwait (&read_cond, &read_lock,
-                               &ts);
+                               &CDTIME_T_TO_TIMESPEC (rf->rf_next_read));
                }
 
                /* Must hold `read_lock' when accessing `rf->rf_type'. */
index a3a9c33..b24ceac 100644 (file)
@@ -86,15 +86,12 @@ cdtime_t cdtime (void) /* {{{ */
 
 static int get_utc_time (cdtime_t t, struct tm *t_tm, long *nsec) /* {{{ */
 {
-  struct timespec t_spec;
-  int status;
-
-  CDTIME_T_TO_TIMESPEC (t, &t_spec);
+  struct timespec t_spec = CDTIME_T_TO_TIMESPEC (t);
   NORMALIZE_TIMESPEC (t_spec);
 
   if (gmtime_r (&t_spec.tv_sec, t_tm) == NULL) {
     char errbuf[1024];
-    status = errno;
+    int status = errno;
     ERROR ("get_utc_time: gmtime_r failed: %s",
         sstrerror (status, errbuf, sizeof (errbuf)));
     return status;
@@ -106,15 +103,12 @@ static int get_utc_time (cdtime_t t, struct tm *t_tm, long *nsec) /* {{{ */
 
 static int get_local_time (cdtime_t t, struct tm *t_tm, long *nsec) /* {{{ */
 {
-  struct timespec t_spec;
-  int status;
-
-  CDTIME_T_TO_TIMESPEC (t, &t_spec);
+  struct timespec t_spec = CDTIME_T_TO_TIMESPEC (t);
   NORMALIZE_TIMESPEC (t_spec);
 
   if (localtime_r (&t_spec.tv_sec, t_tm) == NULL) {
     char errbuf[1024];
-    status = errno;
+    int status = errno;
     ERROR ("get_local_time: localtime_r failed: %s",
         sstrerror (status, errbuf, sizeof (errbuf)));
     return status;
index 7834723..2d83e0b 100644 (file)
@@ -48,58 +48,85 @@ extern cdtime_t cdtime_mock;
 /* typedef uint64_t cdtime_t; */
 
 /* 2^30 = 1073741824 */
-#define TIME_T_TO_CDTIME_T(t) (((cdtime_t) (t)) << 30)
-
-#define MS_TO_CDTIME_T(ms) (((((cdtime_t) (ms)) / 1000) << 30) | \
-    ((((((cdtime_t) (ms)) % 1000) << 30) + 500) / 1000))
-#define US_TO_CDTIME_T(us) (((((cdtime_t) (us)) / 1000000) << 30) | \
-    ((((((cdtime_t) (us)) % 1000000) << 30) + 500000) / 1000000))
-#define NS_TO_CDTIME_T(ns) (((((cdtime_t) (ns)) / 1000000000) << 30) | \
-    ((((((cdtime_t) (ns)) % 1000000000) << 30) + 500000000) / 1000000000))
-
-#define CDTIME_T_TO_TIME_T(t) ((time_t) (((t) + (1 << 29)) >> 30))
-#define CDTIME_T_TO_MS(t)  ((uint64_t) ((((t) >> 30) * 1000) + \
-  ((((t) & 0x3fffffff) * 1000 + (1 << 29)) >> 30)))
-#define CDTIME_T_TO_US(t)  ((uint64_t) ((((t) >> 30) * 1000000) + \
-  ((((t) & 0x3fffffff) * 1000000 + (1 << 29)) >> 30)))
-#define CDTIME_T_TO_NS(t)  ((uint64_t) ((((t) >> 30) * 1000000000) + \
-  ((((t) & 0x3fffffff) * 1000000000 + (1 << 29)) >> 30)))
-
-#define CDTIME_T_TO_DOUBLE(t) (((double) (t)) / 1073741824.0)
-#define DOUBLE_TO_CDTIME_T(d) ((cdtime_t) ((d) * 1073741824.0))
-
-#define CDTIME_T_TO_TIMEVAL(cdt,tvp) do { \
-  (tvp)->tv_sec = (time_t) ((cdt) >> 30); \
-  (tvp)->tv_usec = (suseconds_t) ((((cdt) & 0x3fffffff) * 1000000 + (1 << 29)) >> 30); \
-} while (0)
-#define TIMEVAL_TO_CDTIME_T(tv) US_TO_CDTIME_T(1000000 * (tv)->tv_sec + (tv)->tv_usec)
-
-#define CDTIME_T_TO_TIMESPEC(cdt,tsp) do { \
-  (tsp)->tv_sec = (time_t) ((cdt) >> 30); \
-  (tsp)->tv_nsec = (long) ((((cdt) & 0x3fffffff) * 1000000000 + (1 << 29)) >> 30); \
-} while (0)
-#define TIMESPEC_TO_CDTIME_T(ts) NS_TO_CDTIME_T(1000000000ULL * (ts)->tv_sec + (ts)->tv_nsec)
-
-cdtime_t cdtime (void);
-
-#define RFC3339_SIZE     26  /* 2006-01-02T15:04:05+00:00 */
-#define RFC3339NANO_SIZE 36  /* 2006-01-02T15:04:05.999999999+00:00 */
+#define TIME_T_TO_CDTIME_T_STATIC(t) (((cdtime_t)(t)) << 30)
+#define TIME_T_TO_CDTIME_T(t)                                                  \
+  (cdtime_t) { TIME_T_TO_CDTIME_T_STATIC(t) }
+
+#define MS_TO_CDTIME_T(ms)                                                     \
+  (cdtime_t) {                                                                 \
+    ((((cdtime_t)(ms)) / 1000) << 30) |                                        \
+        ((((((cdtime_t)(ms)) % 1000) << 30) + 500) / 1000)                     \
+  }
+#define US_TO_CDTIME_T(us)                                                     \
+  (cdtime_t) {                                                                 \
+    ((((cdtime_t)(us)) / 1000000) << 30) |                                     \
+        ((((((cdtime_t)(us)) % 1000000) << 30) + 500000) / 1000000)            \
+  }
+#define NS_TO_CDTIME_T(ns)                                                     \
+  (cdtime_t) {                                                                 \
+    ((((cdtime_t)(ns)) / 1000000000) << 30) |                                  \
+        ((((((cdtime_t)(ns)) % 1000000000) << 30) + 500000000) / 1000000000)   \
+  }
+
+#define CDTIME_T_TO_TIME_T(t)                                                  \
+  (time_t) { (time_t)(((t) + (1 << 29)) >> 30) }
+#define CDTIME_T_TO_MS(t)                                                      \
+  (uint64_t) {                                                                 \
+    (uint64_t)((((t) >> 30) * 1000) +                                          \
+               ((((t)&0x3fffffff) * 1000 + (1 << 29)) >> 30))                  \
+  }
+#define CDTIME_T_TO_US(t)                                                      \
+  (uint64_t) {                                                                 \
+    (uint64_t)((((t) >> 30) * 1000000) +                                       \
+               ((((t)&0x3fffffff) * 1000000 + (1 << 29)) >> 30))               \
+  }
+#define CDTIME_T_TO_NS(t)                                                      \
+  (uint64_t) {                                                                 \
+    (uint64_t)((((t) >> 30) * 1000000000) +                                    \
+               ((((t)&0x3fffffff) * 1000000000 + (1 << 29)) >> 30))            \
+  }
+
+#define CDTIME_T_TO_DOUBLE(t)                                                  \
+  (double) { ((double)(t)) / 1073741824.0 }
+#define DOUBLE_TO_CDTIME_T(d)                                                  \
+  (cdtime_t) { (cdtime_t)((d)*1073741824.0) }
+
+#define CDTIME_T_TO_TIMEVAL(t)                                                 \
+  (struct timeval) {                                                           \
+    .tv_sec = (time_t)((t) >> 30),                                             \
+    .tv_usec = (suseconds_t)((((t)&0x3fffffff) * 1000000 + (1 << 29)) >> 30),  \
+  }
+#define TIMEVAL_TO_CDTIME_T(tv)                                                \
+  US_TO_CDTIME_T(1000000 * (tv)->tv_sec + (tv)->tv_usec)
+
+#define CDTIME_T_TO_TIMESPEC(t)                                                \
+  (struct timespec) {                                                          \
+    .tv_sec = (time_t)((t) >> 30),                                             \
+    .tv_nsec = (long)((((t)&0x3fffffff) * 1000000000 + (1 << 29)) >> 30),      \
+  }
+#define TIMESPEC_TO_CDTIME_T(ts)                                               \
+  NS_TO_CDTIME_T(1000000000ULL * (ts)->tv_sec + (ts)->tv_nsec)
+
+cdtime_t cdtime(void);
+
+#define RFC3339_SIZE 26     /* 2006-01-02T15:04:05+00:00 */
+#define RFC3339NANO_SIZE 36 /* 2006-01-02T15:04:05.999999999+00:00 */
 
 /* rfc3339 formats a cdtime_t time as UTC in RFC 3339 zulu format with second
  * precision, e.g., "2006-01-02T15:04:05Z". */
-int rfc3339 (char *buffer, size_t buffer_size, cdtime_t t);
+int rfc3339(char *buffer, size_t buffer_size, cdtime_t t);
 
 /* rfc3339nano formats a cdtime_t as UTC time in RFC 3339 zulu format with
  * nanosecond precision, e.g., "2006-01-02T15:04:05.999999999Z". */
-int rfc3339nano (char *buffer, size_t buffer_size, cdtime_t t);
+int rfc3339nano(char *buffer, size_t buffer_size, cdtime_t t);
 
 /* rfc3339 formats a cdtime_t time as local in RFC 3339 format with second
  * precision, e.g., "2006-01-02T15:04:05+00:00". */
-int rfc3339_local (char *buffer, size_t buffer_size, cdtime_t t);
+int rfc3339_local(char *buffer, size_t buffer_size, cdtime_t t);
 
 /* rfc3339nano formats a cdtime_t time as local in RFC 3339 format with
  * nanosecond precision, e.g., "2006-01-02T15:04:05.999999999+00:00". */
-int rfc3339nano_local (char *buffer, size_t buffer_size, cdtime_t t);
+int rfc3339nano_local(char *buffer, size_t buffer_size, cdtime_t t);
 
 #endif /* UTILS_TIME_H */
 /* vim: set sw=2 sts=2 et : */
index 9f04368..e9db187 100644 (file)
@@ -67,9 +67,6 @@ DEF_TEST(conversion)
   };
 
   for (size_t i = 0; i < (sizeof (cases) / sizeof (cases[0])); i++) {
-    struct timeval tv;
-    struct timespec ts;
-
     // cdtime -> s
     EXPECT_EQ_UINT64 (cases[i].tt, CDTIME_T_TO_TIME_T (cases[i].t));
 
@@ -77,12 +74,12 @@ DEF_TEST(conversion)
     EXPECT_EQ_UINT64(cases[i].ms, CDTIME_T_TO_MS (cases[i].t));
 
     // cdtime -> us
-    CDTIME_T_TO_TIMEVAL (cases[i].t, &tv);
+    struct timeval tv = CDTIME_T_TO_TIMEVAL (cases[i].t);
     EXPECT_EQ_UINT64 (cases[i].tv.tv_sec, tv.tv_sec);
     EXPECT_EQ_UINT64 (cases[i].tv.tv_usec, tv.tv_usec);
 
     // cdtime -> ns
-    CDTIME_T_TO_TIMESPEC (cases[i].t, &ts);
+    struct timespec ts = CDTIME_T_TO_TIMESPEC (cases[i].t);
     EXPECT_EQ_UINT64 (cases[i].ts.tv_sec, ts.tv_sec);
     EXPECT_EQ_UINT64 (cases[i].ts.tv_nsec, ts.tv_nsec);
 
index 04e5a1e..c8e794e 100644 (file)
--- a/src/dns.c
+++ b/src/dns.c
@@ -278,30 +278,16 @@ static int dns_run_pcap_loop (void)
 
 static int dns_sleep_one_interval (void) /* {{{ */
 {
-       cdtime_t interval;
-       struct timespec ts = { 0, 0 };
-       int status = 0;
-
-       interval = plugin_get_interval ();
-       CDTIME_T_TO_TIMESPEC (interval, &ts);
-
-       while (42)
+       struct timespec ts = CDTIME_T_TO_TIMESPEC (plugin_get_interval ());
+       while (nanosleep (&ts, &ts) != 0)
        {
-               struct timespec rem = { 0, 0 };
-
-               status = nanosleep (&ts, &rem);
-               if (status == 0)
-                       break;
-               else if ((errno == EINTR) || (errno == EAGAIN))
-               {
-                       ts = rem;
+               if ((errno == EINTR) || (errno == EAGAIN))
                        continue;
-               }
-               else
-                       break;
+
+               return (errno);
        }
 
-       return (status);
+       return (0);
 } /* }}} int dns_sleep_one_interval */
 
 static void *dns_child_loop (__attribute__((unused)) void *dummy) /* {{{ */
index 3c636f7..7d89596 100644 (file)
@@ -447,12 +447,12 @@ static int dpdk_helper_run(void) {
 
   while (1) {
     /* sem_timedwait() to avoid blocking forever */
-    struct timespec ts;
     cdtime_t now = cdtime();
     cdtime_t safety_period = MS_TO_CDTIME_T(1500);
-    CDTIME_T_TO_TIMESPEC(now + safety_period + g_configuration->interval * 2,
-                         &ts);
-    int ret = sem_timedwait(&g_configuration->sema_helper_get_stats, &ts);
+    int ret =
+        sem_timedwait(&g_configuration->sema_helper_get_stats,
+                      &CDTIME_T_TO_TIMESPEC(now + safety_period +
+                                            g_configuration->interval * 2));
 
     if (ret == -1 && errno == ETIMEDOUT) {
       ERROR("dpdkstat-helper: sem timedwait()"
@@ -562,8 +562,7 @@ static void dpdk_submit_xstats(const char *dev_name,
     vl.values_len = 1; /* Submit stats one at a time */
     vl.time = port_read_time;
     sstrncpy(vl.plugin, "dpdkstat", sizeof(vl.plugin));
-    sstrncpy(vl.plugin_instance, dev_name,
-             sizeof(vl.plugin_instance));
+    sstrncpy(vl.plugin_instance, dev_name, sizeof(vl.plugin_instance));
 
     type_end = strrchr(xstats[j].name, '_');
 
@@ -621,8 +620,7 @@ static void dpdk_submit_xstats(const char *dev_name,
       sstrncpy(vl.type, "derive", sizeof(vl.type));
     }
 
-    sstrncpy(vl.type_instance, xstats[j].name,
-             sizeof(vl.type_instance));
+    sstrncpy(vl.type_instance, xstats[j].name, sizeof(vl.type_instance));
     plugin_dispatch_values(&vl);
   }
 }
@@ -700,10 +698,9 @@ static int dpdk_read(user_data_t *ud) {
   /* Kick helper process through SHM */
   sem_post(&g_configuration->sema_helper_get_stats);
 
-  struct timespec ts;
   cdtime_t now = cdtime();
-  CDTIME_T_TO_TIMESPEC(now + g_configuration->interval, &ts);
-  ret = sem_timedwait(&g_configuration->sema_stats_in_shm, &ts);
+  ret = sem_timedwait(&g_configuration->sema_stats_in_shm,
+                      &CDTIME_T_TO_TIMESPEC(now + g_configuration->interval));
   if (ret == -1) {
     if (errno == ETIMEDOUT)
       DEBUG(
index 644967b..b529422 100644 (file)
--- a/src/gps.c
+++ b/src/gps.c
@@ -64,6 +64,7 @@ static cgps_data_t cgps_data = {NAN, NAN, NAN, NAN};
 static pthread_t cgps_thread_id;
 static pthread_mutex_t  cgps_data_lock = PTHREAD_MUTEX_INITIALIZER;
 static pthread_mutex_t  cgps_thread_lock = PTHREAD_MUTEX_INITIALIZER;
+static pthread_cond_t   cgps_thread_cond = PTHREAD_COND_INITIALIZER;
 static int cgps_thread_shutdown = CGPS_FALSE;
 static int cgps_thread_running = CGPS_FALSE;
 
@@ -72,27 +73,16 @@ static int cgps_thread_running = CGPS_FALSE;
  */
 static int cgps_thread_pause(cdtime_t pTime)
 {
-  cdtime_t now;
-  now = cdtime ();
-  struct timespec pause_th;
-  CDTIME_T_TO_TIMESPEC (MS_TO_CDTIME_T(10), &pause_th);
-  while (CGPS_TRUE)
-  {
-    if ( (cdtime () - now) > pTime )
-    {
-      break;
-    }
+  cdtime_t until = cdtime() + pTime;
 
-    pthread_mutex_lock (&cgps_thread_lock);
-    if (cgps_thread_shutdown == CGPS_TRUE)
-    {
-      return CGPS_FALSE;
-    }
-    pthread_mutex_unlock (&cgps_thread_lock);
-    nanosleep (&pause_th, NULL);
- }
+  pthread_mutex_lock (&cgps_thread_lock);
+  pthread_cond_timedwait (&cgps_thread_cond, &cgps_thread_lock,
+      &CDTIME_T_TO_TIMESPEC (until));
+
+  int ret = !cgps_thread_shutdown;
 
- return CGPS_TRUE;
+  pthread_mutex_lock (&cgps_thread_lock);
+  return ret;
 }
 
 /**
@@ -329,6 +319,7 @@ static int cgps_shutdown (void)
 
   pthread_mutex_lock (&cgps_thread_lock);
   cgps_thread_shutdown = CGPS_TRUE;
+  pthread_cond_broadcast (&cgps_thread_cond);
   pthread_mutex_unlock (&cgps_thread_lock);
 
   pthread_join(cgps_thread_id, &res);
index 0886840..24083a5 100644 (file)
@@ -90,7 +90,6 @@ static void log_logstash_print (yajl_gen g, int severity,
        struct tm timestamp_tm;
        char timestamp_str[64];
        const unsigned char *buf;
-       time_t tt;
 #if HAVE_YAJL_V2
        size_t len;
 #else
@@ -140,8 +139,7 @@ static void log_logstash_print (yajl_gen g, int severity,
            yajl_gen_status_ok)
                goto err;
 
-       tt = CDTIME_T_TO_TIME_T (timestamp_time);
-       gmtime_r (&tt, &timestamp_tm);
+       gmtime_r (&CDTIME_T_TO_TIME_T (timestamp_time), &timestamp_tm);
 
        /*
         * format time as a UTC ISO 8601 compliant string
index d18a536..6d55584 100644 (file)
@@ -90,7 +90,6 @@ static void logfile_print (const char *msg, int severity,
 {
        FILE *fh;
        _Bool do_close = 0;
-       struct tm timestamp_tm;
        char timestamp_str[64];
        char level_str[16] = "";
 
@@ -120,8 +119,8 @@ static void logfile_print (const char *msg, int severity,
 
        if (print_timestamp)
        {
-               time_t tt = CDTIME_T_TO_TIME_T (timestamp_time);
-               localtime_r (&tt, &timestamp_tm);
+               struct tm timestamp_tm;
+               localtime_r (&CDTIME_T_TO_TIME_T (timestamp_time), &timestamp_tm);
 
                strftime (timestamp_str, sizeof (timestamp_str), "%Y-%m-%d %H:%M:%S",
                                &timestamp_tm);
index cefeb22..dc20cbb 100644 (file)
@@ -228,7 +228,6 @@ static int notify_email_notification (const notification_t *n,
     user_data_t __attribute__((unused)) *user_data)
 {
 
-  time_t tt;
   struct tm timestamp_tm;
   char timestamp_str[64];
 
@@ -248,8 +247,7 @@ static int notify_email_notification (const notification_t *n,
       (email_subject == NULL) ? DEFAULT_SMTP_SUBJECT : email_subject,
       severity, n->host);
 
-  tt = CDTIME_T_TO_TIME_T (n->time);
-  localtime_r (&tt, &timestamp_tm);
+  localtime_r (&CDTIME_T_TO_TIME_T (n->time), &timestamp_tm);
   strftime (timestamp_str, sizeof (timestamp_str), "%Y-%m-%d %H:%M:%S",
       &timestamp_tm);
   timestamp_str[sizeof (timestamp_str) - 1] = '\0';
index d5e58b1..e100aee 100644 (file)
@@ -567,7 +567,7 @@ static int cldap_config_add (oconfig_item_t *ci) /* {{{ */
        }
 
        st->starttls = 0;
-       st->timeout = (long) (CDTIME_T_TO_MS(plugin_get_interval()) / 1000);
+       st->timeout = (long) CDTIME_T_TO_TIME_T(plugin_get_interval());
        st->verifyhost = 1;
        st->version = LDAP_VERSION3;
 
index d7aa4e9..5bbd9d5 100644 (file)
@@ -377,7 +377,6 @@ static int powerdns_get_data_dgram (list_item_t *item, /* {{{ */
 
   struct sockaddr_un sa_unix = { 0 };
 
-  struct timeval stv_timeout;
   cdtime_t cdt_timeout;
 
   sd = socket (PF_UNIX, item->socktype, 0);
@@ -423,9 +422,9 @@ static int powerdns_get_data_dgram (list_item_t *item, /* {{{ */
     if (cdt_timeout < TIME_T_TO_CDTIME_T (2))
       cdt_timeout = TIME_T_TO_CDTIME_T (2);
 
-    CDTIME_T_TO_TIMEVAL (cdt_timeout, &stv_timeout);
-
-    status = setsockopt (sd, SOL_SOCKET, SO_RCVTIMEO, &stv_timeout, sizeof (stv_timeout));
+    status = setsockopt (sd, SOL_SOCKET, SO_RCVTIMEO,
+                         &CDTIME_T_TO_TIMEVAL(cdt_timeout),
+                         sizeof(struct timeval));
     if (status != 0)
     {
       SOCK_ERROR ("setsockopt", sa_unix.sun_path);
index 094dd42..f5e01c8 100644 (file)
@@ -110,7 +110,7 @@ static rrdcreate_config_t rrdcreate_config =
  * ALWAYS lock `cache_lock' first! */
 static cdtime_t    cache_timeout = 0;
 static cdtime_t    cache_flush_timeout = 0;
-static cdtime_t    random_timeout = TIME_T_TO_CDTIME_T (1);
+static cdtime_t    random_timeout = TIME_T_TO_CDTIME_T_STATIC (1);
 static cdtime_t    cache_flush_last;
 static c_avl_tree_t *cache = NULL;
 static pthread_mutex_t cache_lock = PTHREAD_MUTEX_INITIALIZER;