Merge branch 'collectd-4.5' into collectd-4.6
authorFlorian Forster <octo@leeloo.lan.home.verplant.org>
Sat, 14 Mar 2009 17:52:19 +0000 (18:52 +0100)
committerFlorian Forster <octo@leeloo.lan.home.verplant.org>
Sat, 14 Mar 2009 17:52:19 +0000 (18:52 +0100)
1  2 
src/common.c
src/memory.c

diff --combined src/common.c
@@@ -18,8 -18,6 +18,8 @@@
   * Authors:
   *   Florian octo Forster <octo at verplant.org>
   *   Niki W. Waibel <niki.waibel@gmx.net>
 + *   Sebastian Harl <sh at tokkee.org>
 + *   Michał Mirosław <mirq-linux at rere.qmqm.pl>
  **/
  
  #if HAVE_CONFIG_H
@@@ -79,21 -77,15 +79,21 @@@ int ssnprintf (char *dest, size_t n, co
  char *sstrdup (const char *s)
  {
        char *r;
 +      size_t sz;
  
        if (s == NULL)
                return (NULL);
  
 -      if((r = strdup (s)) == NULL)
 +      /* Do not use `strdup' here, because it's not specified in POSIX. It's
 +       * ``only'' an XSI extension. */
 +      sz = strlen (s) + 1;
 +      r = (char *) malloc (sizeof (char) * sz);
 +      if (r == NULL)
        {
 -              ERROR ("Not enough memory.");
 +              ERROR ("sstrdup: Out of memory.");
                exit (3);
        }
 +      memcpy (r, s, sizeof (char) * sz);
  
        return (r);
  } /* char *sstrdup */
@@@ -349,56 -341,28 +349,56 @@@ int escape_slashes (char *buf, int buf_
        return (0);
  } /* int escape_slashes */
  
 -int timeval_sub_timespec (struct timeval *tv0, struct timeval *tv1, struct timespec *ret)
 +int timeval_cmp (struct timeval tv0, struct timeval tv1, struct timeval *delta)
  {
 -      if ((tv0 == NULL) || (tv1 == NULL) || (ret == NULL))
 -              return (-2);
 +      struct timeval *larger;
 +      struct timeval *smaller;
  
 -      if ((tv0->tv_sec < tv1->tv_sec)
 -                      || ((tv0->tv_sec == tv1->tv_sec) && (tv0->tv_usec < tv1->tv_usec)))
 -              return (-1);
 +      int status;
  
 -      ret->tv_sec  = tv0->tv_sec - tv1->tv_sec;
 -      ret->tv_nsec = 1000 * ((long) (tv0->tv_usec - tv1->tv_usec));
 +      NORMALIZE_TIMEVAL (tv0);
 +      NORMALIZE_TIMEVAL (tv1);
  
 -      if (ret->tv_nsec < 0)
 +      if ((tv0.tv_sec == tv1.tv_sec) && (tv0.tv_usec == tv1.tv_usec))
        {
 -              assert (ret->tv_sec > 0);
 +              if (delta != NULL) {
 +                      delta->tv_sec  = 0;
 +                      delta->tv_usec = 0;
 +              }
 +              return (0);
 +      }
  
 -              ret->tv_nsec += 1000000000;
 -              ret->tv_sec  -= 1;
 +      if ((tv0.tv_sec < tv1.tv_sec)
 +                      || ((tv0.tv_sec == tv1.tv_sec) && (tv0.tv_usec < tv1.tv_usec)))
 +      {
 +              larger  = &tv1;
 +              smaller = &tv0;
 +              status  = -1;
 +      }
 +      else
 +      {
 +              larger  = &tv0;
 +              smaller = &tv1;
 +              status  = 1;
        }
  
 -      return (0);
 -}
 +      if (delta != NULL) {
 +              delta->tv_sec = larger->tv_sec - smaller->tv_sec;
 +
 +              if (smaller->tv_usec <= larger->tv_usec)
 +                      delta->tv_usec = larger->tv_usec - smaller->tv_usec;
 +              else
 +              {
 +                      --delta->tv_sec;
 +                      delta->tv_usec = 1000000 + larger->tv_usec - smaller->tv_usec;
 +              }
 +      }
 +
 +      assert ((delta == NULL)
 +                      || ((0 <= delta->tv_usec) && (delta->tv_usec < 1000000)));
 +
 +      return (status);
 +} /* int timeval_cmp */
  
  int check_create_dir (const char *file_orig)
  {
        char *saveptr;
        int   last_is_file = 1;
        int   path_is_absolute = 0;
 -      int   len;
 +      size_t len;
        int   i;
  
        /*
  int get_kstat (kstat_t **ksp_ptr, char *module, int instance, char *name)
  {
        char ident[128];
+       *ksp_ptr = NULL;
        
        if (kc == NULL)
                return (-1);
  
        ssnprintf (ident, sizeof (ident), "%s,%i,%s", module, instance, name);
  
+       *ksp_ptr = kstat_lookup (kc, module, instance, name);
        if (*ksp_ptr == NULL)
        {
-               if ((*ksp_ptr = kstat_lookup (kc, module, instance, name)) == NULL)
-               {
-                       ERROR ("Cound not find kstat %s", ident);
-                       return (-1);
-               }
+               ERROR ("get_kstat: Cound not find kstat %s", ident);
+               return (-1);
+       }
  
-               if ((*ksp_ptr)->ks_type != KSTAT_TYPE_NAMED)
-               {
-                       WARNING ("kstat %s has wrong type", ident);
-                       *ksp_ptr = NULL;
-                       return (-1);
-               }
+       if ((*ksp_ptr)->ks_type != KSTAT_TYPE_NAMED)
+       {
+               ERROR ("get_kstat: kstat %s has wrong type", ident);
+               *ksp_ptr = NULL;
+               return (-1);
        }
  
  #ifdef assert
  
        if (kstat_read (kc, *ksp_ptr, NULL) == -1)
        {
-               WARNING ("kstat %s could not be read", ident);
+               ERROR ("get_kstat: kstat %s could not be read", ident);
                return (-1);
        }
  
        if ((*ksp_ptr)->ks_type != KSTAT_TYPE_NAMED)
        {
-               WARNING ("kstat %s has wrong type", ident);
+               ERROR ("get_kstat: kstat %s has wrong type", ident);
                return (-1);
        }
  
@@@ -966,22 -930,4 +966,22 @@@ int read_file_contents (const char *fil
        return n;
  }
  
 +counter_t counter_diff (counter_t old_value, counter_t new_value)
 +{
 +      counter_t diff;
 +
 +      if (old_value > new_value)
 +      {
 +              if (old_value <= 4294967295U)
 +                      diff = (4294967295U - old_value) + new_value;
 +              else
 +                      diff = (18446744073709551615ULL - old_value)
 +                              + new_value;
 +      }
 +      else
 +      {
 +              diff = new_value - old_value;
 +      }
  
 +      return (diff);
 +} /* counter_t counter_to_gauge */
diff --combined src/memory.c
@@@ -92,8 -92,11 +92,11 @@@ static int memory_init (void
  #elif defined(HAVE_LIBKSTAT)
        /* getpagesize(3C) tells me this does not fail.. */
        pagesize = getpagesize ();
-       if (get_kstat (&ksp, "unix", 0, "system_pages"))
+       if (get_kstat (&ksp, "unix", 0, "system_pages") != 0)
+       {
                ksp = NULL;
+               return (-1);
+       }
  #endif /* HAVE_LIBKSTAT */
  
        return (0);
@@@ -108,6 -111,7 +111,6 @@@ static void memory_submit (const char *
  
        vl.values = values;
        vl.values_len = 1;
 -      vl.time = time (NULL);
        sstrncpy (vl.host, hostname_g, sizeof (vl.host));
        sstrncpy (vl.plugin, "memory", sizeof (vl.plugin));
        sstrncpy (vl.type, "memory", sizeof (vl.type));