collectdctl: Added support for ‘U’ (undef) values in ‘putval’.
authorSebastian Harl <sh@tokkee.org>
Mon, 9 Aug 2010 20:04:54 +0000 (22:04 +0200)
committerSebastian Harl <sh@tokkee.org>
Mon, 9 Aug 2010 20:04:54 +0000 (22:04 +0200)
src/collectdctl.c
src/collectdctl.pod

index cc19509..7ee90a0 100644 (file)
@@ -33,6 +33,8 @@
 
 #include <getopt.h>
 
+#include <math.h>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -469,7 +471,12 @@ static int putval (lcc_connection_t *c, int argc, char **argv)
          * anyway. Also, lcc uses the type information for formatting the
          * number only, so the real meaning does not matter. -tokkee */
         dot = strchr (value, (int)'.');
-        if (dot) { /* floating point value */
+        endptr = NULL;
+        if (strcasecmp (value, "U") == 0) {
+          values[values_len].gauge = NAN;
+          values_types[values_len] = LCC_TYPE_GAUGE;
+        }
+        else if (dot) { /* floating point value */
           values[values_len].gauge = strtod (value, &endptr);
           values_types[values_len] = LCC_TYPE_GAUGE;
         }
index 65d4e05..21c0b50 100644 (file)
@@ -117,10 +117,11 @@ limitation in the C<libcollectdclient> library).
 A value list describes one data-set as handled by collectd. It is a colon
 (C<:>) separated list of the time and the values. Each value is either given
 as an integer if the data-type is a counter, or as a double if the data-type
-is a gauge value. The number of values and the data-types have to match the
-type specified in the identifier (see L<types.db(5)> for details). The time is
-specified as epoch (i.E<nbsp>e., standard UNIX time) or as a literal C<N>
-which will be interpreted as now.
+is a gauge value. A literal C<U> is interpreted as an undefined gauge value.
+The number of values and the data-types have to match the type specified in
+the identifier (see L<types.db(5)> for details). The time is specified as
+epoch (i.E<nbsp>e., standard UNIX time) or as a literal C<N> which will be
+interpreted as now.
 
 =head1 EXAMPLES