Merge pull request #1844 from rubenk/sigrok
authorRuben Kerkhof <ruben@rubenkerkhof.com>
Sun, 7 Aug 2016 09:45:05 +0000 (11:45 +0200)
committerGitHub <noreply@github.com>
Sun, 7 Aug 2016 09:45:05 +0000 (11:45 +0200)
sigrok: use pkg-config to find library

165 files changed:
.gitignore
AUTHORS
README
configure.ac
src/Makefile.am
src/aggregation.c
src/amqp.c
src/apache.c
src/apcups.c
src/apple_sensors.c
src/aquaero.c
src/ascent.c
src/barometer.c
src/battery.c
src/bind.c
src/ceph.c
src/cgroups.c
src/chrony.c
src/collectd-nagios.c
src/collectd-python.pod
src/collectd-tg.c
src/collectd.conf.in
src/collectd.conf.pod
src/collectdctl.c
src/cpu.c
src/cpufreq.c
src/cpusleep.c [new file with mode: 0644]
src/csv.c
src/curl.c
src/curl_json.c
src/curl_xml.c
src/daemon/collectd.c
src/daemon/common.c
src/daemon/common_test.c
src/daemon/configfile.c
src/daemon/filter_chain.c
src/daemon/meta_data.c
src/daemon/plugin.c
src/daemon/types_list.c
src/daemon/utils_avltree.h
src/daemon/utils_avltree_test.c
src/daemon/utils_cache.c
src/daemon/utils_heap.h
src/daemon/utils_heap_test.c
src/daemon/utils_ignorelist.c
src/daemon/utils_match.c
src/daemon/utils_subst_test.c
src/daemon/utils_tail_match.c
src/daemon/utils_time_test.c
src/dbi.c
src/df.c
src/disk.c
src/dns.c
src/drbd.c
src/email.c
src/ethstat.c
src/exec.c
src/filecount.c
src/fscache.c
src/gmond.c
src/hddtemp.c
src/interface.c
src/ipc.c
src/ipmi.c
src/iptables.c
src/ipvs.c
src/java.c
src/libcollectdclient/client.c
src/libcollectdclient/collectd/client.h
src/libcollectdclient/network.c
src/libcollectdclient/network_buffer.c
src/liboconfig/oconfig.c
src/liboconfig/parser.y
src/madwifi.c
src/match_empty_counter.c
src/match_hashed.c
src/match_regex.c
src/match_timediff.c
src/match_value.c
src/mbmon.c
src/memcachec.c
src/memcached.c
src/memory.c
src/mic.c
src/modbus.c
src/mqtt.c
src/multimeter.c
src/mysql.c
src/netapp.c
src/netlink.c
src/network.c
src/nfs.c
src/nginx.c
src/notify_desktop.c
src/notify_email.c
src/notify_nagios.c
src/ntpd.c
src/nut.c
src/olsrd.c
src/onewire.c
src/openldap.c
src/openvpn.c
src/oracle.c
src/perl.c
src/pf.c
src/pinba.c
src/ping.c
src/postgresql.c
src/powerdns.c
src/processes.c
src/python.c
src/pyvalues.c
src/redis.c
src/routeros.c
src/rrdcached.c
src/rrdtool.c
src/sensors.c
src/serial.c
src/sigrok.c
src/snmp.c
src/statsd.c
src/swap.c
src/table.c
src/tail.c
src/tail_csv.c
src/tape.c
src/target_notification.c
src/target_replace.c
src/target_scale.c
src/target_set.c
src/tcpconns.c
src/teamspeak2.c
src/ted.c
src/threshold.c
src/turbostat.c
src/utils_cmd_flush.c
src/utils_cmd_getval.c
src/utils_cmd_listval.c
src/utils_crc32.c
src/utils_curl_stats.c
src/utils_db_query.c
src/utils_dns.c
src/utils_format_graphite.c
src/utils_format_json.c
src/utils_format_json.h
src/utils_format_json_test.c [new file with mode: 0644]
src/utils_format_kairosdb.c
src/utils_latency.c
src/utils_latency_test.c
src/utils_mount.c
src/utils_rrdcreate.c
src/varnish.c
src/virt.c
src/write_graphite.c
src/write_http.c
src/write_kafka.c
src/write_mongodb.c
src/write_redis.c
src/write_riemann.c
src/write_riemann_threshold.c
src/write_sensu.c
src/write_tsdb.c
src/xencpu.c
src/zfs_arc.c
src/zookeeper.c

index d742389..b85dc48 100644 (file)
@@ -81,6 +81,9 @@ bindings/java/org/collectd/java/*.class
 # lint stuff
 *.ln
 
+#ide stuff
+.vscode
+
 # Unit tests
 src/daemon/test-suite.log
 src/tests/
diff --git a/AUTHORS b/AUTHORS
index bdffa92..5c9119b 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -20,13 +20,13 @@ Pierre-Yves Ritschard <pyr at spootnik.org>
  - Normalization in the CPU plugin.
  - Relative values in the Load plugin.
 
-Ruben Kerkhof <ruben@rubenkerkhof.com>
+Ruben Kerkhof <ruben at rubenkerkhof.com>
  - Bugfixes and enhancements in many places all around the project.
- - Fedora package.
+ - Fedora and EPEL packages.
 
 Sebastian "tokkee" Harl <sh at tokkee.org>
  - Bugfixes and enhancements in many places all around the project.
- - gprc plugin.
+ - grpc plugin.
  - perl plugin.
  - postgresql plugin.
  - users plugin.
diff --git a/README b/README
index 1c3af7a..e5d5c37 100644 (file)
--- a/README
+++ b/README
@@ -67,6 +67,9 @@ Features
     - cpufreq
       CPU frequency (For laptops with speed step or a similar technology)
 
+    - cpusleep
+      CPU sleep: Time spent in suspend (For mobile devices which enter suspend automatically)
+
     - curl
       Parse statistics from websites using regular expressions.
 
index d04280a..8f14313 100644 (file)
@@ -1,4 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
+AC_PREREQ([2.60])
 AC_INIT([collectd],[m4_esyscmd(./version-gen.sh)])
 AC_CONFIG_SRCDIR(src/target_set.c)
 AC_CONFIG_HEADERS(src/config.h)
@@ -747,6 +748,23 @@ AC_CHECK_HEADERS(net/pfvar.h,
 have_termios_h="no"
 AC_CHECK_HEADERS(termios.h, [have_termios_h="yes"])
 
+# For cpusleep plugin
+AC_CACHE_CHECK([whether clock_boottime and clock_monotonic are supported],
+                      [c_cv_have_clock_boottime_monotonic],
+                      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+[[
+#include <time.h>
+]],
+[[
+ struct timespec b, m;
+ clock_gettime(CLOCK_BOOTTIME, &b );
+ clock_gettime(CLOCK_MONOTONIC, &m );
+]]
+                      )],
+                      [c_cv_have_clock_boottime_monotonic="yes"],
+                      [c_cv_have_clock_boottime_monotonic="no"]))
+
+
 # For the turbostat plugin
 have_asm_msrindex_h="no"
 AC_CHECK_HEADERS(asm/msr-index.h, [have_asm_msrindex_h="yes"])
@@ -786,7 +804,7 @@ AC_HEADER_TIME
 #
 # Checks for library functions.
 #
-AC_CHECK_FUNCS(gettimeofday select strdup strtol getaddrinfo getnameinfo strchr memcpy strstr strcmp strncmp strncpy strlen strncasecmp strcasecmp openlog closelog sysconf setenv if_indextoname setlocale)
+AC_CHECK_FUNCS(gettimeofday select strdup strtol getaddrinfo getnameinfo strchr memcpy strstr strcmp strncmp strncpy strlen strncasecmp strcasecmp openlog closelog sysconf setenv if_indextoname setlocale asprintf)
 
 AC_FUNC_STRERROR_R
 
@@ -1443,15 +1461,15 @@ if test "x$have_getmntent" = "xc"; then
 fi
 if test "x$have_getmntent" = "xsun"; then
        AC_DEFINE(HAVE_SUN_GETMNTENT, 1,
-                 [Define if the function getmntent exists. It's the version from libsun.])
+                 [Define if the function getmntent exists. It is the version from libsun.])
 fi
 if test "x$have_getmntent" = "xseq"; then
        AC_DEFINE(HAVE_SEQ_GETMNTENT, 1,
-                 [Define if the function getmntent exists. It's the version from libseq.])
+                 [Define if the function getmntent exists. It is the version from libseq.])
 fi
 if test "x$have_getmntent" = "xgen"; then
        AC_DEFINE(HAVE_GEN_GETMNTENT, 1,
-                 [Define if the function getmntent exists. It's the version from libgen.])
+                 [Define if the function getmntent exists. It is the version from libgen.])
 fi
 
 # Check for htonll
@@ -2377,11 +2395,6 @@ AC_ARG_WITH(libiptc, [AS_HELP_STRING([--with-libiptc@<:@=PREFIX@:>@], [Path to l
        fi
 ])
 
-if test "x$with_libiptc" = "xpkgconfig" && test "x$PKG_CONFIG" = "x"
-then
-       with_libiptc="no (Don't have pkg-config)"
-fi
-
 if test "x$with_libiptc" = "xpkgconfig"
 then
        $PKG_CONFIG --exists 'libiptc' 2>/dev/null
@@ -2819,13 +2832,6 @@ AC_ARG_WITH(libmodbus, [AS_HELP_STRING([--with-libmodbus@<:@=PREFIX@:>@], [Path
 # configure using pkg-config
 if test "x$with_libmodbus" = "xuse_pkgconfig"
 then
-       if test "x$PKG_CONFIG" = "x"
-       then
-               with_libmodbus="no (Don't have pkg-config)"
-       fi
-fi
-if test "x$with_libmodbus" = "xuse_pkgconfig"
-then
        AC_MSG_NOTICE([Checking for libmodbus using $PKG_CONFIG])
        $PKG_CONFIG --exists 'libmodbus' 2>/dev/null
        if test $? -ne 0
@@ -3116,10 +3122,6 @@ AC_ARG_WITH(libmnl, [AS_HELP_STRING([--with-libmnl@<:@=PREFIX@:>@], [Path to lib
         with_libmnl="no (Linux only library)"
  fi
 ])
-if test "x$PKG_CONFIG" = "x"
-then
-       with_libmnl="no (Don't have pkg-config)"
-fi
 if test "x$with_libmnl" = "xyes"
 then
        if $PKG_CONFIG --exists libmnl 2>/dev/null; then
@@ -3655,7 +3657,7 @@ then
   SAVE_CFLAGS="$CFLAGS"
   SAVE_LIBS="$LIBS"
 dnl ARCHFLAGS="" -> disable multi -arch on OSX (see Config_heavy.pl:fetch_string)
-  PERL_CFLAGS=`ARCHFLAGS="" $perl_interpreter -MExtUtils::Embed -e ccopts`
+  PERL_CFLAGS=`ARCHFLAGS="" $perl_interpreter -MExtUtils::Embed -e perl_inc`
   PERL_LIBS=`ARCHFLAGS="" $perl_interpreter -MExtUtils::Embed -e ldopts`
   CFLAGS="$CFLAGS $PERL_CFLAGS"
   LIBS="$LIBS $PERL_LIBS"
@@ -4546,23 +4548,16 @@ AC_ARG_WITH(libstatgrab, [AS_HELP_STRING([--with-libstatgrab@<:@=PREFIX@:>@], [P
 if test "x$with_libstatgrab" = "xyes" \
   && test "x$with_libstatgrab_pkg_config" = "xyes"
 then
-  if test "x$PKG_CONFIG" != "x"
+  AC_MSG_CHECKING([pkg-config for libstatgrab])
+  temp_result="found"
+  $PKG_CONFIG --exists libstatgrab 2>/dev/null
+  if test "$?" != "0"
   then
-    AC_MSG_CHECKING([pkg-config for libstatgrab])
-    temp_result="found"
-    $PKG_CONFIG --exists libstatgrab 2>/dev/null
-    if test "$?" != "0"
-    then
-      with_libstatgrab_pkg_config="no"
-      with_libstatgrab="no (pkg-config doesn't know libstatgrab)"
-      temp_result="not found"
-    fi
-    AC_MSG_RESULT([$temp_result])
-  else
-    AC_MSG_NOTICE([pkg-config not available, trying to guess flags for the statgrab library.])
     with_libstatgrab_pkg_config="no"
-    with_libstatgrab_ldflags="$with_libstatgrab_ldflags -lstatgrab"
+    with_libstatgrab="no (pkg-config doesn't know libstatgrab)"
+    temp_result="not found"
   fi
+  AC_MSG_RESULT([$temp_result])
 fi
 
 if test "x$with_libstatgrab" = "xyes" \
@@ -4861,13 +4856,6 @@ fi
 # configure using pkg-config
 if test "x$with_libupsclient" = "xuse_pkgconfig"
 then
-       if test "x$PKG_CONFIG" = "x"
-       then
-               with_libupsclient="no (Don't have pkg-config)"
-       fi
-fi
-if test "x$with_libupsclient" = "xuse_pkgconfig"
-then
        AC_MSG_NOTICE([Checking for libupsclient using $PKG_CONFIG])
        $PKG_CONFIG --exists 'libupsclient' 2>/dev/null
        if test $? -ne 0
@@ -5189,13 +5177,6 @@ AC_ARG_WITH(libvarnish, [AS_HELP_STRING([--with-libvarnish@<:@=PREFIX@:>@], [Pat
 # configure using pkg-config
 if test "x$with_libvarnish" = "xuse_pkgconfig"
 then
-       if test "x$PKG_CONFIG" = "x"
-       then
-               with_libvarnish="no (Don't have pkg-config)"
-       fi
-fi
-if test "x$with_libvarnish" = "xuse_pkgconfig"
-then
        AC_MSG_NOTICE([Checking for varnishapi using $PKG_CONFIG])
        $PKG_CONFIG --exists 'varnishapi' 2>/dev/null
        if test $? -ne 0
@@ -5255,23 +5236,20 @@ with_libxml2_ldflags=""
 with_libvirt="no (pkg-config isn't available)"
 with_libvirt_cflags=""
 with_libvirt_ldflags=""
-if test "x$PKG_CONFIG" != "x"
+$PKG_CONFIG --exists 'libxml-2.0' 2>/dev/null
+if test "$?" = "0"
 then
-       $PKG_CONFIG --exists 'libxml-2.0' 2>/dev/null
-       if test "$?" = "0"
-       then
-               with_libxml2="yes"
-       else
-               with_libxml2="no (pkg-config doesn't know libxml-2.0)"
-       fi
+       with_libxml2="yes"
+else
+       with_libxml2="no (pkg-config doesn't know libxml-2.0)"
+fi
 
-       $PKG_CONFIG --exists libvirt 2>/dev/null
-       if test "$?" = "0"
-       then
-               with_libvirt="yes"
-       else
-               with_libvirt="no (pkg-config doesn't know libvirt)"
-       fi
+$PKG_CONFIG --exists libvirt 2>/dev/null
+if test "$?" = "0"
+then
+       with_libvirt="yes"
+else
+       with_libvirt="no (pkg-config doesn't know libvirt)"
 fi
 if test "x$with_libxml2" = "xyes"
 then
@@ -5370,17 +5348,6 @@ with_libopenipmipthread="yes"
 with_libopenipmipthread_cflags=""
 with_libopenipmipthread_libs=""
 
-AC_MSG_CHECKING([for pkg-config])
-temp_result="no"
-if test "x$PKG_CONFIG" = "x"
-then
-       with_libopenipmipthread="no"
-       temp_result="no"
-else
-       temp_result="$PKG_CONFIG"
-fi
-AC_MSG_RESULT([$temp_result])
-
 if test "x$with_libopenipmipthread" = "xyes"
 then
        AC_MSG_CHECKING([for libOpenIPMIpthread])
@@ -5648,6 +5615,7 @@ plugin_conntrack="no"
 plugin_contextswitch="no"
 plugin_cpu="no"
 plugin_cpufreq="no"
+plugin_cpusleep="no"
 plugin_curl_json="no"
 plugin_curl_xml="no"
 plugin_df="no"
@@ -5733,6 +5701,11 @@ then
        then
                plugin_turbostat="yes"
        fi
+       
+       if test "x$c_cv_have_clock_boottime_monotonic" = "xyes"
+       then
+               plugin_cpusleep="yes"
+       fi
 fi
 
 if test "x$ac_system" = "xOpenBSD"
@@ -6075,6 +6048,7 @@ AC_PLUGIN([conntrack],           [$plugin_conntrack],       [nf_conntrack statis
 AC_PLUGIN([contextswitch],       [$plugin_contextswitch],   [context switch statistics])
 AC_PLUGIN([cpu],                 [$plugin_cpu],             [CPU usage statistics])
 AC_PLUGIN([cpufreq],             [$plugin_cpufreq],         [CPU frequency statistics])
+AC_PLUGIN([cpusleep],            [$plugin_cpusleep],        [CPU sleep statistics])
 AC_PLUGIN([csv],                 [yes],                     [CSV output plugin])
 AC_PLUGIN([curl],                [$with_libcurl],           [CURL generic web statistics])
 AC_PLUGIN([curl_json],           [$plugin_curl_json],       [CouchDB statistics])
@@ -6488,6 +6462,7 @@ AC_MSG_RESULT([    conntrack . . . . . . $enable_conntrack])
 AC_MSG_RESULT([    contextswitch . . . . $enable_contextswitch])
 AC_MSG_RESULT([    cpu . . . . . . . . . $enable_cpu])
 AC_MSG_RESULT([    cpufreq . . . . . . . $enable_cpufreq])
+AC_MSG_RESULT([    cpusleep  . . . . . . $enable_cpusleep])
 AC_MSG_RESULT([    csv . . . . . . . . . $enable_csv])
 AC_MSG_RESULT([    curl  . . . . . . . . $enable_curl])
 AC_MSG_RESULT([    curl_json . . . . . . $enable_curl_json])
index a262eca..8b8143f 100644 (file)
@@ -27,6 +27,21 @@ noinst_LTLIBRARIES =
 check_PROGRAMS =
 TESTS =
 
+noinst_LTLIBRARIES += libformat_json.la
+libformat_json_la_SOURCES   = utils_format_json.c utils_format_json.h
+libformat_json_la_CPPFLAGS  = $(AM_CPPFLAGS)
+libformat_json_la_LDFLAGS   = $(AM_LDFLAGS)
+libformat_json_la_LIBADD    =
+if BUILD_WITH_LIBYAJL
+libformat_json_la_CPPFLAGS += $(BUILD_WITH_LIBYAJL_CPPFLAGS)
+libformat_json_la_LDFLAGS  += $(BUILD_WITH_LIBYAJL_LDFLAGS)
+libformat_json_la_LIBADD   += $(BUILD_WITH_LIBYAJL_LIBS)
+check_PROGRAMS += test_format_json
+TESTS += test_format_json
+test_format_json_SOURCES = utils_format_json_test.c testing.h
+test_format_json_LDADD = libformat_json.la daemon/libmetadata.la daemon/libplugin_mock.la -lm
+endif
+
 noinst_LTLIBRARIES += liblatency.la
 liblatency_la_SOURCES = utils_latency.c utils_latency.h
 check_PROGRAMS += test_utils_latency
@@ -141,11 +156,10 @@ pkglib_LTLIBRARIES += amqp.la
 amqp_la_SOURCES = amqp.c \
                  utils_cmd_putval.c utils_cmd_putval.h \
                  utils_parse_option.c utils_parse_option.h \
-                 utils_format_graphite.c utils_format_graphite.h \
-                 utils_format_json.c utils_format_json.h
+                 utils_format_graphite.c utils_format_graphite.h
 amqp_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBRABBITMQ_LDFLAGS)
 amqp_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBRABBITMQ_CPPFLAGS)
-amqp_la_LIBADD = $(BUILD_WITH_LIBRABBITMQ_LIBS)
+amqp_la_LIBADD = $(BUILD_WITH_LIBRABBITMQ_LIBS) libformat_json.la
 endif
 
 if BUILD_PLUGIN_APACHE
@@ -279,6 +293,12 @@ cpufreq_la_SOURCES = cpufreq.c
 cpufreq_la_LDFLAGS = $(PLUGIN_LDFLAGS)
 endif
 
+if BUILD_PLUGIN_CPUSLEEP
+pkglib_LTLIBRARIES += cpusleep.la
+cpusleep_la_SOURCES = cpusleep.c
+cpusleep_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+endif
+
 if BUILD_PLUGIN_CSV
 pkglib_LTLIBRARIES += csv.la
 csv_la_SOURCES = csv.c
@@ -1213,31 +1233,29 @@ endif
 if BUILD_PLUGIN_WRITE_GRAPHITE
 pkglib_LTLIBRARIES += write_graphite.la
 write_graphite_la_SOURCES = write_graphite.c \
-                        utils_format_graphite.c utils_format_graphite.h \
-                        utils_format_json.c utils_format_json.h
+                        utils_format_graphite.c utils_format_graphite.h
 write_graphite_la_LDFLAGS = $(PLUGIN_LDFLAGS)
+write_graphite_la_LIBADD = libformat_json.la
 endif
 
 if BUILD_PLUGIN_WRITE_HTTP
 pkglib_LTLIBRARIES += write_http.la
 write_http_la_SOURCES = write_http.c \
-                       utils_format_json.c utils_format_json.h \
                        utils_format_kairosdb.c utils_format_kairosdb.h
-write_http_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBCURL_CFLAGS)
 write_http_la_LDFLAGS = $(PLUGIN_LDFLAGS)
-write_http_la_LIBADD = $(BUILD_WITH_LIBCURL_LIBS)
+write_http_la_CFLAGS = $(AM_CFLAGS) $(BUILD_WITH_LIBCURL_CFLAGS)
+write_http_la_LIBADD = $(BUILD_WITH_LIBCURL_LIBS) libformat_json.la
 endif
 
 if BUILD_PLUGIN_WRITE_KAFKA
 pkglib_LTLIBRARIES += write_kafka.la
 write_kafka_la_SOURCES = write_kafka.c \
                         utils_format_graphite.c utils_format_graphite.h \
-                        utils_format_json.c utils_format_json.h \
                         utils_cmd_putval.c utils_cmd_putval.h \
                         utils_crc32.c utils_crc32.h
 write_kafka_la_CPPFLAGS = $(AM_CPPFLAGS) $(BUILD_WITH_LIBRDKAFKA_CPPFLAGS)
 write_kafka_la_LDFLAGS = $(PLUGIN_LDFLAGS) $(BUILD_WITH_LIBRDKAFKA_LDFLAGS)
-write_kafka_la_LIBADD = $(BUILD_WITH_LIBRDKAFKA_LIBS)
+write_kafka_la_LIBADD = $(BUILD_WITH_LIBRDKAFKA_LIBS) libformat_json.la
 endif
 
 if BUILD_PLUGIN_WRITE_LOG
index 92f34bc..b9db500 100644 (file)
@@ -483,9 +483,7 @@ static void agg_lookup_free_obj_callback (void *user_obj) /* {{{ */
 static int agg_config_handle_group_by (oconfig_item_t const *ci, /* {{{ */
     aggregation_t *agg)
 {
-  int i;
-
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
     char const *value;
 
@@ -521,7 +519,6 @@ static int agg_config_aggregation (oconfig_item_t *ci) /* {{{ */
   aggregation_t *agg;
   _Bool is_valid;
   int status;
-  int i;
 
   agg = calloc (1, sizeof (*agg));
   if (agg == NULL)
@@ -538,7 +535,7 @@ static int agg_config_aggregation (oconfig_item_t *ci) /* {{{ */
   sstrncpy (agg->ident.type_instance, "/.*/",
       sizeof (agg->ident.type_instance));
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -676,8 +673,6 @@ static int agg_config_aggregation (oconfig_item_t *ci) /* {{{ */
 
 static int agg_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
   pthread_mutex_lock (&agg_instance_list_lock);
 
   if (lookup == NULL)
@@ -694,7 +689,7 @@ static int agg_config (oconfig_item_t *ci) /* {{{ */
     }
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -712,7 +707,6 @@ static int agg_config (oconfig_item_t *ci) /* {{{ */
 
 static int agg_read (void) /* {{{ */
 {
-  agg_instance_t *this;
   cdtime_t t;
   int success;
 
@@ -733,7 +727,7 @@ static int agg_read (void) /* {{{ */
     return (0);
   }
 
-  for (this = agg_instance_list_head; this != NULL; this = this->next)
+  for (agg_instance_t *this = agg_instance_list_head; this != NULL; this = this->next)
   {
     int status;
 
index 809d554..89f051e 100644 (file)
@@ -528,13 +528,11 @@ static int camqp_connect (camqp_config_t *conf) /* {{{ */
 
 static int camqp_shutdown (void) /* {{{ */
 {
-    size_t i;
-
     DEBUG ("amqp plugin: Shutting down %zu subscriber threads.",
             subscriber_threads_num);
 
     subscriber_threads_running = 0;
-    for (i = 0; i < subscriber_threads_num; i++)
+    for (size_t i = 0; i < subscriber_threads_num; i++)
     {
         /* FIXME: Sending a signal is not very elegant here. Maybe find out how
          * to use a timeout in the thread and check for the variable in regular
@@ -822,7 +820,6 @@ static int camqp_write (const data_set_t *ds, const value_list_t *vl, /* {{{ */
     }
     else
     {
-        size_t i;
         ssnprintf (routing_key, sizeof (routing_key), "collectd/%s/%s/%s/%s/%s",
                 vl->host,
                 vl->plugin, vl->plugin_instance,
@@ -830,7 +827,7 @@ static int camqp_write (const data_set_t *ds, const value_list_t *vl, /* {{{ */
 
         /* Switch slashes (the only character forbidden by collectd) and dots
          * (the separation character used by AMQP). */
-        for (i = 0; routing_key[i] != 0; i++)
+        for (size_t i = 0; routing_key[i] != 0; i++)
         {
             if (routing_key[i] == '.')
                 routing_key[i] = '/';
@@ -920,7 +917,6 @@ static int camqp_config_connection (oconfig_item_t *ci, /* {{{ */
 {
     camqp_config_t *conf;
     int status;
-    int i;
 
     conf = calloc (1, sizeof (*conf));
     if (conf == NULL)
@@ -967,7 +963,7 @@ static int camqp_config_connection (oconfig_item_t *ci, /* {{{ */
         return (status);
     }
 
-    for (i = 0; i < ci->children_num; i++)
+    for (int i = 0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
 
@@ -1100,9 +1096,7 @@ static int camqp_config_connection (oconfig_item_t *ci, /* {{{ */
 
 static int camqp_config (oconfig_item_t *ci) /* {{{ */
 {
-    int i;
-
-    for (i = 0; i < ci->children_num; i++)
+    for (int i = 0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
 
index 59ddd8f..650d678 100644 (file)
@@ -175,7 +175,6 @@ static size_t apache_header_callback (void *buf, size_t size, size_t nmemb,
 static int config_add (oconfig_item_t *ci)
 {
        apache_t *st;
-       int i;
        int status;
 
        st = calloc (1, sizeof (*st));
@@ -195,7 +194,7 @@ static int config_add (oconfig_item_t *ci)
        }
        assert (st->name != NULL);
 
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -272,9 +271,8 @@ static int config_add (oconfig_item_t *ci)
 static int config (oconfig_item_t *ci)
 {
        int status = 0;
-       int i;
 
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -465,8 +463,7 @@ static void submit_scoreboard (char *buf, apache_t *st)
        long long response_start = 0LL;
        long long response_end   = 0LL;
 
-       int i;
-       for (i = 0; buf[i] != '\0'; i++)
+       for (int i = 0; buf[i] != '\0'; i++)
        {
                if (buf[i] == '.') open++;
                else if (buf[i] == '_') waiting++;
index a1f2382..cc20357 100644 (file)
@@ -381,10 +381,9 @@ static int apc_query_server (char const *node, char const *service,
 
 static int apcups_config (oconfig_item_t *ci)
 {
-       int i;
        _Bool persistent_conn_set = 0;
 
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
index 1c72dda..48fbcb9 100644 (file)
@@ -114,8 +114,6 @@ static int as_read (void)
        char   inst[128];
        int    value_int;
        double value_double;
-       int    i;
-
        if (!io_master_port || (io_master_port == MACH_PORT_NULL))
                return (-1);
 
@@ -170,7 +168,7 @@ static int as_read (void)
                                        kCFStringEncodingASCII))
                        continue;
                inst[sizeof (inst) - 1] = '\0';
-               for (i = 0; i < 128; i++)
+               for (int i = 0; i < 128; i++)
                {
                        if (inst[i] == '\0')
                                break;
index ad711ee..81a4efd 100644 (file)
@@ -34,9 +34,7 @@ static char *conf_device = NULL;
 
 static int aquaero_config (oconfig_item_t *ci)
 {
-       int i;
-
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -88,9 +86,8 @@ static void aquaero_submit_array (const char *type,
                const char *type_instance_prefix, double *value_array, int len)
 {
        char type_instance[DATA_MAX_NAME_LEN];
-       int i;
 
-       for (i = 0; i < len; i++)
+       for (int i = 0; i < len; i++)
        {
                if (value_array[i] == AQ5_FLOAT_UNDEF)
                        continue;
@@ -107,7 +104,6 @@ static int aquaero_read (void)
        aq5_settings_t aq_sett;
        char *err_msg = NULL;
        char type_instance[DATA_MAX_NAME_LEN];
-       int i;
 
        if (libaquaero5_poll(conf_device, &aq_data, &err_msg) < 0)
        {
@@ -148,7 +144,7 @@ static int aquaero_read (void)
                        AQ5_NUM_OTHER_SENSORS);
 
        /* Fans */
-       for (i = 0; i < AQ5_NUM_FAN; i++)
+       for (int i = 0; i < AQ5_NUM_FAN; i++)
        {
                if ((aq_sett.fan_data_source[i] == NONE)
                                || (aq_data.fan_vrm_temp[i] != AQ5_FLOAT_UNDEF))
index 504decc..20fef65 100644 (file)
@@ -182,20 +182,19 @@ static size_t ascent_curl_callback (void *buf, size_t size, size_t nmemb, /* {{{
 
 static int ascent_submit_players (player_stats_t *ps) /* {{{ */
 {
-  size_t i;
   gauge_t value;
 
-  for (i = 0; i < RACES_LIST_LENGTH; i++)
+  for (size_t i = 0; i < RACES_LIST_LENGTH; i++)
     if (races_list[i] != NULL)
       ascent_submit_gauge ("by-race", "players", races_list[i],
           (gauge_t) ps->races[i]);
 
-  for (i = 0; i < CLASSES_LIST_LENGTH; i++)
+  for (size_t i = 0; i < CLASSES_LIST_LENGTH; i++)
     if (classes_list[i] != NULL)
       ascent_submit_gauge ("by-class", "players", classes_list[i],
           (gauge_t) ps->classes[i]);
 
-  for (i = 0; i < GENDERS_LIST_LENGTH; i++)
+  for (size_t i = 0; i < GENDERS_LIST_LENGTH; i++)
     if (genders_list[i] != NULL)
       ascent_submit_gauge ("by-gender", "players", genders_list[i],
           (gauge_t) ps->genders[i]);
@@ -329,9 +328,7 @@ static int ascent_xml_read_int (xmlDoc *doc, xmlNode *node, /* {{{ */
 static int ascent_xml_sessions_plr (xmlDoc *doc, xmlNode *node, /* {{{ */
     player_info_t *pi)
 {
-  xmlNode *child;
-
-  for (child = node->xmlChildrenNode; child != NULL; child = child->next)
+  for (xmlNode *child = node->xmlChildrenNode; child != NULL; child = child->next)
   {
     if ((xmlStrcmp ((const xmlChar *) "comment", child->name) == 0)
         || (xmlStrcmp ((const xmlChar *) "text", child->name) == 0))
@@ -365,12 +362,11 @@ static int ascent_xml_sessions_plr (xmlDoc *doc, xmlNode *node, /* {{{ */
 
 static int ascent_xml_sessions (xmlDoc *doc, xmlNode *node) /* {{{ */
 {
-  xmlNode *child;
   player_stats_t ps = {
     .level_sum = 0
   };
 
-  for (child = node->xmlChildrenNode; child != NULL; child = child->next)
+  for (xmlNode *child = node->xmlChildrenNode; child != NULL; child = child->next)
   {
     if ((xmlStrcmp ((const xmlChar *) "comment", child->name) == 0)
         || (xmlStrcmp ((const xmlChar *) "text", child->name) == 0))
@@ -397,9 +393,7 @@ static int ascent_xml_sessions (xmlDoc *doc, xmlNode *node) /* {{{ */
 
 static int ascent_xml_status (xmlDoc *doc, xmlNode *node) /* {{{ */
 {
-  xmlNode *child;
-
-  for (child = node->xmlChildrenNode; child != NULL; child = child->next)
+  for (xmlNode *child = node->xmlChildrenNode; child != NULL; child = child->next)
   {
     if ((xmlStrcmp ((const xmlChar *) "comment", child->name) == 0)
         || (xmlStrcmp ((const xmlChar *) "text", child->name) == 0))
@@ -439,7 +433,6 @@ static int ascent_xml (const char *data) /* {{{ */
 {
   xmlDoc *doc;
   xmlNode *cur;
-  xmlNode *child;
 
 #if 0
   doc = xmlParseMemory (data, strlen (data),
@@ -470,7 +463,7 @@ static int ascent_xml (const char *data) /* {{{ */
     return (-1);
   }
 
-  for (child = cur->xmlChildrenNode; child != NULL; child = child->next)
+  for (xmlNode *child = cur->xmlChildrenNode; child != NULL; child = child->next)
   {
     if ((xmlStrcmp ((const xmlChar *) "comment", child->name) == 0)
         || (xmlStrcmp ((const xmlChar *) "text", child->name) == 0))
index e1a45cd..fba3450 100644 (file)
@@ -408,7 +408,6 @@ static int get_reference_temperature(double * result)
 
     gauge_t * values = NULL;   /**< rate values */
     size_t    values_num = 0;  /**< number of rate values */
-    size_t i;
 
     gauge_t values_history[REF_TEMP_AVG_NUM];
 
@@ -446,7 +445,7 @@ static int get_reference_temperature(double * result)
             list->initialized = 1;
             list->num_values = values_num;
 
-            for(i=0; i<values_num; ++i)
+            for(size_t i=0; i<values_num; ++i)
             {
                 DEBUG ("barometer: get_reference_temperature - rate %zu: %lf **",
                        i, values[i]);
@@ -475,7 +474,7 @@ static int get_reference_temperature(double * result)
             continue;
         }
 
-        for(i=0; i<REF_TEMP_AVG_NUM*list->num_values; ++i)
+        for(size_t i=0; i<REF_TEMP_AVG_NUM*list->num_values; ++i)
         {
             DEBUG ("barometer: get_reference_temperature - history %zu: %lf",
                    i, values_history[i]);
@@ -500,7 +499,7 @@ static int get_reference_temperature(double * result)
                 continue;
             }
 
-            for(i=0; i<values_num; ++i)
+            for(size_t i=0; i<values_num; ++i)
             {
                 DEBUG ("barometer: get_reference_temperature - rate last %zu: %lf **",
                        i, values[i]);
@@ -1581,8 +1580,7 @@ static int MPL115_collectd_barometer_read (void)
        already available. */
     if(!avg_initialized)
     {
-        int i;
-        for(i=0; i<config_oversample-1; ++i)
+        for(int i=0; i<config_oversample-1; ++i)
         {
             result = MPL115_read_averaged(&pressure, &temperature);
             if(result)
index 93a7a76..a084319 100644 (file)
@@ -202,7 +202,6 @@ static void get_via_io_power_sources (double *ret_charge, /* {{{ */
        CFTypeRef       ps_obj;
 
        double temp_double;
-       int i;
 
        ps_raw       = IOPSCopyPowerSourcesInfo ();
        ps_array     = IOPSCopyPowerSourcesList (ps_raw);
@@ -210,7 +209,7 @@ static void get_via_io_power_sources (double *ret_charge, /* {{{ */
 
        DEBUG ("ps_array_len == %i", ps_array_len);
 
-       for (i = 0; i < ps_array_len; i++)
+       for (int i = 0; i < ps_array_len; i++)
        {
                ps_obj  = CFArrayGetValueAtIndex (ps_array, i);
                ps_dict = IOPSGetPowerSourceDescription (ps_raw, ps_obj);
@@ -275,7 +274,6 @@ static void get_via_generic_iokit (double *ret_capacity_full, /* {{{ */
        CFDictionaryRef bat_root_dict;
        CFArrayRef      bat_info_arry;
        CFIndex         bat_info_arry_len;
-       CFIndex         bat_info_arry_pos;
        CFDictionaryRef bat_info_dict;
 
        double temp_double;
@@ -310,7 +308,7 @@ static void get_via_generic_iokit (double *ret_capacity_full, /* {{{ */
                }
                bat_info_arry_len = CFArrayGetCount (bat_info_arry);
 
-               for (bat_info_arry_pos = 0;
+               for (CFIndex bat_info_arry_pos = 0;
                                bat_info_arry_pos < bat_info_arry_len;
                                bat_info_arry_pos++)
                {
@@ -714,11 +712,10 @@ static int read_acpi (void) /* {{{ */
 
 static int read_pmu (void) /* {{{ */
 {
-       int i;
-
+       int i = 0;
        /* The upper limit here is just a safeguard. If there is a system with
         * more than 100 batteries, this can easily be increased. */
-       for (i = 0; i < 100; i++)
+       for (; i < 100; i++)
        {
                FILE *fh;
 
@@ -803,9 +800,7 @@ static int battery_read (void) /* {{{ */
 
 static int battery_config (oconfig_item_t *ci)
 {
-       int i;
-
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
index c768b66..7fda034 100644 (file)
@@ -310,12 +310,11 @@ static int bind_xml_table_callback (const char *name, value_t value, /* {{{ */
     time_t current_time, void *user_data)
 {
   translation_table_ptr_t *table = (translation_table_ptr_t *) user_data;
-  size_t i;
 
   if (table == NULL)
     return (-1);
 
-  for (i = 0; i < table->table_length; i++)
+  for (size_t i = 0; i < table->table_length; i++)
   {
     if (strcmp (table->table[i].xml_name, name) != 0)
       continue;
@@ -491,7 +490,6 @@ static int bind_parse_generic_name_value (const char *xpath_expression, /* {{{ *
 {
   xmlXPathObject *xpathObj = NULL;
   int num_entries;
-  int i;
 
   xpathObj = xmlXPathEvalExpression(BAD_CAST xpath_expression, xpathCtx);
   if (xpathObj == NULL)
@@ -503,19 +501,18 @@ static int bind_parse_generic_name_value (const char *xpath_expression, /* {{{ *
 
   num_entries = 0;
   /* Iterate over all matching nodes. */
-  for (i = 0; xpathObj->nodesetval && (i < xpathObj->nodesetval->nodeNr); i++)
+  for (int i = 0; xpathObj->nodesetval && (i < xpathObj->nodesetval->nodeNr); i++)
   {
     xmlNode *name_node = NULL;
     xmlNode *counter = NULL;
     xmlNode *parent;
-    xmlNode *child;
 
     parent = xpathObj->nodesetval->nodeTab[i];
     DEBUG ("bind plugin: bind_parse_generic_name_value: parent->name = %s;",
         (char *) parent->name);
 
     /* Iterate over all child nodes. */
-    for (child = parent->xmlChildrenNode;
+    for (xmlNode *child = parent->xmlChildrenNode;
         child != NULL;
         child = child->next)
     {
@@ -578,7 +575,6 @@ static int bind_parse_generic_value_list (const char *xpath_expression, /* {{{ *
 {
   xmlXPathObject *xpathObj = NULL;
   int num_entries;
-  int i;
 
   xpathObj = xmlXPathEvalExpression(BAD_CAST xpath_expression, xpathCtx);
   if (xpathObj == NULL)
@@ -590,12 +586,10 @@ static int bind_parse_generic_value_list (const char *xpath_expression, /* {{{ *
 
   num_entries = 0;
   /* Iterate over all matching nodes. */
-  for (i = 0; xpathObj->nodesetval && (i < xpathObj->nodesetval->nodeNr); i++)
+  for (int i = 0; xpathObj->nodesetval && (i < xpathObj->nodesetval->nodeNr); i++)
   {
-    xmlNode *child;
-
     /* Iterate over all child nodes. */
-    for (child = xpathObj->nodesetval->nodeTab[i]->xmlChildrenNode;
+    for (xmlNode *child = xpathObj->nodesetval->nodeTab[i]->xmlChildrenNode;
         child != NULL;
         child = child->next)
     {
@@ -649,7 +643,6 @@ static int bind_parse_generic_name_attr_value_list (const char *xpath_expression
 {
   xmlXPathObject *xpathObj = NULL;
   int num_entries;
-  int i;
 
   xpathObj = xmlXPathEvalExpression(BAD_CAST xpath_expression, xpathCtx);
   if (xpathObj == NULL)
@@ -661,12 +654,10 @@ static int bind_parse_generic_name_attr_value_list (const char *xpath_expression
 
   num_entries = 0;
   /* Iterate over all matching nodes. */
-  for (i = 0; xpathObj->nodesetval && (i < xpathObj->nodesetval->nodeNr); i++)
+  for (int i = 0; xpathObj->nodesetval && (i < xpathObj->nodesetval->nodeNr); i++)
   {
-    xmlNode *child;
-
     /* Iterate over all child nodes. */
-    for (child = xpathObj->nodesetval->nodeTab[i]->xmlChildrenNode;
+    for (xmlNode *child = xpathObj->nodesetval->nodeTab[i]->xmlChildrenNode;
         child != NULL;
         child = child->next)
     {
@@ -714,7 +705,6 @@ static int bind_xml_stats_handle_zone (int version, xmlDoc *doc, /* {{{ */
 {
   xmlXPathObject *path_obj;
   char *zone_name = NULL;
-  int i;
   size_t j;
 
   if (version >= 3)
@@ -738,7 +728,7 @@ static int bind_xml_stats_handle_zone (int version, xmlDoc *doc, /* {{{ */
       return (-1);
     }
 
-    for (i = 0; path_obj->nodesetval && (i < path_obj->nodesetval->nodeNr); i++)
+    for (int i = 0; path_obj->nodesetval && (i < path_obj->nodesetval->nodeNr); i++)
     {
       zone_name = (char *) xmlNodeListGetString (doc,
           path_obj->nodesetval->nodeTab[i]->xmlChildrenNode, 1);
@@ -817,7 +807,6 @@ static int bind_xml_stats_search_zones (int version, xmlDoc *doc, /* {{{ */
 {
   xmlXPathObject *zone_nodes = NULL;
   xmlXPathContext *zone_path_context;
-  int i;
 
   zone_path_context = xmlXPathNewContext (doc);
   if (zone_path_context == NULL)
@@ -834,7 +823,7 @@ static int bind_xml_stats_search_zones (int version, xmlDoc *doc, /* {{{ */
     return (-1);
   }
 
-  for (i = 0; i < zone_nodes->nodesetval->nodeNr; i++)
+  for (int i = 0; i < zone_nodes->nodesetval->nodeNr; i++)
   {
     node = zone_nodes->nodesetval->nodeTab[i];
     assert (node != NULL);
@@ -855,7 +844,6 @@ static int bind_xml_stats_handle_view (int version, xmlDoc *doc, /* {{{ */
 {
   char *view_name = NULL;
   cb_view_t *view;
-  int i;
   size_t j;
 
   if (version == 3)
@@ -887,7 +875,7 @@ static int bind_xml_stats_handle_view (int version, xmlDoc *doc, /* {{{ */
       return (-1);
     }
 
-    for (i = 0; path_obj->nodesetval && (i < path_obj->nodesetval->nodeNr); i++)
+    for (int i = 0; path_obj->nodesetval && (i < path_obj->nodesetval->nodeNr); i++)
     {
       view_name = (char *) xmlNodeListGetString (doc,
           path_obj->nodesetval->nodeTab[i]->xmlChildrenNode, 1);
@@ -1010,7 +998,6 @@ static int bind_xml_stats_search_views (int version, xmlDoc *doc, /* {{{ */
 {
   xmlXPathObject *view_nodes = NULL;
   xmlXPathContext *view_path_context;
-  int i;
 
   view_path_context = xmlXPathNewContext (doc);
   if (view_path_context == NULL)
@@ -1027,7 +1014,7 @@ static int bind_xml_stats_search_views (int version, xmlDoc *doc, /* {{{ */
     return (-1);
   }
 
-  for (i = 0; i < view_nodes->nodesetval->nodeNr; i++)
+  for (int i = 0; i < view_nodes->nodesetval->nodeNr; i++)
   {
     xmlNode *node;
 
@@ -1441,7 +1428,6 @@ static int bind_xml (const char *data) /* {{{ */
   xmlXPathContext *xpathCtx = NULL;
   xmlXPathObject *xpathObj = NULL;
   int ret = -1;
-  int i;
 
   doc = xmlParseMemory (data, strlen (data));
   if (doc == NULL)
@@ -1471,7 +1457,7 @@ static int bind_xml (const char *data) /* {{{ */
   }
   else
   {
-    for (i = 0; i < xpathObj->nodesetval->nodeNr; i++)
+    for (int i = 0; i < xpathObj->nodesetval->nodeNr; i++)
     {
       xmlNode *node;
       char *attr_version;
@@ -1533,7 +1519,7 @@ static int bind_xml (const char *data) /* {{{ */
     return (-1);
   }
 
-  for (i = 0; i < xpathObj->nodesetval->nodeNr; i++)
+  for (int i = 0; i < xpathObj->nodesetval->nodeNr; i++)
   {
     xmlNode *node;
     char *attr_version;
@@ -1636,7 +1622,6 @@ static int bind_config_add_view_zone (cb_view_t *view, /* {{{ */
 static int bind_config_add_view (oconfig_item_t *ci) /* {{{ */
 {
   cb_view_t *tmp;
-  int i;
 
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
@@ -1668,7 +1653,7 @@ static int bind_config_add_view (oconfig_item_t *ci) /* {{{ */
     return (-1);
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -1693,9 +1678,7 @@ static int bind_config_add_view (oconfig_item_t *ci) /* {{{ */
 
 static int bind_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 62f7581..cbfdd22 100644 (file)
@@ -270,14 +270,13 @@ ceph_cb_number(void *ctx, const char *number_val, yajl_len_t number_len)
     char buffer[number_len+1];
     char key[2 * DATA_MAX_NAME_LEN];
     _Bool latency_type = 0;
-    size_t i;
     int status;
 
     key[0] = '\0';
     memcpy(buffer, number_val, number_len);
     buffer[sizeof(buffer) - 1] = '\0';
 
-    for (i = 0; i < state->depth; i++)
+    for (size_t i = 0; i < state->depth; i++)
     {
         if (state->stack[i] == NULL)
             continue;
@@ -423,8 +422,7 @@ static void ceph_daemon_print(const struct ceph_daemon *d)
 
 static void ceph_daemons_print(void)
 {
-    int i;
-    for(i = 0; i < g_num_daemons; ++i)
+    for(int i = 0; i < g_num_daemons; ++i)
     {
         ceph_daemon_print(g_daemons[i]);
     }
@@ -432,15 +430,15 @@ static void ceph_daemons_print(void)
 
 static void ceph_daemon_free(struct ceph_daemon *d)
 {
-    int i = 0;
-    for(; i < d->last_idx; i++)
+    for(int i = 0; i < d->last_idx; i++)
     {
         sfree(d->last_poll_data[i]);
     }
     sfree(d->last_poll_data);
     d->last_poll_data = NULL;
     d->last_idx = 0;
-    for(i = 0; i < d->ds_num; i++)
+
+    for(int i = 0; i < d->ds_num; i++)
     {
         sfree(d->ds_names[i]);
     }
@@ -549,10 +547,9 @@ static _Bool has_suffix (char const *str, char const *suffix)
 /* count_parts returns the number of elements a "foo.bar.baz" style key has. */
 static size_t count_parts (char const *key)
 {
-    char const *ptr;
     size_t parts_num = 0;
 
-    for (ptr = key; ptr != NULL; ptr = strchr (ptr + 1, '.'))
+    for (const char *ptr = key; ptr != NULL; ptr = strchr (ptr + 1, '.'))
         parts_num++;
 
     return parts_num;
@@ -684,7 +681,7 @@ static int cc_handle_bool(struct oconfig_item_s *item, int *dest)
 
 static int cc_add_daemon_config(oconfig_item_t *ci)
 {
-    int ret, i;
+    int ret;
     struct ceph_daemon *nd, cd = { 0 };
     struct ceph_daemon **tmp;
 
@@ -701,7 +698,7 @@ static int cc_add_daemon_config(oconfig_item_t *ci)
         return ret;
     }
 
-    for(i=0; i < ci->children_num; i++)
+    for(int i=0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
 
@@ -758,9 +755,9 @@ static int cc_add_daemon_config(oconfig_item_t *ci)
 
 static int ceph_config(oconfig_item_t *ci)
 {
-    int ret, i;
+    int ret;
 
-    for(i = 0; i < ci->children_num; ++i)
+    for(int i = 0; i < ci->children_num; ++i)
     {
         oconfig_item_t *child = ci->children + i;
         if(strcasecmp("Daemon", child->key) == 0)
@@ -897,8 +894,7 @@ static int update_last(struct ceph_daemon *d, const char *ds_n, int index,
  */
 static int backup_search_for_last_avg(struct ceph_daemon *d, const char *ds_n)
 {
-    int i = 0;
-    for(; i < d->last_idx; i++)
+    for(int i = 0; i < d->last_idx; i++)
     {
         if(strcmp(d->last_poll_data[i]->ds_name, ds_n) == 0)
         {
@@ -958,12 +954,11 @@ static double get_last_avg(struct ceph_daemon *d, const char *ds_n, int index,
  */
 static uint32_t backup_search_for_type(struct ceph_daemon *d, char *ds_name)
 {
-    int idx = 0;
-    for(; idx < d->ds_num; idx++)
+    for(int i = 0; i < d->ds_num; i++)
     {
-        if(strcmp(d->ds_names[idx], ds_name) == 0)
+        if(strcmp(d->ds_names[i], ds_name) == 0)
         {
-            return d->ds_types[idx];
+            return d->ds_types[i];
         }
     }
     return DSET_TYPE_UNFOUND;
@@ -1458,7 +1453,7 @@ static int milli_diff(const struct timeval *t1, const struct timeval *t2)
  */
 static int cconn_main_loop(uint32_t request_type)
 {
-    int i, ret, some_unreachable = 0;
+    int ret, some_unreachable = 0;
     struct timeval end_tv;
     struct cconn io_array[g_num_daemons];
 
@@ -1466,7 +1461,7 @@ static int cconn_main_loop(uint32_t request_type)
 
     /* create cconn array */
     memset(io_array, 0, sizeof(io_array));
-    for(i = 0; i < g_num_daemons; ++i)
+    for(int i = 0; i < g_num_daemons; ++i)
     {
         io_array[i].d = g_daemons[i];
         io_array[i].request_type = request_type;
@@ -1485,7 +1480,7 @@ static int cconn_main_loop(uint32_t request_type)
         struct pollfd fds[g_num_daemons];
         memset(fds, 0, sizeof(fds));
         nfds = 0;
-        for(i = 0; i < g_num_daemons; ++i)
+        for(int i = 0; i < g_num_daemons; ++i)
         {
             struct cconn *io = io_array + i;
             ret = cconn_prepare(io, fds + nfds);
@@ -1523,7 +1518,7 @@ static int cconn_main_loop(uint32_t request_type)
             ERROR("ceph plugin: poll(2) error: %d", ret);
             goto done;
         }
-        for(i = 0; i < nfds; ++i)
+        for(int i = 0; i < nfds; ++i)
         {
             struct cconn *io = polled_io_array[i];
             int revents = fds[i].revents;
@@ -1554,7 +1549,7 @@ static int cconn_main_loop(uint32_t request_type)
             }
         }
     }
-    done: for(i = 0; i < g_num_daemons; ++i)
+    done: for(int i = 0; i < g_num_daemons; ++i)
     {
         cconn_close(io_array + i);
     }
@@ -1587,8 +1582,7 @@ static int ceph_init(void)
 
 static int ceph_shutdown(void)
 {
-    int i;
-    for(i = 0; i < g_num_daemons; ++i)
+    for(int i = 0; i < g_num_daemons; ++i)
     {
         ceph_daemon_free(g_daemons[i]);
     }
index 508ba90..3a59ec4 100644 (file)
@@ -207,18 +207,16 @@ static int cgroups_config (const char *key, const char *value)
 
 static int cgroups_read (void)
 {
-       cu_mount_t *mnt_list;
-       cu_mount_t *mnt_ptr;
+       cu_mount_t *mnt_list = NULL;
        _Bool cgroup_found = 0;
 
-       mnt_list = NULL;
        if (cu_mount_getlist (&mnt_list) == NULL)
        {
                ERROR ("cgroups plugin: cu_mount_getlist failed.");
                return (-1);
        }
 
-       for (mnt_ptr = mnt_list; mnt_ptr != NULL; mnt_ptr = mnt_ptr->next)
+       for (cu_mount_t *mnt_ptr = mnt_list; mnt_ptr != NULL; mnt_ptr = mnt_ptr->next)
        {
                /* Find the cgroup mountpoint which contains the cpuacct
                 * controller. */
index 1735b49..0485036 100644 (file)
@@ -1053,7 +1053,7 @@ chrony_read(void)
 {
   /* collectd read callback: Perform data acquisition */
   int rc;
-  unsigned int now_src, n_sources;
+  unsigned int n_sources;
 
   if (g_chrony_seq_is_initialized == 0)
   {
@@ -1075,7 +1075,7 @@ chrony_read(void)
   if (rc != CHRONY_RC_OK)
     return rc;
 
-  for (now_src = 0; now_src < n_sources; ++now_src)
+  for (unsigned int now_src = 0; now_src < n_sources; ++now_src)
   {
     int is_reachable;
     rc = chrony_request_source_data(now_src, &is_reachable);
index c1a8515..12187f3 100644 (file)
@@ -128,8 +128,6 @@ static int filter_ds (size_t *values_num,
        gauge_t *new_values;
        char   **new_names;
 
-       size_t i;
-
        if (match_ds_g == NULL)
                return (RET_OKAY);
 
@@ -148,7 +146,7 @@ static int filter_ds (size_t *values_num,
                return (RET_UNKNOWN);
        }
 
-       for (i = 0; i < match_ds_num_g; i++)
+       for (size_t i = 0; i < match_ds_num_g; i++)
        {
                size_t j;
 
@@ -182,7 +180,7 @@ static int filter_ds (size_t *values_num,
        }
 
        free (*values);
-       for (i = 0; i < *values_num; i++)
+       for (size_t i = 0; i < *values_num; i++)
                free ((*values_names)[i]);
        free (*values_names);
 
@@ -283,7 +281,6 @@ static int do_listval (lcc_connection_t *connection)
        char *hostname = NULL;
 
        int status;
-       size_t i;
 
        status = lcc_listval (connection, &ret_ident, &ret_ident_num);
        if (status != 0) {
@@ -301,7 +298,7 @@ static int do_listval (lcc_connection_t *connection)
                return (RET_UNKNOWN);
        }
 
-       for (i = 0; i < ret_ident_num; ++i) {
+       for (size_t i = 0; i < ret_ident_num; ++i) {
                char id[1024];
 
                if ((hostname_g != NULL) && (strcasecmp (hostname_g, ret_ident[i].host)))
@@ -345,9 +342,8 @@ static int do_check_con_none (size_t values_num,
        int num_okay = 0;
        const char *status_str = "UNKNOWN";
        int status_code = RET_UNKNOWN;
-       size_t i;
 
-       for (i = 0; i < values_num; i++)
+       for (size_t i = 0; i < values_num; i++)
        {
                if (isnan (values[i]))
                {
@@ -390,7 +386,7 @@ static int do_check_con_none (size_t values_num,
        if (values_num > 0)
        {
                printf (" |");
-               for (i = 0; i < values_num; i++)
+               for (size_t i = 0; i < values_num; i++)
                        printf (" %s=%f;;;;", values_names[i], values[i]);
        }
        printf ("\n");
@@ -401,7 +397,6 @@ static int do_check_con_none (size_t values_num,
 static int do_check_con_average (size_t values_num,
                double *values, char **values_names)
 {
-       size_t i;
        double total;
        int total_num;
        double average;
@@ -410,7 +405,7 @@ static int do_check_con_average (size_t values_num,
 
        total = 0.0;
        total_num = 0;
-       for (i = 0; i < values_num; i++)
+       for (size_t i = 0; i < values_num; i++)
        {
                if (isnan (values[i]))
                {
@@ -451,7 +446,7 @@ static int do_check_con_average (size_t values_num,
        }
 
        printf ("%s: %g average |", status_str, average);
-       for (i = 0; i < values_num; i++)
+       for (size_t i = 0; i < values_num; i++)
                printf (" %s=%f;;;;", values_names[i], values[i]);
        printf ("\n");
 
@@ -461,7 +456,6 @@ static int do_check_con_average (size_t values_num,
 static int do_check_con_sum (size_t values_num,
                double *values, char **values_names)
 {
-       size_t i;
        double total;
        int total_num;
        const char *status_str = "UNKNOWN";
@@ -469,7 +463,7 @@ static int do_check_con_sum (size_t values_num,
 
        total = 0.0;
        total_num = 0;
-       for (i = 0; i < values_num; i++)
+       for (size_t i = 0; i < values_num; i++)
        {
                if (isnan (values[i]))
                {
@@ -508,7 +502,7 @@ static int do_check_con_sum (size_t values_num,
        }
 
        printf ("%s: %g sum |", status_str, total);
-       for (i = 0; i < values_num; i++)
+       for (size_t i = 0; i < values_num; i++)
                printf (" %s=%f;;;;", values_names[i], values[i]);
        printf ("\n");
 
@@ -518,7 +512,6 @@ static int do_check_con_sum (size_t values_num,
 static int do_check_con_percentage (size_t values_num,
                double *values, char **values_names)
 {
-       size_t i;
        double sum = 0.0;
        double percentage;
 
@@ -531,7 +524,7 @@ static int do_check_con_percentage (size_t values_num,
                return (RET_WARNING);
        }
 
-       for (i = 0; i < values_num; i++)
+       for (size_t i = 0; i < values_num; i++)
        {
                if (isnan (values[i]))
                {
@@ -571,7 +564,7 @@ static int do_check_con_percentage (size_t values_num,
        }
 
        printf ("%s: %lf percent |", status_str, percentage);
-       for (i = 0; i < values_num; i++)
+       for (size_t i = 0; i < values_num; i++)
                printf (" %s=%lf;;;;", values_names[i], values[i]);
        return (status_code);
 } /* int do_check_con_percentage */
@@ -583,7 +576,6 @@ static int do_check (lcc_connection_t *connection)
        size_t   values_num;
        char ident_str[1024];
        lcc_identifier_t ident;
-       size_t i;
        int status;
 
        snprintf (ident_str, sizeof (ident_str), "%s/%s",
@@ -627,7 +619,7 @@ static int do_check (lcc_connection_t *connection)
 
        free (values);
        if (values_names != NULL)
-               for (i = 0; i < values_num; i++)
+               for (size_t i = 0; i < values_num; i++)
                        free (values_names[i]);
        free (values_names);
 
index 773a6cd..e0851d9 100644 (file)
@@ -94,11 +94,12 @@ way of entering your commands. The daemonized collectd won't do that.
 
 =item *
 
-B<2.> collectd will block I<SIGINT>. Pressing I<Ctrl+C> will usually cause
+B<2.> Python will be handling I<SIGINT>. Pressing I<Ctrl+C> will usually cause
 collectd to shut down. This would be problematic in an interactive session,
-therefore this signal will be blocked. You can still use it to interrupt
-syscalls like sleep and pause but it won't generate a I<KeyboardInterrupt>
-exception either.
+therefore Python will be handling it in interactive sessions. This allows you
+to use I<Ctrl+C> to interrupt Python code without killing collectd. This also
+means you can catch I<KeyboardInterrupt> exceptions which does not work during
+normal operation.
 
 To quit collectd send I<EOF> (press I<Ctrl+D> at the beginning of a new line).
 
@@ -658,6 +659,8 @@ Any Python module will start similar to:
 
 A very simple read function might look like:
 
+  import random
+
   def read(data=None):
     vl = collectd.Values(type='gauge')
     vl.plugin='python.spam'
@@ -671,28 +674,12 @@ A very simple write function might look like:
 
 To register those functions with collectd:
 
-  collectd.register_read(read);
-  collectd.register_write(write);
+  collectd.register_read(read)
+  collectd.register_write(write)
 
 See the section L<"CLASSES"> above for a complete documentation of the data
 types used by the read, write and match functions.
 
-=head1 NOTES
-
-=over 4
-
-=item *
-
-Please feel free to send in new plugins to collectd's mailing list at
-E<lt>collectdE<nbsp>atE<nbsp>collectd.orgE<gt> for review and, possibly,
-inclusion in the main distribution. In the latter case, we will take care of
-keeping the plugin up to date and adapting it to new versions of collectd.
-
-Before submitting your plugin, please take a look at
-L<http://collectd.org/dev-info.shtml>.
-
-=back
-
 =head1 CAVEATS
 
 =over 4
index 513d4ff..7db9fe7 100644 (file)
@@ -337,7 +337,6 @@ static int read_options (int argc, char **argv) /* {{{ */
 
 int main (int argc, char **argv) /* {{{ */
 {
-  int i;
   double last_time;
   int values_sent = 0;
 
@@ -383,7 +382,7 @@ int main (int argc, char **argv) /* {{{ */
 
   fprintf (stdout, "Creating %i values ... ", conf_num_values);
   fflush (stdout);
-  for (i = 0; i < conf_num_values; i++)
+  for (int i = 0; i < conf_num_values; i++)
   {
     lcc_value_list_t *vl;
 
index b678c42..c666692 100644 (file)
 #@BUILD_PLUGIN_CONTEXTSWITCH_TRUE@LoadPlugin contextswitch
 @BUILD_PLUGIN_CPU_TRUE@@BUILD_PLUGIN_CPU_TRUE@LoadPlugin cpu
 #@BUILD_PLUGIN_CPUFREQ_TRUE@LoadPlugin cpufreq
+#@BUILD_PLUGIN_CPUSLEEP_TRUE@LoadPlugin cpusleep
 @LOAD_PLUGIN_CSV@LoadPlugin csv
 #@BUILD_PLUGIN_CURL_TRUE@LoadPlugin curl
 #@BUILD_PLUGIN_CURL_JSON_TRUE@LoadPlugin curl_json
 #              SlaveStats true
 #              SlaveNotifications true
 #      </Database>
+#      <Database galera>
+#              Alias "galera"
+#              Host "localhost"
+#              Socket "/var/run/mysql/mysqld.sock"
+#              WsrepStats true
+#      </Database>
 #</Plugin>
 
 #<Plugin netapp>
 #              Header "X-Custom-Header: custom_value"
 #              SSLVersion "TLSv1"
 #              Format "Command"
+#              Metrics true
+#              Notifications false
 #              StoreRates false
 #              BufferSize 4096
 #              LowSpeedLimit 0
index ac06547..088ec5d 100644 (file)
@@ -1457,6 +1457,16 @@ installed) to get the current CPU frequency. If this file does not exist make
 sure B<cpufreqd> (L<http://cpufreqd.sourceforge.net/>) or a similar tool is
 installed and an "cpu governor" (that's a kernel module) is loaded.
 
+=head2 Plugin C<cpusleep>
+
+This plugin doesn't have any options. It reads CLOCK_BOOTTIME and
+CLOCK_MONOTONIC and reports the difference between these clocks. Since
+BOOTTIME clock increments while device is suspended and MONOTONIC
+clock does not, the derivative of the difference between these clocks
+gives the relative amount of time the device has spent in suspend
+state. The recorded value is in milliseconds of sleep per seconds of
+wall clock.
+
 =head2 Plugin C<csv>
 
 =over 4
@@ -2401,7 +2411,7 @@ I<TypeInstance> will be used.
 
 =item B<MappedOnly> B<true>|B<false>
 
-When set to B<true>, only metrics that can be mapped to to a I<type> will be
+When set to B<true>, only metrics that can be mapped to a I<type> will be
 collected, all other metrics will be ignored. Defaults to B<false>.
 
 =back
@@ -3661,6 +3671,13 @@ Synopsis:
       SlaveStats true
       SlaveNotifications true
     </Database>
+
+   <Database galera>
+      Alias "galera"
+      Host "localhost"
+      Socket "/var/run/mysql/mysqld.sock"
+      WsrepStats true
+   </Database>
   </Plugin>
 
 A B<Database> block defines one connection to a MySQL database. It accepts a
@@ -3731,6 +3748,12 @@ privileges. See the B<User> documentation above. Defaults to B<false>.
 If enabled, the plugin sends a notification if the replication slave I/O and /
 or SQL threads are not running. Defaults to B<false>.
 
+=item B<WsrepStats> I<true|false>
+ Enable the collection of wsrep plugin statistics, used in Master-Master
+ replication setups like in MySQL Galera/Percona XtraDB Cluster.
+ User needs only privileges to execute 'SHOW GLOBAL STATUS'
 =item B<ConnectTimeout> I<Seconds>
 
 Sets the connect timeout for the MySQL client.
@@ -7049,7 +7072,7 @@ port in numeric form.
 =item B<AllPortsSummary> I<true>|I<false>
 
 If this option is set to I<true> a summary of statistics from all connections
-are collectd. This option defaults to I<false>.
+are collected. This option defaults to I<false>.
 
 =back
 
@@ -7830,6 +7853,14 @@ create output in the I<JavaScript Object Notation> (JSON). When set to KAIROSDB
 
 Defaults to B<Command>.
 
+=item B<Metrics> B<true>|B<false>
+
+Controls whether I<metrics> are POSTed to this location. Defaults to B<true>.
+
+=item B<Notifications> B<false>|B<true>
+
+Controls whether I<notifications> are POSTed to this location. Defaults to B<false>.
+
 =item B<StoreRates> B<true|false>
 
 If set to B<true>, convert counter values to rates. If set to B<false> (the
index 8ca0559..e60781a 100644 (file)
@@ -185,7 +185,6 @@ static int getval (lcc_connection_t *c, int argc, char **argv)
   char   **ret_values_names = NULL;
 
   int status;
-  size_t i;
 
   assert (strcasecmp (argv[0], "getval") == 0);
 
@@ -203,7 +202,7 @@ static int getval (lcc_connection_t *c, int argc, char **argv)
     if (ret_values != NULL) \
       free (ret_values); \
     if (ret_values_names != NULL) { \
-      for (i = 0; i < ret_values_num; ++i) \
+      for (size_t i = 0; i < ret_values_num; ++i) \
         free (ret_values_names[i]); \
       free (ret_values_names); \
     } \
@@ -218,7 +217,7 @@ static int getval (lcc_connection_t *c, int argc, char **argv)
     BAIL_OUT (-1);
   }
 
-  for (i = 0; i < ret_values_num; ++i)
+  for (size_t i = 0; i < ret_values_num; ++i)
     printf ("%s=%e\n", ret_values_names[i], ret_values[i]);
   BAIL_OUT (0);
 #undef BAIL_OUT
@@ -235,7 +234,6 @@ static int flush (lcc_connection_t *c, int argc, char **argv)
   size_t plugins_num = 0;
 
   int status;
-  int i;
 
   assert (strcasecmp (argv[0], "flush") == 0);
 
@@ -250,7 +248,7 @@ static int flush (lcc_connection_t *c, int argc, char **argv)
     return (s); \
   } while (0)
 
-  for (i = 1; i < argc; ++i) {
+  for (int i = 1; i < argc; ++i) {
     char *key, *value;
 
     key   = argv[i];
@@ -314,7 +312,7 @@ static int flush (lcc_connection_t *c, int argc, char **argv)
     plugins[0] = NULL;
   }
 
-  for (i = 0; i < plugins_num; ++i) {
+  for (int i = 0; i < plugins_num; ++i) {
     if (identifiers_num == 0) {
       status = lcc_flush (c, plugins[i], NULL, timeout);
       if (status != 0)
@@ -322,9 +320,7 @@ static int flush (lcc_connection_t *c, int argc, char **argv)
             (plugins[i] == NULL) ? "(all)" : plugins[i], lcc_strerror (c));
     }
     else {
-      int j;
-
-      for (j = 0; j < identifiers_num; ++j) {
+      for (int j = 0; j < identifiers_num; ++j) {
         status = lcc_flush (c, plugins[i], identifiers + j, timeout);
         if (status != 0) {
           char id[1024];
@@ -349,7 +345,6 @@ static int listval (lcc_connection_t *c, int argc, char **argv)
   size_t            ret_ident_num = 0;
 
   int status;
-  size_t i;
 
   assert (strcasecmp (argv[0], "listval") == 0);
 
@@ -372,7 +367,7 @@ static int listval (lcc_connection_t *c, int argc, char **argv)
     BAIL_OUT (status);
   }
 
-  for (i = 0; i < ret_ident_num; ++i) {
+  for (size_t i = 0; i < ret_ident_num; ++i) {
     char id[1024];
 
     status = lcc_identifier_to_string (c, id, sizeof (id), ret_ident + i);
@@ -398,7 +393,6 @@ static int putval (lcc_connection_t *c, int argc, char **argv)
   size_t  values_len = 0;
 
   int status;
-  int i;
 
   assert (strcasecmp (argv[0], "putval") == 0);
 
@@ -415,7 +409,7 @@ static int putval (lcc_connection_t *c, int argc, char **argv)
   if (status != 0)
     return (status);
 
-  for (i = 2; i < argc; ++i) {
+  for (int i = 2; i < argc; ++i) {
     char *tmp;
 
     tmp = strchr (argv[i], (int)'=');
index f4bdbf9..8002966 100644 (file)
--- a/src/cpu.c
+++ b/src/cpu.c
@@ -406,19 +406,16 @@ static cpu_state_t *get_cpu_state (size_t cpu_num, size_t state) /* {{{ */
  * array. */
 static void aggregate (gauge_t *sum_by_state) /* {{{ */
 {
-       size_t cpu_num;
-       size_t state;
-
-       for (state = 0; state < COLLECTD_CPU_STATE_MAX; state++)
+       for (size_t state = 0; state < COLLECTD_CPU_STATE_MAX; state++)
                sum_by_state[state] = NAN;
 
-       for (cpu_num = 0; cpu_num < global_cpu_num; cpu_num++)
+       for (size_t cpu_num = 0; cpu_num < global_cpu_num; cpu_num++)
        {
                cpu_state_t *this_cpu_states = get_cpu_state (cpu_num, 0);
 
                this_cpu_states[COLLECTD_CPU_STATE_ACTIVE].rate = NAN;
 
-               for (state = 0; state < COLLECTD_CPU_STATE_ACTIVE; state++)
+               for (size_t state = 0; state < COLLECTD_CPU_STATE_ACTIVE; state++)
                {
                        if (!this_cpu_states[state].has_value)
                                continue;
@@ -443,7 +440,6 @@ static void aggregate (gauge_t *sum_by_state) /* {{{ */
 static void cpu_commit_one (int cpu_num, /* {{{ */
                gauge_t rates[static COLLECTD_CPU_STATE_MAX])
 {
-       size_t state;
        gauge_t sum;
 
        sum = rates[COLLECTD_CPU_STATE_ACTIVE];
@@ -456,7 +452,7 @@ static void cpu_commit_one (int cpu_num, /* {{{ */
                return;
        }
 
-       for (state = 0; state < COLLECTD_CPU_STATE_ACTIVE; state++)
+       for (size_t state = 0; state < COLLECTD_CPU_STATE_ACTIVE; state++)
        {
                gauge_t percent = 100.0 * rates[state] / sum;
                submit_percent (cpu_num, state, percent);
@@ -467,9 +463,7 @@ static void cpu_commit_one (int cpu_num, /* {{{ */
  * each iteration / after each call to cpu_commit(). */
 static void cpu_reset (void) /* {{{ */
 {
-       size_t i;
-
-       for (i = 0; i < cpu_states_num; i++)
+       for (size_t i = 0; i < cpu_states_num; i++)
                cpu_states[i].has_value = 0;
 
        global_cpu_num = 0;
@@ -478,13 +472,9 @@ static void cpu_reset (void) /* {{{ */
 /* Legacy behavior: Dispatches the raw derive values without any aggregation. */
 static void cpu_commit_without_aggregation (void) /* {{{ */
 {
-       int state;
-
-       for (state = 0; state < COLLECTD_CPU_STATE_ACTIVE; state++)
+       for (int state = 0; state < COLLECTD_CPU_STATE_ACTIVE; state++)
        {
-               size_t cpu_num;
-
-               for (cpu_num = 0; cpu_num < global_cpu_num; cpu_num++)
+               for (size_t cpu_num = 0; cpu_num < global_cpu_num; cpu_num++)
                {
                        cpu_state_t *s = get_cpu_state (cpu_num, state);
 
@@ -502,7 +492,6 @@ static void cpu_commit (void) /* {{{ */
        gauge_t global_rates[COLLECTD_CPU_STATE_MAX] = {
                NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN /* Batman! */
        };
-       size_t cpu_num;
 
        if (report_by_state && report_by_cpu && !report_percent)
        {
@@ -518,15 +507,14 @@ static void cpu_commit (void) /* {{{ */
                return;
        }
 
-       for (cpu_num = 0; cpu_num < global_cpu_num; cpu_num++)
+       for (size_t cpu_num = 0; cpu_num < global_cpu_num; cpu_num++)
        {
                cpu_state_t *this_cpu_states = get_cpu_state (cpu_num, 0);
                gauge_t local_rates[COLLECTD_CPU_STATE_MAX] = {
                        NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN
                };
-               size_t state;
 
-               for (state = 0; state < COLLECTD_CPU_STATE_MAX; state++)
+               for (size_t state = 0; state < COLLECTD_CPU_STATE_MAX; state++)
                        if (this_cpu_states[state].has_value)
                                local_rates[state] = this_cpu_states[state].rate;
 
@@ -570,8 +558,6 @@ static int cpu_read (void)
        cdtime_t now = cdtime ();
 
 #if PROCESSOR_CPU_LOAD_INFO /* {{{ */
-       int cpu;
-
        kern_return_t status;
 
        processor_cpu_load_info_data_t cpu_info;
@@ -579,7 +565,7 @@ static int cpu_read (void)
 
        host_t cpu_host;
 
-       for (cpu = 0; cpu < cpu_list_len; cpu++)
+       for (int cpu = 0; cpu < cpu_list_len; cpu++)
        {
                cpu_host = 0;
                cpu_info_len = PROCESSOR_BASIC_INFO_COUNT;
@@ -654,13 +640,12 @@ static int cpu_read (void)
 /* }}} #endif defined(KERNEL_LINUX) */
 
 #elif defined(HAVE_LIBKSTAT) /* {{{ */
-       int cpu;
        static cpu_stat_t cs;
 
        if (kc == NULL)
                return (-1);
 
-       for (cpu = 0; cpu < numcpu; cpu++)
+       for (int cpu = 0; cpu < numcpu; cpu++)
        {
                if (kstat_read (kc, ksp[cpu], &cs) == -1)
                        continue; /* error message? */
@@ -676,7 +661,6 @@ static int cpu_read (void)
        uint64_t cpuinfo[numcpu][CPUSTATES];
        size_t cpuinfo_size;
        int status;
-       int i;
 
        if (numcpu < 1)
        {
@@ -689,7 +673,7 @@ static int cpu_read (void)
 
 #if defined(KERN_CPTIME2)
        if (numcpu > 1) {
-               for (i = 0; i < numcpu; i++) {
+               for (int i = 0; i < numcpu; i++) {
                        int mib[] = {CTL_KERN, KERN_CPTIME2, i};
 
                        cpuinfo_size = sizeof (cpuinfo[0]);
@@ -722,12 +706,12 @@ static int cpu_read (void)
                        return (-1);
                }
 
-               for(i = 0; i < CPUSTATES; i++) {
+               for(int i = 0; i < CPUSTATES; i++) {
                        cpuinfo[0][i] = cpuinfo_tmp[i];
                }
        }
 
-       for (i = 0; i < numcpu; i++) {
+       for (int i = 0; i < numcpu; i++) {
                cpu_stage (i, COLLECTD_CPU_STATE_USER,      (derive_t) cpuinfo[i][CP_USER], now);
                cpu_stage (i, COLLECTD_CPU_STATE_NICE,      (derive_t) cpuinfo[i][CP_NICE], now);
                cpu_stage (i, COLLECTD_CPU_STATE_SYSTEM,    (derive_t) cpuinfo[i][CP_SYS], now);
@@ -739,7 +723,6 @@ static int cpu_read (void)
 #elif defined(HAVE_SYSCTLBYNAME) && defined(HAVE_SYSCTL_KERN_CP_TIMES) /* {{{ */
        long cpuinfo[maxcpu][CPUSTATES];
        size_t cpuinfo_size;
-       int i;
 
        memset (cpuinfo, 0, sizeof (cpuinfo));
 
@@ -752,7 +735,7 @@ static int cpu_read (void)
                return (-1);
        }
 
-       for (i = 0; i < numcpu; i++) {
+       for (int i = 0; i < numcpu; i++) {
                cpu_stage (i, COLLECTD_CPU_STATE_USER,      (derive_t) cpuinfo[i][CP_USER], now);
                cpu_stage (i, COLLECTD_CPU_STATE_NICE,      (derive_t) cpuinfo[i][CP_NICE], now);
                cpu_stage (i, COLLECTD_CPU_STATE_SYSTEM,    (derive_t) cpuinfo[i][CP_SYS], now);
@@ -802,7 +785,7 @@ static int cpu_read (void)
 
 #elif defined(HAVE_PERFSTAT) /* {{{ */
        perfstat_id_t id;
-       int i, cpus;
+       int cpus;
 
        numcpu =  perfstat_cpu(NULL, NULL, sizeof(perfstat_cpu_t), 0);
        if(numcpu == -1)
@@ -829,7 +812,7 @@ static int cpu_read (void)
                return (-1);
        }
 
-       for (i = 0; i < cpus; i++)
+       for (int i = 0; i < cpus; i++)
        {
                cpu_stage (i, COLLECTD_CPU_STATE_IDLE,   (derive_t) perfcpu[i].idle, now);
                cpu_stage (i, COLLECTD_CPU_STATE_SYSTEM, (derive_t) perfcpu[i].sys,  now);
index 1550e77..1e9e857 100644 (file)
@@ -81,12 +81,11 @@ static int cpufreq_read (void)
 {
         int status;
        unsigned long long val;
-       int i = 0;
        FILE *fp;
        char filename[256];
        char buffer[16];
 
-       for (i = 0; i < num_cpu; i++)
+       for (int i = 0; i < num_cpu; i++)
        {
                status = ssnprintf (filename, sizeof (filename),
                                "/sys/devices/system/cpu/cpu%d/cpufreq/"
diff --git a/src/cpusleep.c b/src/cpusleep.c
new file mode 100644 (file)
index 0000000..326c29c
--- /dev/null
@@ -0,0 +1,79 @@
+/**
+ * collectd - src/cpusleep.c
+ * Copyright (C) 2016 rinigus
+ *
+ * The MIT License (MIT)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Authors:
+ *      rinigus <http://github.com/rinigus>
+ *
+ * CPU sleep is reported in milliseconds of sleep per second of wall
+ * time. For that, the time difference between BOOT and MONOTONIC clocks
+ * is reported using derive type.
+**/
+
+#include "collectd.h"
+
+#include "common.h"
+#include "plugin.h"
+#include <time.h>
+
+static void cpusleep_submit(derive_t cpu_sleep) {
+  value_t values[1];
+  value_list_t vl = VALUE_LIST_INIT;
+
+  values[0].derive = cpu_sleep;
+
+  vl.values = values;
+  vl.values_len = 1;
+  sstrncpy(vl.host, hostname_g, sizeof(vl.host));
+  sstrncpy(vl.plugin, "cpusleep", sizeof(vl.plugin));
+  sstrncpy(vl.type, "total_time_in_ms", sizeof(vl.type));
+
+  plugin_dispatch_values(&vl);
+}
+
+static int cpusleep_read(void) {
+  struct timespec b, m;
+  if (clock_gettime(CLOCK_BOOTTIME, &b) < 0) {
+    ERROR("cpusleep plugin: clock_boottime failed");
+    return (-1);
+  }
+
+  if (clock_gettime(CLOCK_MONOTONIC, &m) < 0) {
+    ERROR("cpusleep plugin: clock_monotonic failed");
+    return (-1);
+  }
+
+  // to avoid false positives in counter overflow due to reboot,
+  // derive is used. Sleep is calculated in milliseconds
+  derive_t diffsec = b.tv_sec - m.tv_sec;
+  derive_t diffnsec = b.tv_nsec - m.tv_nsec;
+  derive_t sleep = diffsec * 1000 + diffnsec / 1000000;
+
+  cpusleep_submit(sleep);
+
+  return (0);
+}
+
+void module_register(void) {
+  plugin_register_read("cpusleep", cpusleep_read);
+} /* void module_register */
index f9db595..e008ecf 100644 (file)
--- a/src/csv.c
+++ b/src/csv.c
@@ -46,7 +46,6 @@ static int value_list_to_string (char *buffer, int buffer_len,
 {
        int offset;
        int status;
-       size_t i;
        gauge_t *rates = NULL;
 
        assert (0 == strcmp (ds->type, vl->type));
@@ -59,7 +58,7 @@ static int value_list_to_string (char *buffer, int buffer_len,
                return (-1);
        offset = status;
 
-       for (i = 0; i < ds->ds_num; i++)
+       for (size_t i = 0; i < ds->ds_num; i++)
        {
                if ((ds->ds[i].type != DS_TYPE_COUNTER)
                                && (ds->ds[i].type != DS_TYPE_GAUGE)
@@ -188,7 +187,6 @@ static int value_list_to_filename (char *buffer, size_t buffer_size,
 static int csv_create_file (const char *filename, const data_set_t *ds)
 {
        FILE *csv;
-       size_t i;
 
        if (check_create_dir (filename))
                return (-1);
@@ -204,7 +202,7 @@ static int csv_create_file (const char *filename, const data_set_t *ds)
        }
 
        fprintf (csv, "epoch");
-       for (i = 0; i < ds->ds_num; i++)
+       for (size_t i = 0; i < ds->ds_num; i++)
                fprintf (csv, ",%s", ds->ds[i].name);
 
        fprintf (csv, "\n");
@@ -289,12 +287,10 @@ static int csv_write (const data_set_t *ds, const value_list_t *vl,
 
        if (use_stdio)
        {
-               size_t i;
-
                escape_string (filename, sizeof (filename));
 
                /* Replace commas by colons for PUTVAL compatible output. */
-               for (i = 0; i < sizeof (values); i++)
+               for (size_t i = 0; i < sizeof (values); i++)
                {
                        if (values[i] == 0)
                                break;
index 0cfedf3..8d7baa5 100644 (file)
@@ -270,7 +270,6 @@ static int cc_config_add_match (web_page_t *page, /* {{{ */
 {
   web_match_t *match;
   int status;
-  int i;
 
   if (ci->values_num != 0)
   {
@@ -285,7 +284,7 @@ static int cc_config_add_match (web_page_t *page, /* {{{ */
   }
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -434,7 +433,6 @@ static int cc_config_add_page (oconfig_item_t *ci) /* {{{ */
 {
   web_page_t *page;
   int status;
-  int i;
 
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
@@ -469,7 +467,7 @@ static int cc_config_add_page (oconfig_item_t *ci) /* {{{ */
 
   /* Process all children */
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -567,12 +565,11 @@ static int cc_config (oconfig_item_t *ci) /* {{{ */
   int success;
   int errors;
   int status;
-  int i;
 
   success = 0;
   errors = 0;
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -668,7 +665,6 @@ static void cc_submit_response_time (const web_page_t *wp, /* {{{ */
 
 static int cc_read_page (web_page_t *wp) /* {{{ */
 {
-  web_match_t *wm;
   int status;
   cdtime_t start = 0;
 
@@ -701,7 +697,7 @@ static int cc_read_page (web_page_t *wp) /* {{{ */
     }
   }
 
-  for (wm = wp->matches; wm != NULL; wm = wm->next)
+  for (web_match_t *wm = wp->matches; wm != NULL; wm = wm->next)
   {
     cu_match_value_t *mv;
 
@@ -728,9 +724,7 @@ static int cc_read_page (web_page_t *wp) /* {{{ */
 
 static int cc_read (void) /* {{{ */
 {
-  web_page_t *wp;
-
-  for (wp = pages_g; wp != NULL; wp = wp->next)
+  for (web_page_t *wp = pages_g; wp != NULL; wp = wp->next)
     cc_read_page (wp);
 
   return (0);
index da98924..d4e7803 100644 (file)
@@ -471,7 +471,6 @@ static int cj_config_add_key (cj_t *db, /* {{{ */
 {
   cj_key_t *key;
   int status;
-  int i;
 
   if ((ci->values_num != 1)
       || (ci->values[0].type != OCONFIG_TYPE_STRING))
@@ -507,7 +506,7 @@ static int cj_config_add_key (cj_t *db, /* {{{ */
   }
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -663,7 +662,6 @@ static int cj_config_add_url (oconfig_item_t *ci) /* {{{ */
 {
   cj_t *db;
   int status = 0;
-  int i;
 
   if ((ci->values_num != 1)
       || (ci->values[0].type != OCONFIG_TYPE_STRING))
@@ -700,7 +698,7 @@ static int cj_config_add_url (oconfig_item_t *ci) /* {{{ */
   }
 
   /* Fill the `cj_t' structure.. */
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -796,12 +794,11 @@ static int cj_config (oconfig_item_t *ci) /* {{{ */
   int success;
   int errors;
   int status;
-  int i;
 
   success = 0;
   errors = 0;
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -850,8 +847,8 @@ static void cj_submit (cj_t *db, cj_key_t *key, value_t *value) /* {{{ */
 
   if (key->instance == NULL)
   {
-    int i, len = 0;
-    for (i = 0; i < db->depth; i++)
+    int len = 0;
+    for (int i = 0; i < db->depth; i++)
       len += ssnprintf(vl.type_instance+len, sizeof(vl.type_instance)-len,
                        i ? "-%s" : "%s", db->state[i+1].name);
   }
index 253356c..f3aa2d9 100644 (file)
@@ -178,7 +178,6 @@ static void cx_list_free (llist_t *list) /* {{{ */
 static void cx_free (void *arg) /* {{{ */
 {
   cx_t *db;
-  size_t i;
 
   DEBUG ("curl_xml plugin: cx_free (arg = %p);", arg);
 
@@ -207,7 +206,7 @@ static void cx_free (void *arg) /* {{{ */
   curl_slist_free_all (db->headers);
   curl_stats_destroy (db->stats);
 
-  for (i = 0; i < db->namespaces_num; i++)
+  for (size_t i = 0; i < db->namespaces_num; i++)
   {
     sfree (db->namespaces[i].prefix);
     sfree (db->namespaces[i].url);
@@ -369,14 +368,13 @@ static int cx_handle_all_value_xpaths (xmlXPathContextPtr xpath_ctx, /* {{{ */
 {
   value_t values[xpath->values_len];
   int status;
-  size_t i;
 
   assert (xpath->values_len > 0);
   assert (xpath->values_len == vl->values_len);
   assert (xpath->values_len == ds->ds_num);
   vl->values = values;
 
-  for (i = 0; i < xpath->values_len; i++)
+  for (size_t i = 0; i < xpath->values_len; i++)
   {
     status = cx_handle_single_value_xpath (xpath_ctx, xpath, ds, vl, i);
     if (status != 0)
@@ -489,7 +487,6 @@ static int  cx_handle_base_xpath (char const *plugin_instance, /* {{{ */
     char *base_xpath, cx_xpath_t *xpath)
 {
   int total_nodes;
-  int i;
 
   xmlXPathObjectPtr base_node_obj = NULL;
   xmlNodeSetPtr base_nodes = NULL;
@@ -530,7 +527,7 @@ static int  cx_handle_base_xpath (char const *plugin_instance, /* {{{ */
   if (plugin_instance != NULL)
     sstrncpy (vl.plugin_instance, plugin_instance, sizeof (vl.plugin_instance));
 
-  for (i = 0; i < total_nodes; i++)
+  for (int i = 0; i < total_nodes; i++)
   {
     int status;
 
@@ -584,7 +581,6 @@ static int cx_parse_stats_xml(xmlChar* xml, cx_t *db) /* {{{ */
   int status;
   xmlDocPtr doc;
   xmlXPathContextPtr xpath_ctx;
-  size_t i;
 
   /* Load the XML */
   doc = xmlParseDoc(xml);
@@ -602,7 +598,7 @@ static int cx_parse_stats_xml(xmlChar* xml, cx_t *db) /* {{{ */
     return (-1);
   }
 
-  for (i = 0; i < db->namespaces_num; i++)
+  for (size_t i = 0; i < db->namespaces_num; i++)
   {
     cx_namespace_t const *ns = db->namespaces + i;
     status = xmlXPathRegisterNs (xpath_ctx,
@@ -683,15 +679,13 @@ static int cx_read (user_data_t *ud) /* {{{ */
 static int cx_config_add_values (const char *name, cx_xpath_t *xpath, /* {{{ */
                                       oconfig_item_t *ci)
 {
-  int i;
-
   if (ci->values_num < 1)
   {
     WARNING ("curl_xml plugin: `ValuesFrom' needs at least one argument.");
     return (-1);
   }
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
     if (ci->values[i].type != OCONFIG_TYPE_STRING)
     {
       WARNING ("curl_xml plugin: `ValuesFrom' needs only string argument.");
@@ -707,7 +701,7 @@ static int cx_config_add_values (const char *name, cx_xpath_t *xpath, /* {{{ */
   xpath->values_len = (size_t) ci->values_num;
 
   /* populate cx_values_t structure */
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
     xpath->values[i].path_len = sizeof (ci->values[i].value.string);
     sstrncpy (xpath->values[i].path, ci->values[i].value.string, sizeof (xpath->values[i].path));
@@ -722,7 +716,6 @@ static int cx_config_add_xpath (cx_t *db, oconfig_item_t *ci) /* {{{ */
   char *name;
   llentry_t *le;
   int status;
-  int i;
 
   xpath = calloc (1, sizeof (*xpath));
   if (xpath == NULL)
@@ -748,7 +741,7 @@ static int cx_config_add_xpath (cx_t *db, oconfig_item_t *ci) /* {{{ */
   }
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -927,7 +920,6 @@ static int cx_config_add_url (oconfig_item_t *ci) /* {{{ */
 {
   cx_t *db;
   int status = 0;
-  int i;
 
   if ((ci->values_num != 1)
       || (ci->values[0].type != OCONFIG_TYPE_STRING))
@@ -964,7 +956,7 @@ static int cx_config_add_url (oconfig_item_t *ci) /* {{{ */
   }
 
   /* Fill the `cx_t' structure.. */
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -1058,12 +1050,11 @@ static int cx_config (oconfig_item_t *ci) /* {{{ */
   int success;
   int errors;
   int status;
-  int i;
 
   success = 0;
   errors = 0;
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index b737762..8573579 100644 (file)
@@ -98,7 +98,6 @@ static int init_hostname (void)
        const char *str;
 
        struct addrinfo *ai_list;
-       struct addrinfo *ai_ptr;
        int status;
 
        str = global_option_get ("Hostname");
@@ -134,7 +133,7 @@ static int init_hostname (void)
                return (-1);
        }
 
-       for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+       for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
        {
                if (ai_ptr->ai_canonname == NULL)
                        continue;
index ff2e519..b60530a 100644 (file)
@@ -333,7 +333,6 @@ int strjoin (char *buffer, size_t buffer_size,
        size_t avail;
        char *ptr;
        size_t sep_len;
-       size_t i;
 
        if ((buffer_size < 1) || (fields_num == 0))
                return (-1);
@@ -346,7 +345,7 @@ int strjoin (char *buffer, size_t buffer_size,
        if (sep != NULL)
                sep_len = strlen (sep);
 
-       for (i = 0; i < fields_num; i++)
+       for (size_t i = 0; i < fields_num; i++)
        {
                size_t field_len;
 
@@ -376,7 +375,6 @@ int strjoin (char *buffer, size_t buffer_size,
 int escape_string (char *buffer, size_t buffer_size)
 {
   char *temp;
-  size_t i;
   size_t j;
 
   /* Check if we need to escape at all first */
@@ -394,7 +392,7 @@ int escape_string (char *buffer, size_t buffer_size)
   temp[0] = '"';
   j = 1;
 
-  for (i = 0; i < buffer_size; i++)
+  for (size_t i = 0; i < buffer_size; i++)
   {
     if (buffer[i] == 0)
     {
@@ -428,9 +426,7 @@ int escape_string (char *buffer, size_t buffer_size)
 
 int strunescape (char *buf, size_t buf_len)
 {
-       size_t i;
-
-       for (i = 0; (i < buf_len) && (buf[i] != '\0'); ++i)
+       for (size_t i = 0; (i < buf_len) && (buf[i] != '\0'); ++i)
        {
                if (buf[i] != '\\')
                        continue;
@@ -484,7 +480,6 @@ size_t strstripnewline (char *buffer)
 int escape_slashes (char *buffer, size_t buffer_size)
 {
        size_t buffer_len;
-       size_t i;
 
        buffer_len = strlen (buffer);
 
@@ -506,7 +501,7 @@ int escape_slashes (char *buffer, size_t buffer_size)
                buffer_len--;
        }
 
-       for (i = 0; i < buffer_len; i++)
+       for (size_t i = 0; i < buffer_len; i++)
        {
                if (buffer[i] == '/')
                        buffer[i] = '_';
@@ -517,9 +512,7 @@ int escape_slashes (char *buffer, size_t buffer_size)
 
 void replace_special (char *buffer, size_t buffer_size)
 {
-       size_t i;
-
-       for (i = 0; i < buffer_size; i++)
+       for (size_t i = 0; i < buffer_size; i++)
        {
                if (buffer[i] == 0)
                        return;
@@ -593,7 +586,6 @@ int check_create_dir (const char *file_orig)
        int   last_is_file = 1;
        int   path_is_absolute = 0;
        size_t len;
-       int   i;
 
        /*
         * Sanity checks first
@@ -639,7 +631,7 @@ int check_create_dir (const char *file_orig)
        /*
         * For each component, do..
         */
-       for (i = 0; i < (fields_num - last_is_file); i++)
+       for (int i = 0; i < (fields_num - last_is_file); i++)
        {
                /*
                 * Do not create directories that start with a dot. This
@@ -938,7 +930,6 @@ int format_values (char *ret, size_t ret_len, /* {{{ */
 {
         size_t offset = 0;
         int status;
-        size_t i;
         gauge_t *rates = NULL;
 
         assert (0 == strcmp (ds->type, vl->type));
@@ -964,7 +955,7 @@ int format_values (char *ret, size_t ret_len, /* {{{ */
 
         BUFFER_ADD ("%.3f", CDTIME_T_TO_DOUBLE (vl->time));
 
-        for (i = 0; i < ds->ds_num; i++)
+        for (size_t i = 0; i < ds->ds_num; i++)
         {
                 if (ds->ds[i].type == DS_TYPE_GAUGE)
                         BUFFER_ADD (":"GAUGE_FORMAT, vl->values[i].gauge);
@@ -1518,7 +1509,6 @@ int value_to_rate (gauge_t *ret_rate, /* {{{ */
 int service_name_to_port_number (const char *service_name)
 {
        struct addrinfo *ai_list;
-       struct addrinfo *ai_ptr;
        int status;
        int service_number;
 
@@ -1539,7 +1529,7 @@ int service_name_to_port_number (const char *service_name)
        }
 
        service_number = -1;
-       for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+       for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
        {
                if (ai_ptr->ai_family == AF_INET)
                {
@@ -1630,9 +1620,7 @@ int strarray_add (char ***ret_array, size_t *ret_array_len, char const *str) /*
 
 void strarray_free (char **array, size_t array_len) /* {{{ */
 {
-       size_t i;
-
-       for (i = 0; i < array_len; i++)
+       for (size_t i = 0; i < array_len; i++)
                sfree (array[i]);
        sfree (array);
 } /* }}} void strarray_free */
index 68958f3..202ddf6 100644 (file)
@@ -203,9 +203,8 @@ DEF_TEST(escape_slashes)
     {"trailing/slash/", "trailing_slash_"},
     {"foo//bar", "foo__bar"},
   };
-  size_t i;
 
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
     char buffer[32];
 
     strncpy (buffer, cases[i].str, sizeof (buffer));
@@ -230,9 +229,8 @@ DEF_TEST(escape_string)
     {"012345 78901234", "\"012345 789012\""},
     {"012345 78901\"34", "\"012345 78901\""},
   };
-  size_t i;
 
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
     char buffer[16];
 
     strncpy (buffer, cases[i].str, sizeof (buffer));
@@ -301,8 +299,7 @@ DEF_TEST(parse_values)
     {"T:42.0",           -1,  NAN},
   };
 
-  size_t i;
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++)
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++)
   {
     data_source_t dsrc = {
       .name = "value",
@@ -361,9 +358,8 @@ DEF_TEST(value_to_rate)
     /* 64bit wrap-around. */
     {30, 40, DS_TYPE_COUNTER, {.counter = 18446744073709551558ULL}, {.counter =   42}, 10.0},
   };
-  size_t i;
 
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
     value_to_rate_state_t state = { cases[i].v0, TIME_T_TO_CDTIME_T (cases[i].t0) };
     gauge_t got;
 
index 0654ad7..a31fb64 100644 (file)
@@ -155,7 +155,7 @@ static int cf_dispatch (const char *type, const char *orig_key,
        char *key;
        char *value;
        int ret;
-       int i;
+       int i = 0;
 
        if (orig_key == NULL)
                return (EINVAL);
@@ -231,8 +231,6 @@ static int dispatch_global_option (const oconfig_item_t *ci)
 
 static int dispatch_value_typesdb (oconfig_item_t *ci)
 {
-       int i = 0;
-
        assert (strcasecmp (ci->key, "TypesDB") == 0);
 
        cf_default_typesdb = 0;
@@ -242,7 +240,7 @@ static int dispatch_value_typesdb (oconfig_item_t *ci)
                return (-1);
        }
 
-       for (i = 0; i < ci->values_num; ++i)
+       for (int i = 0; i < ci->values_num; ++i)
        {
                if (OCONFIG_TYPE_STRING != ci->values[i].type) {
                        WARNING ("configfile: TypesDB: Skipping %i. argument which "
@@ -270,7 +268,6 @@ static int dispatch_value_plugindir (oconfig_item_t *ci)
 
 static int dispatch_loadplugin (oconfig_item_t *ci)
 {
-       int i;
        const char *name;
        unsigned int flags = 0;
        plugin_ctx_t ctx = { 0 };
@@ -293,7 +290,7 @@ static int dispatch_loadplugin (oconfig_item_t *ci)
        ctx.flush_interval = 0;
        ctx.flush_timeout = 0;
 
-       for (i = 0; i < ci->children_num; ++i)
+       for (int i = 0; i < ci->children_num; ++i)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -325,12 +322,11 @@ static int dispatch_value_plugin (const char *plugin, oconfig_item_t *ci)
        char  buffer[4096];
        char *buffer_ptr;
        int   buffer_free;
-       int i;
 
        buffer_ptr = buffer;
        buffer_free = sizeof (buffer);
 
-       for (i = 0; i < ci->values_num; i++)
+       for (int i = 0; i < ci->values_num; i++)
        {
                int status = -1;
 
@@ -359,16 +355,15 @@ static int dispatch_value_plugin (const char *plugin, oconfig_item_t *ci)
 static int dispatch_value (oconfig_item_t *ci)
 {
        int ret = 0;
-       int i;
 
-       for (i = 0; i < cf_value_map_num; i++)
+       for (int i = 0; i < cf_value_map_num; i++)
                if (strcasecmp (cf_value_map[i].key, ci->key) == 0)
                {
                        ret = cf_value_map[i].func (ci);
                        break;
                }
 
-       for (i = 0; i < cf_global_options_num; i++)
+       for (int i = 0; i < cf_global_options_num; i++)
                if (strcasecmp (cf_global_options[i].key, ci->key) == 0)
                {
                        ret = dispatch_global_option (ci);
@@ -380,11 +375,8 @@ static int dispatch_value (oconfig_item_t *ci)
 
 static int dispatch_block_plugin (oconfig_item_t *ci)
 {
-       int i;
        const char *name;
 
-       cf_complex_callback_t *cb;
-
        if (strcasecmp (ci->key, "Plugin") != 0)
                return (-1);
        if (ci->values_num < 1)
@@ -426,7 +418,7 @@ static int dispatch_block_plugin (oconfig_item_t *ci)
        }
 
        /* Check for a complex callback first */
-       for (cb = complex_callback_head; cb != NULL; cb = cb->next)
+       for (cf_complex_callback_t *cb = complex_callback_head; cb != NULL; cb = cb->next)
        {
                if (strcasecmp (name, cb->type) == 0)
                {
@@ -441,7 +433,7 @@ static int dispatch_block_plugin (oconfig_item_t *ci)
        }
 
        /* Hm, no complex plugin found. Dispatch the values one by one */
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                if (ci->children[i].children == NULL)
                        dispatch_value_plugin (name, ci->children + i);
@@ -477,7 +469,6 @@ static int cf_ci_replace_child (oconfig_item_t *dst, oconfig_item_t *src,
                int offset)
 {
        oconfig_item_t *temp;
-       int i;
 
        assert (offset >= 0);
        assert (dst->children_num > offset);
@@ -485,7 +476,7 @@ static int cf_ci_replace_child (oconfig_item_t *dst, oconfig_item_t *src,
        /* Free the memory used by the replaced child. Usually that's the
         * `Include "blah"' statement. */
        temp = dst->children + offset;
-       for (i = 0; i < temp->values_num; i++)
+       for (int i = 0; i < temp->values_num; i++)
        {
                if (temp->values[i].type == OCONFIG_TYPE_STRING)
                {
@@ -586,17 +577,13 @@ static oconfig_item_t *cf_read_generic (const char *path,
 
 static int cf_include_all (oconfig_item_t *root, int depth)
 {
-       int i;
-
-       for (i = 0; i < root->children_num; i++)
+       for (int i = 0; i < root->children_num; i++)
        {
                oconfig_item_t *new;
                oconfig_item_t *old;
 
                char *pattern = NULL;
 
-               int j;
-
                if (strcasecmp (root->children[i].key, "Include") != 0)
                        continue;
 
@@ -609,7 +596,7 @@ static int cf_include_all (oconfig_item_t *root, int depth)
                        continue;
                }
 
-               for (j = 0; j < old->children_num; ++j)
+               for (int j = 0; j < old->children_num; ++j)
                {
                        oconfig_item_t *child = old->children + j;
 
@@ -703,7 +690,6 @@ static oconfig_item_t *cf_read_dir (const char *dir,
        char **filenames = NULL;
        int filenames_num = 0;
        int status;
-       int i;
 
        assert (depth < CF_MAX_DEPTH);
 
@@ -740,7 +726,7 @@ static oconfig_item_t *cf_read_dir (const char *dir,
                                        " name is too long.",
                                        dir, de->d_name);
                        closedir (dh);
-                       for (i = 0; i < filenames_num; ++i)
+                       for (int i = 0; i < filenames_num; ++i)
                                free (filenames[i]);
                        free (filenames);
                        free (root);
@@ -753,7 +739,7 @@ static oconfig_item_t *cf_read_dir (const char *dir,
                if (tmp == NULL) {
                        ERROR ("configfile: realloc failed.");
                        closedir (dh);
-                       for (i = 0; i < filenames_num - 1; ++i)
+                       for (int i = 0; i < filenames_num - 1; ++i)
                                free (filenames[i]);
                        free (filenames);
                        free (root);
@@ -773,7 +759,7 @@ static oconfig_item_t *cf_read_dir (const char *dir,
        qsort ((void *) filenames, filenames_num, sizeof (*filenames),
                        cf_compare_string);
 
-       for (i = 0; i < filenames_num; ++i)
+       for (int i = 0; i < filenames_num; ++i)
        {
                oconfig_item_t *temp;
                char *name = filenames[i];
@@ -806,7 +792,7 @@ static oconfig_item_t *cf_read_dir (const char *dir,
  *
  * There are two versions of this function: If `wordexp' exists shell wildcards
  * will be expanded and the function will include all matches found. If
- * `wordexp' (or, more precisely, it's header file) is not available the
+ * `wordexp' (or, more precisely, its header file) is not available the
  * simpler function is used which does not do any such expansion.
  */
 #if HAVE_WORDEXP_H
@@ -817,7 +803,6 @@ static oconfig_item_t *cf_read_generic (const char *path,
        int status;
        const char *path_ptr;
        wordexp_t we;
-       size_t i;
 
        if (depth >= CF_MAX_DEPTH)
        {
@@ -845,7 +830,7 @@ static oconfig_item_t *cf_read_generic (const char *path,
        qsort ((void *) we.we_wordv, we.we_wordc, sizeof (*we.we_wordv),
                        cf_compare_string);
 
-       for (i = 0; i < we.we_wordc; i++)
+       for (size_t i = 0; i < we.we_wordc; i++)
        {
                oconfig_item_t *temp;
                struct stat statbuf;
@@ -929,7 +914,6 @@ static oconfig_item_t *cf_read_generic (const char *path,
 int global_option_set (const char *option, const char *value, _Bool from_cli)
 {
        int i;
-
        DEBUG ("option = %s; value = %s;", option, value);
 
        for (i = 0; i < cf_global_options_num; i++)
@@ -965,7 +949,6 @@ int global_option_set (const char *option, const char *value, _Bool from_cli)
 const char *global_option_get (const char *option)
 {
        int i;
-
        for (i = 0; i < cf_global_options_num; i++)
                if (strcasecmp (cf_global_options[i].key, option) == 0)
                        break;
@@ -1026,9 +1009,7 @@ cdtime_t cf_get_default_interval (void)
 
 void cf_unregister (const char *type)
 {
-       cf_callback_t *this, *prev;
-
-       for (prev = NULL, this = first_callback;
+       for (cf_callback_t *prev = NULL, *this = first_callback;
                        this != NULL;
                        prev = this, this = this->next)
                if (strcasecmp (this->type, type) == 0)
@@ -1045,9 +1026,7 @@ void cf_unregister (const char *type)
 
 void cf_unregister_complex (const char *type)
 {
-       cf_complex_callback_t *this, *prev;
-
-       for (prev = NULL, this = complex_callback_head;
+       for (cf_complex_callback_t *prev = NULL, *this = complex_callback_head;
                        this != NULL;
                        prev = this, this = this->next)
                if (strcasecmp (this->type, type) == 0)
@@ -1124,7 +1103,6 @@ int cf_register_complex (const char *type, int (*callback) (oconfig_item_t *))
 int cf_read (const char *filename)
 {
        oconfig_item_t *conf;
-       int i;
        int ret = 0;
 
        conf = cf_read_generic (filename, /* pattern = */ NULL, /* depth = */ 0);
@@ -1140,7 +1118,7 @@ int cf_read (const char *filename)
                return (-1);
        }
 
-       for (i = 0; i < conf->children_num; i++)
+       for (int i = 0; i < conf->children_num; i++)
        {
                if (conf->children[i].children == NULL)
                {
index 5fb965f..cee479a 100644 (file)
@@ -357,7 +357,6 @@ static int fc_config_add_rule (fc_chain_t *chain, /* {{{ */
   fc_rule_t *rule;
   char rule_name[2*DATA_MAX_NAME_LEN] = "Unnamed rule";
   int status = 0;
-  int i;
 
   if (ci->values_num > 1)
   {
@@ -386,7 +385,7 @@ static int fc_config_add_rule (fc_chain_t *chain, /* {{{ */
         ci->values[0].value.string);
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -447,7 +446,6 @@ static int fc_config_add_chain (const oconfig_item_t *ci) /* {{{ */
 {
   fc_chain_t *chain = NULL;
   int status = 0;
-  int i;
   int new_chain = 1;
 
   if ((ci->values_num != 1)
@@ -475,7 +473,7 @@ static int fc_config_add_chain (const oconfig_item_t *ci) /* {{{ */
     sstrncpy (chain->name, ci->values[0].value.string, sizeof (chain->name));
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -625,16 +623,13 @@ static int fc_bit_return_invoke (const data_set_t __attribute__((unused)) *ds, /
 static int fc_bit_write_create (const oconfig_item_t *ci, /* {{{ */
     void **user_data)
 {
-  int i;
-
   fc_writer_t *plugin_list = NULL;
   size_t plugin_list_len = 0;
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     fc_writer_t *temp;
-    int j;
 
     if (strcasecmp ("Plugin", child->key) != 0)
     {
@@ -644,7 +639,7 @@ static int fc_bit_write_create (const oconfig_item_t *ci, /* {{{ */
       continue;
     }
 
-    for (j = 0; j < child->values_num; j++)
+    for (int j = 0; j < child->values_num; j++)
     {
       char *plugin;
 
@@ -685,14 +680,13 @@ static int fc_bit_write_create (const oconfig_item_t *ci, /* {{{ */
 static int fc_bit_write_destroy (void **user_data) /* {{{ */
 {
   fc_writer_t *plugin_list;
-  size_t i;
 
   if ((user_data == NULL) || (*user_data == NULL))
     return (0);
 
   plugin_list = *user_data;
 
-  for (i = 0; plugin_list[i].plugin != NULL; i++)
+  for (size_t i = 0; plugin_list[i].plugin != NULL; i++)
     free (plugin_list[i].plugin);
   free (plugin_list);
 
@@ -745,9 +739,7 @@ static int fc_bit_write_invoke (const data_set_t *ds, /* {{{ */
   }
   else
   {
-    size_t i;
-
-    for (i = 0; plugin_list[i].plugin != NULL; i++)
+    for (size_t i = 0; plugin_list[i].plugin != NULL; i++)
     {
       status = plugin_write (plugin_list[i].plugin, ds, vl);
       if (status != 0)
@@ -875,12 +867,10 @@ int fc_register_target (const char *name, target_proc_t proc) /* {{{ */
 
 fc_chain_t *fc_chain_get_by_name (const char *chain_name) /* {{{ */
 {
-  fc_chain_t *chain;
-
   if (chain_name == NULL)
     return (NULL);
 
-  for (chain = chain_list_head; chain != NULL; chain = chain->next)
+  for (fc_chain_t *chain = chain_list_head; chain != NULL; chain = chain->next)
     if (strcasecmp (chain_name, chain->name) == 0)
       return (chain);
 
@@ -890,7 +880,6 @@ fc_chain_t *fc_chain_get_by_name (const char *chain_name) /* {{{ */
 int fc_process_chain (const data_set_t *ds, value_list_t *vl, /* {{{ */
     fc_chain_t *chain)
 {
-  fc_rule_t *rule;
   fc_target_t *target;
   int status = FC_TARGET_CONTINUE;
 
@@ -899,7 +888,7 @@ int fc_process_chain (const data_set_t *ds, value_list_t *vl, /* {{{ */
 
   DEBUG ("fc_process_chain (chain = %s);", chain->name);
 
-  for (rule = chain->rules; rule != NULL; rule = rule->next)
+  for (fc_rule_t *rule = chain->rules; rule != NULL; rule = rule->next)
   {
     fc_match_t *match;
     status = FC_TARGET_CONTINUE;
index 73c6046..9e4fd07 100644 (file)
@@ -333,8 +333,6 @@ meta_data_t *meta_data_clone (meta_data_t *orig) /* {{{ */
 
 int meta_data_clone_merge (meta_data_t **dest, meta_data_t *orig) /* {{{ */
 {
-  meta_entry_t *e;
-
   if (orig == NULL)
     return (0);
 
@@ -344,7 +342,7 @@ int meta_data_clone_merge (meta_data_t **dest, meta_data_t *orig) /* {{{ */
   }
 
   pthread_mutex_lock (&orig->lock);
-  for (e=orig->head; e != NULL; e = e->next)
+  for (meta_entry_t *e=orig->head; e != NULL; e = e->next)
   {
     md_entry_insert_clone((*dest), e);
   }
@@ -365,14 +363,12 @@ void meta_data_destroy (meta_data_t *md) /* {{{ */
 
 int meta_data_exists (meta_data_t *md, const char *key) /* {{{ */
 {
-  meta_entry_t *e;
-
   if ((md == NULL) || (key == NULL))
     return (-EINVAL);
 
   pthread_mutex_lock (&md->lock);
 
-  for (e = md->head; e != NULL; e = e->next)
+  for (meta_entry_t *e = md->head; e != NULL; e = e->next)
   {
     if (strcasecmp (key, e->key) == 0)
     {
@@ -387,14 +383,12 @@ int meta_data_exists (meta_data_t *md, const char *key) /* {{{ */
 
 int meta_data_type (meta_data_t *md, const char *key) /* {{{ */
 {
-  meta_entry_t *e;
-
   if ((md == NULL) || (key == NULL))
     return -EINVAL;
 
   pthread_mutex_lock (&md->lock);
 
-  for (e = md->head; e != NULL; e = e->next)
+  for (meta_entry_t *e = md->head; e != NULL; e = e->next)
   {
     if (strcasecmp (key, e->key) == 0)
     {
@@ -410,14 +404,13 @@ int meta_data_type (meta_data_t *md, const char *key) /* {{{ */
 int meta_data_toc (meta_data_t *md, char ***toc) /* {{{ */
 {
   int i = 0, count = 0;
-  meta_entry_t *e;
 
   if ((md == NULL) || (toc == NULL))
     return -EINVAL;
 
   pthread_mutex_lock (&md->lock);
 
-  for (e = md->head; e != NULL; e = e->next)
+  for (meta_entry_t *e = md->head; e != NULL; e = e->next)
     ++count;
 
   if (count == 0)
@@ -427,7 +420,7 @@ int meta_data_toc (meta_data_t *md, char ***toc) /* {{{ */
   }
 
   *toc = calloc(count, sizeof(**toc));
-  for (e = md->head; e != NULL; e = e->next)
+  for (meta_entry_t *e = md->head; e != NULL; e = e->next)
     (*toc)[i++] = strdup(e->key);
 
   pthread_mutex_unlock (&md->lock);
index e0ad54c..1bee8cd 100644 (file)
@@ -319,8 +319,8 @@ static void log_list_callbacks (llist_t **list, /* {{{ */
 {
        char *str;
        int len;
-       llentry_t *le;
        int i;
+       llentry_t *le;
        int n;
        char **keys;
 
@@ -655,8 +655,6 @@ static void *plugin_read_thread (void __attribute__((unused)) *args)
 
 static void start_read_threads (int num)
 {
-       int i;
-
        if (read_threads != NULL)
                return;
 
@@ -668,7 +666,7 @@ static void start_read_threads (int num)
        }
 
        read_threads_num = 0;
-       for (i = 0; i < num; i++)
+       for (int i = 0; i < num; i++)
        {
                if (pthread_create (read_threads + read_threads_num, NULL,
                                        plugin_read_thread, NULL) == 0)
@@ -685,8 +683,6 @@ static void start_read_threads (int num)
 
 static void stop_read_threads (void)
 {
-       int i;
-
        if (read_threads == NULL)
                return;
 
@@ -698,7 +694,7 @@ static void stop_read_threads (void)
        pthread_cond_broadcast (&read_cond);
        pthread_mutex_unlock (&read_lock);
 
-       for (i = 0; i < read_threads_num; i++)
+       for (int i = 0; i < read_threads_num; i++)
        {
                if (pthread_join (read_threads[i], NULL) != 0)
                {
@@ -870,8 +866,6 @@ static void *plugin_write_thread (void __attribute__((unused)) *args) /* {{{ */
 
 static void start_write_threads (size_t num) /* {{{ */
 {
-       size_t i;
-
        if (write_threads != NULL)
                return;
 
@@ -883,7 +877,7 @@ static void start_write_threads (size_t num) /* {{{ */
        }
 
        write_threads_num = 0;
-       for (i = 0; i < num; i++)
+       for (size_t i = 0; i < num; i++)
        {
                int status;
 
@@ -1460,7 +1454,6 @@ static void plugin_free_data_sets (void)
 int plugin_register_data_set (const data_set_t *ds)
 {
        data_set_t *ds_copy;
-       size_t i;
 
        if ((data_sets != NULL)
                        && (c_avl_get (data_sets, ds->type, NULL) == 0))
@@ -1488,7 +1481,7 @@ int plugin_register_data_set (const data_set_t *ds)
                return (-1);
        }
 
-       for (i = 0; i < ds->ds_num; i++)
+       for (size_t i = 0; i < ds->ds_num; i++)
                memcpy (ds_copy->ds + i, ds->ds + i, sizeof (data_source_t));
 
        return (c_avl_insert (data_sets, (void *) ds_copy->type, (void *) ds_copy));
@@ -1981,10 +1974,10 @@ int plugin_shutdown_all (void)
        llentry_t *le;
        int ret = 0;  // Assume success.
 
-       stop_read_threads ();
-
        destroy_all_callbacks (&list_init);
 
+       stop_read_threads ();
+
        pthread_mutex_lock (&read_lock);
        llist_destroy (read_list);
        read_list = NULL;
@@ -1992,6 +1985,10 @@ int plugin_shutdown_all (void)
 
        destroy_read_heap ();
 
+       /* blocks until all write threads have shut down. */
+       stop_write_threads ();
+
+       /* ask all plugins to write out the state they kept. */
        plugin_flush (/* plugin = */ NULL,
                        /* timeout = */ 0,
                        /* identifier = */ NULL);
@@ -2022,8 +2019,6 @@ int plugin_shutdown_all (void)
                plugin_set_ctx (old_ctx);
        }
 
-       stop_write_threads ();
-
        /* Write plugins which use the `user_data' pointer usually need the
         * same data available to the flush callback. If this is the case, set
         * the free_function to NULL when registering the flush callback and to
@@ -2686,14 +2681,12 @@ int plugin_notification_meta_add_boolean (notification_t *n,
 int plugin_notification_meta_copy (notification_t *dst,
     const notification_t *src)
 {
-  notification_meta_t *meta;
-
   assert (dst != NULL);
   assert (src != NULL);
   assert (dst != src);
   assert ((src->meta == NULL) || (src->meta != dst->meta));
 
-  for (meta = src->meta; meta != NULL; meta = meta->next)
+  for (notification_meta_t *meta = src->meta; meta != NULL; meta = meta->next)
   {
     if (meta->type == NM_TYPE_STRING)
       plugin_notification_meta_add_string (dst, meta->name,
index 436df67..34c222c 100644 (file)
@@ -103,7 +103,6 @@ static void parse_line (char *buf)
   char  *fields[64];
   size_t fields_num;
   data_set_t *ds;
-  size_t i;
 
   fields_num = strsplit (buf, fields, 64);
   if (fields_num < 2)
@@ -127,7 +126,7 @@ static void parse_line (char *buf)
     return;
   }
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
     if (parse_ds (ds->ds + i, fields[i + 1], strlen (fields[i + 1])) != 0)
     {
       ERROR ("types_list: parse_line: Cannot parse data source #%zu "
index 1e0f271..43e94cf 100644 (file)
@@ -42,7 +42,7 @@ typedef struct c_avl_iterator_s c_avl_iterator_t;
  *
  * PARAMETERS
  *   `compare'  The function-pointer `compare' is used to compare two keys. It
- *              has to return less than zero if it's first argument is smaller
+ *              has to return less than zero if its first argument is smaller
  *              then the second argument, more than zero if the first argument
  *              is bigger than the second argument and zero if they are equal.
  *              If your keys are char-pointers, you can use the `strcmp'
@@ -131,7 +131,7 @@ int c_avl_get (c_avl_tree_t *t, const void *key, void **value);
  *   c_avl_pick
  *
  * DESCRIPTION
- *   Remove a (pseudo-)random element from the tree and return it's `key' and
+ *   Remove a (pseudo-)random element from the tree and return its `key' and
  *   `value'. Entries are not returned in any particular order. This function
  *   is intended for cache-flushes that don't care about the order but simply
  *   want to remove all elements, one at a time.
index 2019ffa..150dd1b 100644 (file)
@@ -71,13 +71,12 @@ DEF_TEST(success)
   };
 
   c_avl_tree_t *t;
-  size_t i;
 
   RESET_COUNTS ();
   CHECK_NOT_NULL (t = c_avl_create (compare_callback));
 
   /* insert */
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++)
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++)
   {
     char *key;
     char *value;
@@ -90,11 +89,11 @@ DEF_TEST(success)
   }
 
   /* Key already exists. */
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++)
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++)
     EXPECT_EQ_INT (1, c_avl_insert (t, cases[i].key, cases[i].value));
 
   /* get */
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++)
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++)
   {
     char *value_ret = NULL;
 
@@ -103,7 +102,7 @@ DEF_TEST(success)
   }
 
   /* remove half */
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases) / 2; i++)
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases) / 2; i++)
   {
     char *key = NULL;
     char *value = NULL;
@@ -122,7 +121,7 @@ DEF_TEST(success)
   }
 
   /* pick the other half */
-  for (i = STATIC_ARRAY_SIZE (cases) / 2; i < STATIC_ARRAY_SIZE (cases); i++)
+  for (size_t i = STATIC_ARRAY_SIZE (cases) / 2; i < STATIC_ARRAY_SIZE (cases); i++)
   {
     char *key = NULL;
     char *value = NULL;
index 8dfe359..7c1fa41 100644 (file)
@@ -136,9 +136,7 @@ static void cache_free (cache_entry_t *ce)
 
 static void uc_check_range (const data_set_t *ds, cache_entry_t *ce)
 {
-  size_t i;
-
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     if (isnan (ce->values_gauge[i]))
       continue;
@@ -154,7 +152,6 @@ static int uc_insert (const data_set_t *ds, const value_list_t *vl,
 {
   char *key_copy;
   cache_entry_t *ce;
-  size_t i;
 
   /* `cache_lock' has been locked by `uc_update' */
 
@@ -175,7 +172,7 @@ static int uc_insert (const data_set_t *ds, const value_list_t *vl,
 
   sstrncpy (ce->name, key, sizeof (ce->name));
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     switch (ds->ds[i].type)
     {
@@ -254,7 +251,6 @@ int uc_check_timeout (void)
   c_avl_iterator_t *iter;
 
   int status;
-  int i;
 
   pthread_mutex_lock (&cache_lock);
 
@@ -326,7 +322,7 @@ int uc_check_timeout (void)
    * including plugin specific meta data, rates, history, â€¦. This must be done
    * without holding the lock, otherwise we will run into a deadlock if a
    * plugin calls the cache interface. */
-  for (i = 0; i < keys_len; i++)
+  for (int i = 0; i < keys_len; i++)
   {
     value_list_t vl = VALUE_LIST_INIT;
 
@@ -351,7 +347,7 @@ int uc_check_timeout (void)
    * the timestamp again, so in theory it is possible we remove a value after
    * it is updated here. */
   pthread_mutex_lock (&cache_lock);
-  for (i = 0; i < keys_len; i++)
+  for (int i = 0; i < keys_len; i++)
   {
     key = NULL;
     ce = NULL;
@@ -383,7 +379,6 @@ int uc_update (const data_set_t *ds, const value_list_t *vl)
   char name[6 * DATA_MAX_NAME_LEN];
   cache_entry_t *ce = NULL;
   int status;
-  size_t i;
 
   if (FORMAT_VL (name, sizeof (name), vl) != 0)
   {
@@ -415,7 +410,7 @@ int uc_update (const data_set_t *ds, const value_list_t *vl)
     return (-1);
   }
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     switch (ds->ds[i].type)
     {
@@ -464,7 +459,7 @@ int uc_update (const data_set_t *ds, const value_list_t *vl)
   if (ce->history != NULL)
   {
     assert (ce->history_index < ce->history_length);
-    for (i = 0; i < ce->values_num; i++)
+    for (size_t i = 0; i < ce->values_num; i++)
     {
       size_t hist_idx = (ce->values_num * ce->history_index) + i;
       ce->history[hist_idx] = ce->values_gauge[i];
@@ -644,9 +639,7 @@ int uc_get_names (char ***ret_names, cdtime_t **ret_times, size_t *ret_number)
 
   if (status != 0)
   {
-    size_t i;
-
-    for (i = 0; i < number; i++)
+    for (size_t i = 0; i < number; i++)
     {
       sfree (names[i]);
     }
@@ -721,7 +714,6 @@ int uc_get_history_by_name (const char *name,
     gauge_t *ret_history, size_t num_steps, size_t num_ds)
 {
   cache_entry_t *ce = NULL;
-  size_t i;
   int status = 0;
 
   pthread_mutex_lock (&cache_lock);
@@ -753,7 +745,7 @@ int uc_get_history_by_name (const char *name,
       return (-ENOMEM);
     }
 
-    for (i = ce->history_length * ce->values_num;
+    for (size_t i = ce->history_length * ce->values_num;
        i < (num_steps * ce->values_num);
        i++)
       tmp[i] = NAN;
@@ -763,7 +755,7 @@ int uc_get_history_by_name (const char *name,
   } /* if (ce->history_length < num_steps) */
 
   /* Copy the values to the output buffer. */
-  for (i = 0; i < num_steps; i++)
+  for (size_t i = 0; i < num_steps; i++)
   {
     size_t src_index;
     size_t dst_index;
@@ -948,8 +940,6 @@ int uc_iterator_get_time (uc_iter_t *iter, cdtime_t *ret_time)
 
 int uc_iterator_get_values (uc_iter_t *iter, value_t **ret_values, size_t *ret_num)
 {
-  size_t i;
-
   if ((iter == NULL) || (iter->entry == NULL)
       || (ret_values == NULL) || (ret_num == NULL))
     return (-1);
@@ -957,7 +947,7 @@ int uc_iterator_get_values (uc_iter_t *iter, value_t **ret_values, size_t *ret_n
   *ret_values = calloc (iter->entry->values_num, sizeof(*iter->entry->values_raw));
   if (*ret_values == NULL)
     return (-1);
-  for (i = 0; i < iter->entry->values_num; ++i)
+  for (size_t i = 0; i < iter->entry->values_num; ++i)
     *ret_values[i] = iter->entry->values_raw[i];
 
   *ret_num = iter->entry->values_num;
index 6d71c43..243554c 100644 (file)
@@ -39,7 +39,7 @@ typedef struct c_heap_s c_heap_t;
  *
  * PARAMETERS
  *   `compare'  The function-pointer `compare' is used to compare two keys. It
- *              has to return less than zero if it's first argument is smaller
+ *              has to return less than zero if its first argument is smaller
  *              then the second argument, more than zero if the first argument
  *              is bigger than the second argument and zero if they are equal.
  *              If your keys are char-pointers, you can use the `strcmp'
index 82392ef..54a9613 100644 (file)
@@ -45,14 +45,13 @@ static int compare (void const *v0, void const *v1)
 DEF_TEST(simple)
 {
   int values[] = { 9, 5, 6, 1, 3, 4, 0, 8, 2, 7 };
-  int i;
   c_heap_t *h;
 
   CHECK_NOT_NULL(h = c_heap_create (compare));
-  for (i = 0; i < 10; i++)
+  for (int i = 0; i < 10; i++)
     CHECK_ZERO(c_heap_insert (h, &values[i]));
 
-  for (i = 0; i < 5; i++)
+  for (int i = 0; i < 5; i++)
   {
     int *ret = NULL;
     CHECK_NOT_NULL(ret = c_heap_get_root(h));
@@ -65,7 +64,7 @@ DEF_TEST(simple)
   CHECK_ZERO(c_heap_insert (h, &values[4] /* = 3 */));
   CHECK_ZERO(c_heap_insert (h, &values[5] /* = 4 */));
 
-  for (i = 0; i < 10; i++)
+  for (int i = 0; i < 10; i++)
   {
     int *ret = NULL;
     CHECK_NOT_NULL(ret = c_heap_get_root(h));
index 311cb07..ff73ad7 100644 (file)
@@ -304,8 +304,6 @@ int ignorelist_add (ignorelist_t *il, const char *entry)
  */
 int ignorelist_match (ignorelist_t *il, const char *entry)
 {
-       ignorelist_item_t *traverse;
-
        /* if no entries, collect all */
        if ((il == NULL) || (il->head == NULL))
                return (0);
@@ -314,7 +312,7 @@ int ignorelist_match (ignorelist_t *il, const char *entry)
                return (0);
 
        /* traverse list and check entries */
-       for (traverse = il->head; traverse != NULL; traverse = traverse->next)
+       for (ignorelist_item_t *traverse = il->head; traverse != NULL; traverse = traverse->next)
        {
 #if HAVE_REGEX_H
                if (traverse->rmatch != NULL)
index 803656d..5273c90 100644 (file)
@@ -324,7 +324,6 @@ int match_apply (cu_match_t *obj, const char *str)
   regmatch_t re_match[32];
   char *matches[32] = { 0 };
   size_t matches_num;
-  size_t i;
 
   if ((obj == NULL) || (str == NULL))
     return (-1);
@@ -376,7 +375,7 @@ int match_apply (cu_match_t *obj, const char *str)
     }
   }
 
-  for (i = 0; i < matches_num; i++)
+  for (size_t i = 0; i < matches_num; i++)
   {
     sfree (matches[i]);
   }
index c180b7d..c6caba2 100644 (file)
@@ -76,9 +76,8 @@ DEF_TEST(subst)
     {"foo bar",  4,  3, "_",  NULL}, /* off1 > off2 */
     {"foo bar",  3,  4, NULL, NULL}, /* no replacement */
   };
-  size_t i;
 
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
     char buffer[16] = "!!!!!!!!!!!!!!!";
 
     if (cases[i].want == NULL) {
@@ -109,9 +108,8 @@ DEF_TEST(subst_string)
     {"foo bar",          "oo",      "oo",    "foo bar"},
     {"sixteen chars",    "chars",   "characters", "sixteen charact"},
   };
-  size_t i;
 
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
     char buffer[16];
 
     if (cases[i].want == NULL) {
index 604c6d4..ffcaa90 100644 (file)
@@ -112,9 +112,8 @@ static int tail_callback (void *data, char *buf,
     int __attribute__((unused)) buflen)
 {
   cu_tail_match_t *obj = (cu_tail_match_t *) data;
-  size_t i;
 
-  for (i = 0; i < obj->matches_num; i++)
+  for (size_t i = 0; i < obj->matches_num; i++)
     match_apply (obj->matches[i].match, buf);
 
   return (0);
@@ -143,8 +142,6 @@ cu_tail_match_t *tail_match_create (const char *filename)
 
 void tail_match_destroy (cu_tail_match_t *obj)
 {
-  size_t i;
-
   if (obj == NULL)
     return;
 
@@ -154,7 +151,7 @@ void tail_match_destroy (cu_tail_match_t *obj)
     obj->tail = NULL;
   }
 
-  for (i = 0; i < obj->matches_num; i++)
+  for (size_t i = 0; i < obj->matches_num; i++)
   {
     cu_tail_match_match_t *match = obj->matches + i;
     if (match->match != NULL)
@@ -247,7 +244,6 @@ int tail_match_read (cu_tail_match_t *obj)
 {
   char buffer[4096];
   int status;
-  size_t i;
 
   status = cu_tail_read (obj->tail, buffer, sizeof (buffer), tail_callback,
       (void *) obj);
@@ -257,7 +253,7 @@ int tail_match_read (cu_tail_match_t *obj)
     return (status);
   }
 
-  for (i = 0; i < obj->matches_num; i++)
+  for (size_t i = 0; i < obj->matches_num; i++)
   {
     cu_tail_match_match_t *lt_match = obj->matches + i;
 
index 493e591..9f04368 100644 (file)
@@ -65,9 +65,8 @@ DEF_TEST(conversion)
     // 1546167986577716567 / 2^30 = 1439981150.0475896215...
     {1546167986577716567ULL, 1439981150.048, 1439981150, 1439981150048ULL, {1439981150,  47590}, {1439981150,  47589622}},
   };
-  size_t i;
 
-  for (i = 0; i < (sizeof (cases) / sizeof (cases[0])); i++) {
+  for (size_t i = 0; i < (sizeof (cases) / sizeof (cases[0])); i++) {
     struct timeval tv;
     struct timespec ts;
 
@@ -108,9 +107,8 @@ DEF_TEST(ns_to_cdtime)
     // 1439981880053705608 * 2^30 / 10^9 = 1546168770415815077.4
     {1439981880053705608ULL, 1546168770415815077ULL},
   };
-  size_t i;
 
-  for (i = 0; i < (sizeof (cases) / sizeof (cases[0])); i++) {
+  for (size_t i = 0; i < (sizeof (cases) / sizeof (cases[0])); i++) {
     EXPECT_EQ_UINT64 (cases[i].want, NS_TO_CDTIME_T (cases[i].ns));
   }
 
index 78ac777..b93aa51 100644 (file)
--- a/src/dbi.c
+++ b/src/dbi.c
@@ -179,15 +179,13 @@ static int cdbi_result_get_field (dbi_result res, /* {{{ */
 
 static void cdbi_database_free (cdbi_database_t *db) /* {{{ */
 {
-  size_t i;
-
   if (db == NULL)
     return;
 
   sfree (db->name);
   sfree (db->driver);
 
-  for (i = 0; i < db->driver_options_num; i++)
+  for (size_t i = 0; i < db->driver_options_num; i++)
   {
     sfree (db->driver_options[i].key);
     if (!db->driver_options[i].is_numeric)
@@ -196,7 +194,7 @@ static void cdbi_database_free (cdbi_database_t *db) /* {{{ */
   sfree (db->driver_options);
 
   if (db->q_prep_areas)
-    for (i = 0; i < db->queries_num; ++i)
+    for (size_t i = 0; i < db->queries_num; ++i)
       udb_query_delete_preparation_area (db->q_prep_areas[i]);
   free (db->q_prep_areas);
 
@@ -285,7 +283,6 @@ static int cdbi_config_add_database (oconfig_item_t *ci) /* {{{ */
 {
   cdbi_database_t *db;
   int status;
-  int i;
 
   if ((ci->values_num != 1)
       || (ci->values[0].type != OCONFIG_TYPE_STRING))
@@ -310,7 +307,7 @@ static int cdbi_config_add_database (oconfig_item_t *ci) /* {{{ */
   }
 
   /* Fill the `cdbi_database_t' structure.. */
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -356,8 +353,6 @@ static int cdbi_config_add_database (oconfig_item_t *ci) /* {{{ */
 
   while ((status == 0) && (db->queries_num > 0))
   {
-    size_t j;
-
     db->q_prep_areas = calloc (db->queries_num, sizeof (*db->q_prep_areas));
     if (db->q_prep_areas == NULL)
     {
@@ -366,12 +361,12 @@ static int cdbi_config_add_database (oconfig_item_t *ci) /* {{{ */
       break;
     }
 
-    for (j = 0; j < db->queries_num; ++j)
+    for (size_t i = 0; i < db->queries_num; ++i)
     {
-      db->q_prep_areas[j]
-        = udb_query_allocate_preparation_area (db->queries[j]);
+      db->q_prep_areas[i]
+        = udb_query_allocate_preparation_area (db->queries[i]);
 
-      if (db->q_prep_areas[j] == NULL)
+      if (db->q_prep_areas[i] == NULL)
       {
         WARNING ("dbi plugin: udb_query_allocate_preparation_area failed");
         status = -1;
@@ -427,9 +422,7 @@ static int cdbi_config_add_database (oconfig_item_t *ci) /* {{{ */
 
 static int cdbi_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     if (strcasecmp ("Query", child->key) == 0)
@@ -498,7 +491,6 @@ static int cdbi_read_database_query (cdbi_database_t *db, /* {{{ */
   char **column_names;
   char **column_values;
   int status;
-  size_t i;
 
   /* Macro that cleans up dynamically allocated memory and returns the
    * specified status. */
@@ -558,7 +550,7 @@ static int cdbi_read_database_query (cdbi_database_t *db, /* {{{ */
     ERROR ("dbi plugin: calloc failed.");
     BAIL_OUT (-1);
   }
-  for (i = 1; i < column_num; i++)
+  for (size_t i = 1; i < column_num; i++)
     column_names[i] = column_names[i - 1] + DATA_MAX_NAME_LEN;
 
   column_values = calloc (column_num, sizeof (*column_values));
@@ -574,12 +566,12 @@ static int cdbi_read_database_query (cdbi_database_t *db, /* {{{ */
     ERROR ("dbi plugin: calloc failed.");
     BAIL_OUT (-1);
   }
-  for (i = 1; i < column_num; i++)
+  for (size_t i = 1; i < column_num; i++)
     column_values[i] = column_values[i - 1] + DATA_MAX_NAME_LEN;
   /* }}} */
 
   /* Copy the field names to `column_names' */
-  for (i = 0; i < column_num; i++) /* {{{ */
+  for (size_t i = 0; i < column_num; i++) /* {{{ */
   {
     const char *column_name;
 
@@ -619,7 +611,7 @@ static int cdbi_read_database_query (cdbi_database_t *db, /* {{{ */
   {
     status = 0;
     /* Copy the value of the columns to `column_values' */
-    for (i = 0; i < column_num; i++) /* {{{ */
+    for (size_t i = 0; i < column_num; i++) /* {{{ */
     {
       status = cdbi_result_get_field (res, (unsigned int) (i + 1),
           column_values[i], DATA_MAX_NAME_LEN);
@@ -675,7 +667,6 @@ static int cdbi_connect_database (cdbi_database_t *db) /* {{{ */
 {
   dbi_driver driver;
   dbi_conn connection;
-  size_t i;
   int status;
 
   if (db->connection != NULL)
@@ -717,7 +708,7 @@ static int cdbi_connect_database (cdbi_database_t *db) /* {{{ */
    * encountered, it will get a list of options understood by the driver and
    * report that as `INFO'. This way, users hopefully don't have too much
    * trouble finding out how to configure the plugin correctly.. */
-  for (i = 0; i < db->driver_options_num; i++)
+  for (size_t i = 0; i < db->driver_options_num; i++)
   {
     if (db->driver_options[i].is_numeric)
     {
@@ -750,11 +741,9 @@ static int cdbi_connect_database (cdbi_database_t *db) /* {{{ */
 
     if (status != 0)
     {
-      char const *opt;
-
       INFO ("dbi plugin: This is a list of all options understood "
           "by the `%s' driver:", db->driver);
-      for (opt = dbi_conn_get_option_list (connection, NULL);
+      for (const char *opt = dbi_conn_get_option_list (connection, NULL);
           opt != NULL;
           opt = dbi_conn_get_option_list (connection, opt))
       {
@@ -799,7 +788,6 @@ static int cdbi_connect_database (cdbi_database_t *db) /* {{{ */
 static int cdbi_read_database (user_data_t *ud) /* {{{ */
 {
   cdbi_database_t *db = (cdbi_database_t *) ud->data;
-  size_t i;
   int success;
   int status;
 
@@ -814,7 +802,7 @@ static int cdbi_read_database (user_data_t *ud) /* {{{ */
   /* TODO: Complain if `db_version == 0' */
 
   success = 0;
-  for (i = 0; i < db->queries_num; i++)
+  for (size_t i = 0; i < db->queries_num; i++)
   {
     /* Check if we know the database's version and if so, if this query applies
      * to that version. */
@@ -839,9 +827,7 @@ static int cdbi_read_database (user_data_t *ud) /* {{{ */
 
 static int cdbi_shutdown (void) /* {{{ */
 {
-  size_t i;
-
-  for (i = 0; i < databases_num; i++)
+  for (size_t i = 0; i < databases_num; i++)
   {
     if (databases[i]->connection != NULL)
     {
index 1e36009..83be176 100644 (file)
--- a/src/df.c
+++ b/src/df.c
@@ -191,7 +191,6 @@ static int df_read (void)
 #endif
        /* struct STATANYFS statbuf; */
        cu_mount_t *mnt_list;
-       cu_mount_t *mnt_ptr;
 
        mnt_list = NULL;
        if (cu_mount_getlist (&mnt_list) == NULL)
@@ -200,7 +199,7 @@ static int df_read (void)
                return (-1);
        }
 
-       for (mnt_ptr = mnt_list; mnt_ptr != NULL; mnt_ptr = mnt_ptr->next)
+       for (cu_mount_t *mnt_ptr = mnt_list; mnt_ptr != NULL; mnt_ptr = mnt_ptr->next)
        {
                unsigned long long blocksize;
                char disk_name[256];
@@ -274,12 +273,12 @@ static int df_read (void)
                                sstrncpy (disk_name, "root", sizeof (disk_name));
                        else
                        {
-                               int i, len;
+                               int len;
 
                                sstrncpy (disk_name, mnt_ptr->dir + 1, sizeof (disk_name));
                                len = strlen (disk_name);
 
-                               for (i = 0; i < len; i++)
+                               for (int i = 0; i < len; i++)
                                        if (disk_name[i] == '/')
                                                disk_name[i] = '-';
                        }
index a798a89..d7eb0a5 100644 (file)
@@ -954,12 +954,11 @@ static int disk_read (void)
 #  error "kstat_io_t does not have the required members"
 # endif
        static kstat_io_t kio;
-       int i;
 
        if (kc == NULL)
                return (-1);
 
-       for (i = 0; i < numdisk; i++)
+       for (int i = 0; i < numdisk; i++)
        {
                if (kstat_read (kc, ksp[i], &kio) == -1)
                        continue;
@@ -997,13 +996,12 @@ static int disk_read (void)
 # else
        int disks;
 #endif
-       int counter;
        char name[DATA_MAX_NAME_LEN];
 
        if ((ds = sg_get_disk_io_stats(&disks)) == NULL)
                return (0);
 
-       for (counter=0; counter < disks; counter++) {
+       for (int counter = 0; counter < disks; counter++) {
                strncpy(name, ds->disk_name, sizeof(name));
                name[sizeof(name)-1] = '\0'; /* strncpy doesn't terminate longer strings */
 
@@ -1026,7 +1024,6 @@ static int disk_read (void)
        derive_t write_ops;
        perfstat_id_t firstpath;
        int rnumdisk;
-       int i;
 
        if ((numdisk = perfstat_disk(NULL, NULL, sizeof(perfstat_disk_t), 0)) < 0)
        {
@@ -1052,7 +1049,7 @@ static int disk_read (void)
                return (-1);
        }
 
-       for (i = 0; i < rnumdisk; i++)
+       for (int i = 0; i < rnumdisk; i++)
        {
                if (ignorelist_match (ignorelist, stat_disk[i].name) != 0)
                        continue;
index 17f8796..15fa15a 100644 (file)
--- a/src/dns.c
+++ b/src/dns.c
@@ -390,7 +390,6 @@ static int dns_read (void)
        unsigned int keys[T_MAX];
        unsigned int values[T_MAX];
        int len;
-       int i;
 
        counter_list_t *ptr;
 
@@ -412,7 +411,7 @@ static int dns_read (void)
        }
        pthread_mutex_unlock (&qtype_mutex);
 
-       for (i = 0; i < len; i++)
+       for (int i = 0; i < len; i++)
        {
                DEBUG ("dns plugin: qtype = %u; counter = %u;", keys[i], values[i]);
                submit_derive ("dns_qtype", qtype_str (keys[i]), values[i]);
@@ -428,7 +427,7 @@ static int dns_read (void)
        }
        pthread_mutex_unlock (&opcode_mutex);
 
-       for (i = 0; i < len; i++)
+       for (int i = 0; i < len; i++)
        {
                DEBUG ("dns plugin: opcode = %u; counter = %u;", keys[i], values[i]);
                submit_derive ("dns_opcode", opcode_str (keys[i]), values[i]);
@@ -444,7 +443,7 @@ static int dns_read (void)
        }
        pthread_mutex_unlock (&rcode_mutex);
 
-       for (i = 0; i < len; i++)
+       for (int i = 0; i < len; i++)
        {
                DEBUG ("dns plugin: rcode = %u; counter = %u;", keys[i], values[i]);
                submit_derive ("dns_rcode", rcode_str (keys[i]), values[i]);
index 3485c0b..70f03ca 100644 (file)
@@ -70,7 +70,6 @@ static int drbd_submit_fields (long int resource,
        char plugin_instance[DATA_MAX_NAME_LEN];
        value_t values[fields_num];
        value_list_t vl = VALUE_LIST_INIT;
-       size_t i;
 
        if (resource < 0)
        {
@@ -89,7 +88,7 @@ static int drbd_submit_fields (long int resource,
        ssnprintf (plugin_instance, sizeof (plugin_instance), "r%ld",
                        resource);
 
-       for (i = 0; i < drbd_names_num; i++)
+       for (size_t i = 0; i < drbd_names_num; i++)
        {
                char *data;
                /* skip non numeric wo */
@@ -108,7 +107,7 @@ static int drbd_submit_fields (long int resource,
                        sizeof (vl.plugin_instance));
        sstrncpy (vl.type, "drbd_resource", sizeof (vl.type));
 
-       for (i = 0; i < fields_num; i++)
+       for (size_t i = 0; i < fields_num; i++)
        {
                if (drbd_names[i] == NULL)
                        continue;
index 59f6beb..9dce34c 100644 (file)
@@ -465,8 +465,6 @@ static void *open_connection (void __attribute__((unused)) *arg)
        }
 
        { /* initialize collector threads */
-               int i   = 0;
-
                pthread_attr_t ptattr;
 
                conns.head = NULL;
@@ -480,7 +478,7 @@ static void *open_connection (void __attribute__((unused)) *arg)
                collectors =
                        smalloc (max_conns * sizeof (*collectors));
 
-               for (i = 0; i < max_conns; ++i) {
+               for (int i = 0; i < max_conns; ++i) {
                        collectors[i] = smalloc (sizeof (*collectors[i]));
                        collectors[i]->socket = NULL;
 
@@ -604,8 +602,6 @@ static void type_list_free (type_list_t *t)
 
 static int email_shutdown (void)
 {
-       int i = 0;
-
        if (connector != ((pthread_t) 0)) {
                pthread_kill (connector, SIGTERM);
                connector = (pthread_t) 0;
@@ -622,7 +618,7 @@ static int email_shutdown (void)
        available_collectors = 0;
 
        if (collectors != NULL) {
-               for (i = 0; i < max_conns; ++i) {
+               for (int i = 0; i < max_conns; ++i) {
                        if (collectors[i] == NULL)
                                continue;
 
@@ -680,12 +676,9 @@ static void email_submit (const char *type, const char *type_instance, gauge_t v
  * after they have been copied to l2. */
 static void copy_type_list (type_list_t *l1, type_list_t *l2)
 {
-       type_t *ptr1;
-       type_t *ptr2;
-
        type_t *last = NULL;
 
-       for (ptr1 = l1->head, ptr2 = l2->head; NULL != ptr1;
+       for (type_t *ptr1 = l1->head, *ptr2 = l2->head; NULL != ptr1;
                        ptr1 = ptr1->next, last = ptr2, ptr2 = ptr2->next) {
                if (NULL == ptr2) {
                        ptr2 = smalloc (sizeof (*ptr2));
@@ -714,8 +707,6 @@ static void copy_type_list (type_list_t *l1, type_list_t *l2)
 
 static int email_read (void)
 {
-       type_t *ptr;
-
        double score_old;
        int score_count_old;
 
@@ -729,7 +720,7 @@ static int email_read (void)
 
        pthread_mutex_unlock (&count_mutex);
 
-       for (ptr = list_count_copy.head; NULL != ptr; ptr = ptr->next) {
+       for (type_t *ptr = list_count_copy.head; NULL != ptr; ptr = ptr->next) {
                email_submit ("email_count", ptr->name, ptr->value);
        }
 
@@ -740,7 +731,7 @@ static int email_read (void)
 
        pthread_mutex_unlock (&size_mutex);
 
-       for (ptr = list_size_copy.head; NULL != ptr; ptr = ptr->next) {
+       for (type_t *ptr = list_size_copy.head; NULL != ptr; ptr = ptr->next) {
                email_submit ("email_size", ptr->name, ptr->value);
        }
 
@@ -764,7 +755,7 @@ static int email_read (void)
 
        pthread_mutex_unlock (&check_mutex);
 
-       for (ptr = list_check_copy.head; NULL != ptr; ptr = ptr->next)
+       for (type_t *ptr = list_check_copy.head; NULL != ptr; ptr = ptr->next)
                email_submit ("spam_check", ptr->name, ptr->value);
 
        return (0);
index 39af140..a213b60 100644 (file)
@@ -150,9 +150,7 @@ static int ethstat_add_map (const oconfig_item_t *ci) /* {{{ */
 
 static int ethstat_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -222,7 +220,6 @@ static int ethstat_read_interface (char *device)
   size_t n_stats;
   size_t strings_size;
   size_t stats_size;
-  size_t i;
   int status;
 
   fd = socket(AF_INET, SOCK_DGRAM, /* protocol = */ 0);
@@ -312,7 +309,7 @@ static int ethstat_read_interface (char *device)
     return (-1);
   }
 
-  for (i = 0; i < n_stats; i++)
+  for (size_t i = 0; i < n_stats; i++)
   {
     char *stat_name;
 
@@ -336,9 +333,7 @@ static int ethstat_read_interface (char *device)
 
 static int ethstat_read(void)
 {
-  size_t i;
-
-  for (i = 0; i < interfaces_num; i++)
+  for (size_t i = 0; i < interfaces_num; i++)
     ethstat_read_interface (interfaces[i]);
 
   return 0;
index 699041a..e90f83c 100644 (file)
@@ -246,9 +246,7 @@ static int exec_config_exec (oconfig_item_t *ci) /* {{{ */
 
 static int exec_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     if ((strcasecmp ("Exec", child->key) == 0)
@@ -471,11 +469,10 @@ static int fork_child (program_list_t *pl, int *fd_in, int *fd_out, int *fd_err)
   else if (pid == 0)
   {
     int fd_num;
-    int fd;
 
     /* Close all file descriptors but the pipe end we need. */
     fd_num = getdtablesize ();
-    for (fd = 0; fd < fd_num; fd++)
+    for (int fd = 0; fd < fd_num; fd++)
     {
       if ((fd == fd_pipe_in[0])
           || (fd == fd_pipe_out[1])
@@ -721,7 +718,6 @@ static void *exec_notification_one (void *arg) /* {{{ */
 {
   program_list_t *pl = ((program_list_and_notification_t *) arg)->pl;
   notification_t *n = &((program_list_and_notification_t *) arg)->n;
-  notification_meta_t *meta;
   int fd;
   FILE *fh;
   int pid;
@@ -769,7 +765,7 @@ static void *exec_notification_one (void *arg) /* {{{ */
   if (strlen (n->type_instance) > 0)
     fprintf (fh, "TypeInstance: %s\n", n->type_instance);
 
-  for (meta = n->meta; meta != NULL; meta = meta->next)
+  for (notification_meta_t *meta = n->meta; meta != NULL; meta = meta->next)
   {
     if (meta->type == NM_TYPE_STRING)
       fprintf (fh, "%s: %s\n", meta->name, meta->nm_value.nm_string);
@@ -815,9 +811,7 @@ static int exec_init (void) /* {{{ */
 
 static int exec_read (void) /* {{{ */
 {
-  program_list_t *pl;
-
-  for (pl = pl_head; pl != NULL; pl = pl->next)
+  for (program_list_t *pl = pl_head; pl != NULL; pl = pl->next)
   {
     pthread_t t;
     pthread_attr_t attr;
@@ -848,10 +842,9 @@ static int exec_read (void) /* {{{ */
 static int exec_notification (const notification_t *n, /* {{{ */
     user_data_t __attribute__((unused)) *user_data)
 {
-  program_list_t *pl;
   program_list_and_notification_t *pln;
 
-  for (pl = pl_head; pl != NULL; pl = pl->next)
+  for (program_list_t *pl = pl_head; pl != NULL; pl = pl->next)
   {
     pthread_t t;
     pthread_attr_t attr;
index 169e9d0..9de9e6c 100644 (file)
@@ -335,7 +335,6 @@ static int fc_config_add_dir (oconfig_item_t *ci)
 {
   fc_directory_conf_t *dir;
   int status;
-  int i;
 
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
@@ -369,7 +368,7 @@ static int fc_config_add_dir (oconfig_item_t *ci)
   dir->size = 0;
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -429,9 +428,7 @@ static int fc_config_add_dir (oconfig_item_t *ci)
 
 static int fc_config (oconfig_item_t *ci)
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     if (strcasecmp ("Directory", child->key) == 0)
@@ -558,9 +555,7 @@ static int fc_read_dir (fc_directory_conf_t *dir)
 
 static int fc_read (void)
 {
-  size_t i;
-
-  for (i = 0; i < directories_num; i++)
+  for (size_t i = 0; i < directories_num; i++)
     fc_read_dir (directories[i]);
 
   return (0);
index 332a32c..33633d6 100644 (file)
@@ -159,7 +159,6 @@ static void fscache_read_stats_file (FILE *fh)
         char *lineptr;
         char *fields[32];
         int fields_num;
-        int i;
 
         /* Find the colon and replace it with a null byte */
         lineptr = strchr (linebuffer, ':');
@@ -183,7 +182,7 @@ static void fscache_read_stats_file (FILE *fh)
         if (fields_num <= 0)
             continue;
 
-        for (i = 0; i < fields_num; i++)
+        for (int i = 0; i < fields_num; i++)
         {
             char *field_name;
             char *field_value_str;
index 5af0f32..2b299ca 100644 (file)
@@ -213,7 +213,6 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */
     const char *node, const char *service, int listen)
 {
   struct addrinfo *ai_list;
-  struct addrinfo *ai_ptr;
   int              ai_return;
 
   socket_entry_t *sockets = NULL;
@@ -244,7 +243,7 @@ static int create_sockets (socket_entry_t **ret_sockets, /* {{{ */
     return (-1);
   }
 
-  for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) /* {{{ */
+  for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) /* {{{ */
   {
     socket_entry_t *tmp;
 
@@ -398,7 +397,6 @@ static int request_meta_data (const char *host, const char *name) /* {{{ */
   char buffer[BUFF_SIZE] = { 0 };
   unsigned int buffer_size;
   XDR xdr;
-  size_t i;
 
   msg.id = gmetadata_request;
   msg.Ganglia_metadata_msg_u.grequest.metric_id.host = strdup (host);
@@ -427,7 +425,7 @@ static int request_meta_data (const char *host, const char *name) /* {{{ */
       host, name);
 
   pthread_mutex_lock (&mc_send_sockets_lock);
-  for (i = 0; i < mc_send_sockets_num; i++)
+  for (size_t i = 0; i < mc_send_sockets_num; i++)
   {
     ssize_t status = sendto (mc_send_sockets[i].fd, buffer, (size_t) buffer_size,
         /* flags = */ 0,
@@ -829,7 +827,6 @@ static void *mc_receive_thread (void *arg) /* {{{ */
 {
   socket_entry_t *mc_receive_socket_entries;
   int status;
-  size_t i;
 
   mc_receive_socket_entries = NULL;
   status = create_sockets (&mc_receive_socket_entries, &mc_receive_sockets_num,
@@ -847,7 +844,7 @@ static void *mc_receive_thread (void *arg) /* {{{ */
   if (mc_receive_sockets == NULL)
   {
     ERROR ("gmond plugin: calloc failed.");
-    for (i = 0; i < mc_receive_sockets_num; i++)
+    for (size_t i = 0; i < mc_receive_sockets_num; i++)
       close (mc_receive_socket_entries[i].fd);
     free (mc_receive_socket_entries);
     mc_receive_socket_entries = NULL;
@@ -855,7 +852,7 @@ static void *mc_receive_thread (void *arg) /* {{{ */
     return ((void *) -1);
   }
 
-  for (i = 0; i < mc_receive_sockets_num; i++)
+  for (size_t i = 0; i < mc_receive_sockets_num; i++)
   {
     mc_receive_sockets[i].fd = mc_receive_socket_entries[i].fd;
     mc_receive_sockets[i].events = POLLIN | POLLPRI;
@@ -875,7 +872,7 @@ static void *mc_receive_thread (void *arg) /* {{{ */
       break;
     }
 
-    for (i = 0; i < mc_receive_sockets_num; i++)
+    for (size_t i = 0; i < mc_receive_sockets_num; i++)
     {
       if (mc_receive_sockets[i].revents != 0)
         mc_handle_socket (mc_receive_sockets + i);
@@ -963,7 +960,6 @@ static int gmond_config_set_string (oconfig_item_t *ci, char **str) /* {{{ */
 static int gmond_config_add_metric (oconfig_item_t *ci) /* {{{ */
 {
   metric_map_t *map;
-  int i;
 
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
@@ -995,7 +991,7 @@ static int gmond_config_add_metric (oconfig_item_t *ci) /* {{{ */
     return (-1);
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     if (strcasecmp ("Type", child->key) == 0)
@@ -1072,9 +1068,7 @@ static int gmond_config_set_address (oconfig_item_t *ci, /* {{{ */
 
 static int gmond_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     if (strcasecmp ("MCReceiveFrom", child->key) == 0)
@@ -1112,12 +1106,10 @@ static int gmond_init (void) /* {{{ */
 
 static int gmond_shutdown (void) /* {{{ */
 {
-  size_t i;
-
   mc_receive_thread_stop ();
 
   pthread_mutex_lock (&mc_send_sockets_lock);
-  for (i = 0; i < mc_send_sockets_num; i++)
+  for (size_t i = 0; i < mc_send_sockets_num; i++)
   {
     close (mc_send_sockets[i].fd);
     mc_send_sockets[i].fd = -1;
index 2b481f5..8213e97 100644 (file)
@@ -89,7 +89,7 @@ static int hddtemp_query_daemon (char *buffer, int buffer_size)
        const char *host;
        const char *port;
 
-       struct addrinfo *ai_list, *ai_ptr;
+       struct addrinfo *ai_list;
        int              ai_return;
 
        host = hddtemp_host;
@@ -119,7 +119,7 @@ static int hddtemp_query_daemon (char *buffer, int buffer_size)
        }
 
        fd = -1;
-       for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+       for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
        {
                /* create our socket descriptor */
                fd = socket (ai_ptr->ai_family, ai_ptr->ai_socktype,
@@ -250,7 +250,6 @@ static int hddtemp_read (void)
        char *saveptr;
        int num_fields;
        int num_disks;
-       int i;
 
        /* get data from daemon */
        if (hddtemp_query_daemon (buf, sizeof (buf)) < 0)
@@ -271,7 +270,7 @@ static int hddtemp_read (void)
 
        num_disks = num_fields / 4;
 
-       for (i = 0; i < num_disks; i++)
+       for (int i = 0; i < num_disks; i++)
        {
                char *name;
                double temperature;
index 3024313..a74699e 100644 (file)
@@ -192,7 +192,6 @@ static int interface_read (void)
 {
 #if HAVE_GETIFADDRS
        struct ifaddrs *if_list;
-       struct ifaddrs *if_ptr;
 
 /* Darwin/Mac OS X and possible other *BSDs */
 #if HAVE_STRUCT_IF_DATA
@@ -222,7 +221,7 @@ static int interface_read (void)
        if (getifaddrs (&if_list) != 0)
                return (-1);
 
-       for (if_ptr = if_list; if_ptr != NULL; if_ptr = if_ptr->ifa_next)
+       for (struct ifaddrs *if_ptr = if_list; if_ptr != NULL; if_ptr = if_ptr->ifa_next)
        {
                if (if_ptr->ifa_addr != NULL && if_ptr->ifa_addr->sa_family == AF_LINK) {
                        if_data = (struct IFA_DATA *) if_ptr->ifa_data;
@@ -306,7 +305,6 @@ static int interface_read (void)
 /* #endif KERNEL_LINUX */
 
 #elif HAVE_LIBKSTAT
-       int i;
        derive_t rx;
        derive_t tx;
        char iname[DATA_MAX_NAME_LEN];
@@ -314,7 +312,7 @@ static int interface_read (void)
        if (kc == NULL)
                return (-1);
 
-       for (i = 0; i < numif; i++)
+       for (int i = 0; i < numif; i++)
        {
                if (kstat_read (kc, ksp[i], NULL) == -1)
                        continue;
@@ -358,11 +356,11 @@ static int interface_read (void)
 
 #elif defined(HAVE_LIBSTATGRAB)
        sg_network_io_stats *ios;
-       int i, num;
+       int num;
 
        ios = sg_get_network_io_stats (&num);
 
-       for (i = 0; i < num; i++) {
+       for (int i = 0; i < num; i++) {
                if (!report_inactive && ios[i].rx == 0 && ios[i].tx == 0)
                        continue;
                if_submit (ios[i].interface_name, "if_octets", ios[i].rx, ios[i].tx);
@@ -371,7 +369,7 @@ static int interface_read (void)
 
 #elif defined(HAVE_PERFSTAT)
        perfstat_id_t id;
-       int i, ifs;
+       int ifs;
 
        if ((nif =  perfstat_netinterface(NULL, NULL, sizeof(perfstat_netinterface_t), 0)) < 0)
        {
@@ -397,7 +395,7 @@ static int interface_read (void)
                return (-1);
        }
 
-       for (i = 0; i < ifs; i++)
+       for (int i = 0; i < ifs; i++)
        {
                if (!report_inactive && ifstat[i].ipackets == 0 && ifstat[i].opackets == 0)
                        continue;
index 4951989..70c55dc 100644 (file)
--- a/src/ipc.c
+++ b/src/ipc.c
@@ -237,14 +237,14 @@ static int ipc_read_sem (void) /* {{{ */
   ipcinfo_sem_t *ipcinfo_sem;
   unsigned short sem_nsems=0;
   unsigned short sems=0;
-  int i,n;
+  int n;
 
   ipcinfo_sem = (ipcinfo_sem_t *)ipc_get_info(0,
     GET_IPCINFO_SEM_ALL, IPCINFO_SEM_VERSION, sizeof(ipcinfo_sem_t), &n);
   if (ipcinfo_sem == NULL)
     return -1;
 
-  for (i=0; i<n; i++) {
+  for (int i=0; i<n; i++) {
     sem_nsems += ipcinfo_sem[i].sem_nsems;
     sems++;
   }
@@ -262,14 +262,14 @@ static int ipc_read_shm (void) /* {{{ */
   ipcinfo_shm_t *pshm;
   unsigned int shm_segments=0;
   size64_t shm_bytes=0;
-  int i,n;
+  int n;
 
   ipcinfo_shm = (ipcinfo_shm_t *)ipc_get_info(0,
     GET_IPCINFO_SHM_ALL, IPCINFO_SHM_VERSION, sizeof(ipcinfo_shm_t), &n);
   if (ipcinfo_shm == NULL)
     return -1;
 
-  for (i=0, pshm=ipcinfo_shm; i<n; i++, pshm++) {
+  for (int i=0, pshm=ipcinfo_shm; i<n; i++, pshm++) {
     shm_segments++;
     shm_bytes += pshm->shm_segsz;
   }
@@ -288,14 +288,14 @@ static int ipc_read_msg (void) /* {{{ */
   uint32_t msg_used_space=0;
   uint32_t msg_alloc_queues=0;
   msgqnum32_t msg_qnum=0;
-  int i,n;
+  int n;
 
   ipcinfo_msg = (ipcinfo_msg_t *)ipc_get_info(0,
     GET_IPCINFO_MSG_ALL, IPCINFO_MSG_VERSION, sizeof(ipcinfo_msg_t), &n);
   if (ipcinfo_msg == NULL)
     return -1;
 
-  for (i=0; i<n; i++) {
+  for (int i=0; i<n; i++) {
     msg_alloc_queues++;
     msg_used_space += ipcinfo_msg[i].msg_cbytes;
     msg_qnum += ipcinfo_msg[i].msg_qnum;
index d61a8bc..ad62299 100644 (file)
@@ -432,11 +432,9 @@ static int sensor_list_remove (ipmi_sensor_t *sensor)
 
 static int sensor_list_read_all (void)
 {
-  c_ipmi_sensor_list_t *list_item;
-
   pthread_mutex_lock (&sensor_list_lock);
 
-  for (list_item = sensor_list;
+  for (c_ipmi_sensor_list_t *list_item = sensor_list;
       list_item != NULL;
       list_item = list_item->next)
   {
index 7ff59c1..e035a88 100644 (file)
@@ -420,12 +420,11 @@ static void submit_chain (iptc_handle_t *handle, ip_chain_t *chain)
 
 static int iptables_read (void)
 {
-    int i;
     int num_failures = 0;
     ip_chain_t *chain;
 
     /* Init the iptc handle structure and query the correct table */
-    for (i = 0; i < chain_num; i++)
+    for (int i = 0; i < chain_num; i++)
     {
         chain = chain_list[i];
 
@@ -489,9 +488,7 @@ static int iptables_read (void)
 
 static int iptables_shutdown (void)
 {
-    int i;
-
-    for (i = 0; i < chain_num; i++)
+    for (int i = 0; i < chain_num; i++)
     {
         if ((chain_list[i] != NULL) && (chain_list[i]->rule_type == RTYPE_COMMENT))
             sfree (chain_list[i]->rule.comment);
index 354c7d3..92690e8 100644 (file)
@@ -292,8 +292,6 @@ static void cipvs_submit_service (struct ip_vs_service_entry *se)
 
        char pi[DATA_MAX_NAME_LEN];
 
-       size_t i;
-
        if (0 != get_pi (se, pi, sizeof (pi)))
        {
                free (dests);
@@ -304,7 +302,7 @@ static void cipvs_submit_service (struct ip_vs_service_entry *se)
        cipvs_submit_if (pi, "if_packets", NULL, stats.inpkts, stats.outpkts);
        cipvs_submit_if (pi, "if_octets", NULL, stats.inbytes, stats.outbytes);
 
-       for (i = 0; i < dests->num_dests; ++i)
+       for (size_t i = 0; i < dests->num_dests; ++i)
                cipvs_submit_dest (pi, &dests->entrytable[i]);
 
        free (dests);
@@ -314,7 +312,6 @@ static void cipvs_submit_service (struct ip_vs_service_entry *se)
 static int cipvs_read (void)
 {
        struct ip_vs_get_services *services = NULL;
-       size_t i;
 
        if (sockfd < 0)
                return (-1);
@@ -322,7 +319,7 @@ static int cipvs_read (void)
        if (NULL == (services = ipvs_get_services ()))
                return -1;
 
-       for (i = 0; i < services->num_services; ++i)
+       for (size_t i = 0; i < services->num_services; ++i)
                cipvs_submit_service (&services->entrytable[i]);
 
        free (services);
index 5e46f57..47f4cd3 100644 (file)
@@ -507,7 +507,6 @@ static jobject ctoj_oconfig_item (JNIEnv *jvm_env, /* {{{ */
   jmethodID m_addchild;
   jobject o_key;
   jobject o_ocitem;
-  int i;
 
   c_ocitem = (*jvm_env)->FindClass (jvm_env, "org/collectd/api/OConfigItem");
   if (c_ocitem == NULL)
@@ -572,7 +571,7 @@ static jobject ctoj_oconfig_item (JNIEnv *jvm_env, /* {{{ */
   (*jvm_env)->DeleteLocalRef (jvm_env, o_key);
 
   /* Call OConfigItem.addValue for each value */
-  for (i = 0; i < ci->values_num; i++) /* {{{ */
+  for (int i = 0; i < ci->values_num; i++) /* {{{ */
   {
     jobject o_value;
 
@@ -590,7 +589,7 @@ static jobject ctoj_oconfig_item (JNIEnv *jvm_env, /* {{{ */
   } /* }}} for (i = 0; i < ci->values_num; i++) */
 
   /* Call OConfigItem.addChild for each child */
-  for (i = 0; i < ci->children_num; i++) /* {{{ */
+  for (int i = 0; i < ci->children_num; i++) /* {{{ */
   {
     jobject o_child;
 
@@ -618,7 +617,6 @@ static jobject ctoj_data_set (JNIEnv *jvm_env, const data_set_t *ds) /* {{{ */
   jmethodID m_add;
   jobject o_type;
   jobject o_dataset;
-  size_t i;
 
   /* Look up the org/collectd/api/DataSet class */
   c_dataset = (*jvm_env)->FindClass (jvm_env, "org/collectd/api/DataSet");
@@ -668,7 +666,7 @@ static jobject ctoj_data_set (JNIEnv *jvm_env, const data_set_t *ds) /* {{{ */
   /* Decrease reference counter on the java.lang.String object. */
   (*jvm_env)->DeleteLocalRef (jvm_env, o_type);
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     jobject o_datasource;
 
@@ -763,7 +761,6 @@ static jobject ctoj_value_list (JNIEnv *jvm_env, /* {{{ */
   jmethodID m_valuelist_constructor;
   jobject o_valuelist;
   int status;
-  size_t i;
 
   /* First, create a new ValueList instance..
    * Look up the class.. */
@@ -846,7 +843,7 @@ static jobject ctoj_value_list (JNIEnv *jvm_env, /* {{{ */
     return (NULL);
   }
 
-  for (i = 0; i < vl->values_len; i++)
+  for (size_t i = 0; i < vl->values_len; i++)
   {
     status = ctoj_value_list_add_value (jvm_env, vl->values[i], ds->ds[i].type,
         c_valuelist, o_valuelist);
@@ -1117,7 +1114,6 @@ static int jtoc_values_array (JNIEnv *jvm_env, /* {{{ */
 
   value_t *values;
   int values_num;
-  int i;
 
   values_num = ds->ds_num;
 
@@ -1177,7 +1173,7 @@ static int jtoc_values_array (JNIEnv *jvm_env, /* {{{ */
     BAIL_OUT (-1);
   }
 
-  for (i = 0; i < values_num; i++)
+  for (int i = 0; i < values_num; i++)
   {
     jobject o_number;
     int status;
@@ -1980,7 +1976,6 @@ static int cjni_create_jvm (void) /* {{{ */
   JavaVMOption vm_options[jvm_argc];
 
   int status;
-  size_t i;
 
   if (jvm != NULL)
     return (0);
@@ -1999,7 +1994,7 @@ static int cjni_create_jvm (void) /* {{{ */
   vm_args.options = vm_options;
   vm_args.nOptions = (jint) jvm_argc;
 
-  for (i = 0; i < jvm_argc; i++)
+  for (size_t i = 0; i < jvm_argc; i++)
   {
     DEBUG ("java plugin: cjni_create_jvm: jvm_argv[%zu] = %s",
         i, jvm_argv[i]);
@@ -2216,8 +2211,7 @@ static int cjni_config_load_plugin (oconfig_item_t *ci) /* {{{ */
   { /* Replace all dots ('.') with slashes ('/'). Dots are usually used
        thorough the Java community, but (Sun's) `FindClass' and friends need
        slashes. */
-    size_t i;
-    for (i = 0; class->name[i] != 0; i++)
+    for (size_t i = 0; class->name[i] != 0; i++)
       if (class->name[i] == '.')
         class->name[i] = '/';
   }
@@ -2275,7 +2269,6 @@ static int cjni_config_plugin_block (oconfig_item_t *ci) /* {{{ */
   cjni_callback_info_t *cbi;
   jobject o_ocitem;
   const char *name;
-  size_t i;
 
   jclass class;
   jmethodID method;
@@ -2290,7 +2283,7 @@ static int cjni_config_plugin_block (oconfig_item_t *ci) /* {{{ */
   name = ci->values[0].value.string;
 
   cbi = NULL;
-  for (i = 0; i < java_callbacks_num; i++)
+  for (size_t i = 0; i < java_callbacks_num; i++)
   {
     if (java_callbacks[i].type != CB_TYPE_CONFIG)
       continue;
@@ -2342,12 +2335,11 @@ static int cjni_config_perform (oconfig_item_t *ci) /* {{{ */
   int success;
   int errors;
   int status;
-  int i;
 
   success = 0;
   errors = 0;
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -2710,7 +2702,6 @@ static int cjni_match_target_create (const oconfig_item_t *ci, /* {{{ */
   jobject o_ci;
   jobject o_tmp;
   int type;
-  size_t i;
 
   cbi_ret = NULL;
   o_ci = NULL;
@@ -2755,7 +2746,7 @@ static int cjni_match_target_create (const oconfig_item_t *ci, /* {{{ */
 
   /* Lets see if we have a matching factory here.. */
   cbi_factory = NULL;
-  for (i = 0; i < java_callbacks_num; i++)
+  for (size_t i = 0; i < java_callbacks_num; i++)
   {
     if (java_callbacks[i].type != type)
       continue;
@@ -2937,9 +2928,8 @@ static int cjni_match_target_invoke (const data_set_t *ds, /* {{{ */
 static int cjni_init_plugins (JNIEnv *jvm_env) /* {{{ */
 {
   int status;
-  size_t i;
 
-  for (i = 0; i < java_callbacks_num; i++)
+  for (size_t i = 0; i < java_callbacks_num; i++)
   {
     if (java_callbacks[i].type != CB_TYPE_INIT)
       continue;
@@ -2964,9 +2954,8 @@ static int cjni_init_plugins (JNIEnv *jvm_env) /* {{{ */
 static int cjni_shutdown_plugins (JNIEnv *jvm_env) /* {{{ */
 {
   int status;
-  size_t i;
 
-  for (i = 0; i < java_callbacks_num; i++)
+  for (size_t i = 0; i < java_callbacks_num; i++)
   {
     if (java_callbacks[i].type != CB_TYPE_SHUTDOWN)
       continue;
@@ -2991,7 +2980,6 @@ static int cjni_shutdown (void) /* {{{ */
   JNIEnv *jvm_env;
   JavaVMAttachArgs args = { 0 };
   int status;
-  size_t i;
 
   if (jvm == NULL)
     return (0);
@@ -3011,7 +2999,7 @@ static int cjni_shutdown (void) /* {{{ */
   cjni_shutdown_plugins (jvm_env);
 
   /* Release all the global references to callback functions */
-  for (i = 0; i < java_callbacks_num; i++)
+  for (size_t i = 0; i < java_callbacks_num; i++)
   {
     if (java_callbacks[i].object != NULL)
     {
@@ -3024,7 +3012,7 @@ static int cjni_shutdown (void) /* {{{ */
   sfree (java_callbacks);
 
   /* Release all the global references to directly loaded classes. */
-  for (i = 0; i < java_classes_list_len; i++)
+  for (size_t i = 0; i < java_classes_list_len; i++)
   {
     if (java_classes_list[i].object != NULL)
     {
@@ -3045,7 +3033,7 @@ static int cjni_shutdown (void) /* {{{ */
   pthread_key_delete (jvm_env_key);
 
   /* Free the JVM argument list */
-  for (i = 0; i < jvm_argc; i++)
+  for (size_t i = 0; i < jvm_argc; i++)
     sfree (jvm_argv[i]);
   jvm_argc = 0;
   sfree (jvm_argv);
index cd333cc..a15e0aa 100644 (file)
@@ -36,6 +36,7 @@
 
 #include <stdlib.h>
 #include <stdio.h>
+#include <stdarg.h>
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/socket.h>
   (c)->errbuf[sizeof ((c)->errbuf) - 1] = 0; \
 } while (0)
 
-#if COLLECT_DEBUG
-# define LCC_DEBUG(...) printf (__VA_ARGS__)
-#else
-# define LCC_DEBUG(...) /**/
-#endif
-
 /*
  * Types
  */
@@ -118,6 +113,22 @@ typedef struct lcc_response_s lcc_response_t;
 /*
  * Private functions
  */
+static int lcc_tracef(char const *format, ...)
+{
+  va_list ap;
+  int status;
+
+  char const *trace = getenv (LCC_TRACE_ENV);
+  if (!trace || (strcmp ("", trace) == 0) || (strcmp ("0", trace) == 0))
+    return 0;
+
+  va_start (ap, format);
+  status = vprintf (format, ap);
+  va_end (ap);
+
+  return status;
+}
+
 /* Even though Posix requires "strerror_r" to return an "int",
  * some systems (e.g. the GNU libc) return a "char *" _and_
  * ignore the second argument ... -tokkee */
@@ -235,12 +246,10 @@ static void lcc_chomp (char *str) /* {{{ */
 
 static void lcc_response_free (lcc_response_t *res) /* {{{ */
 {
-  size_t i;
-
   if (res == NULL)
     return;
 
-  for (i = 0; i < res->lines_num; i++)
+  for (size_t i = 0; i < res->lines_num; i++)
     free (res->lines[i]);
   free (res->lines);
   res->lines = NULL;
@@ -250,7 +259,7 @@ static int lcc_send (lcc_connection_t *c, const char *command) /* {{{ */
 {
   int status;
 
-  LCC_DEBUG ("send:    --> %s\n", command);
+  lcc_tracef ("send:    --> %s\n", command);
 
   status = fprintf (c->fh, "%s\r\n", command);
   if (status < 0)
@@ -279,7 +288,7 @@ static int lcc_receive (lcc_connection_t *c, /* {{{ */
     return (-1);
   }
   lcc_chomp (buffer);
-  LCC_DEBUG ("receive: <-- %s\n", buffer);
+  lcc_tracef ("receive: <-- %s\n", buffer);
 
   /* Convert the leading status to an integer and make `ptr' to point to the
    * beginning of the message. */
@@ -327,7 +336,7 @@ static int lcc_receive (lcc_connection_t *c, /* {{{ */
       break;
     }
     lcc_chomp (buffer);
-    LCC_DEBUG ("receive: <-- %s\n", buffer);
+    lcc_tracef ("receive: <-- %s\n", buffer);
 
     res.lines[i] = strdup (buffer);
     if (res.lines[i] == NULL)
@@ -421,7 +430,6 @@ static int lcc_open_netsocket (lcc_connection_t *c, /* {{{ */
     const char *addr_orig)
 {
   struct addrinfo *ai_res;
-  struct addrinfo *ai_ptr;
   char addr_copy[NI_MAXHOST];
   char *addr;
   char *port;
@@ -486,7 +494,7 @@ static int lcc_open_netsocket (lcc_connection_t *c, /* {{{ */
     return (-1);
   }
 
-  for (ai_ptr = ai_res; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+  for (struct addrinfo *ai_ptr = ai_res; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
   {
     fd = socket (ai_ptr->ai_family, ai_ptr->ai_socktype, ai_ptr->ai_protocol);
     if (fd < 0)
@@ -741,7 +749,6 @@ int lcc_putval (lcc_connection_t *c, const lcc_value_list_t *vl) /* {{{ */
   char command[1024] = "";
   lcc_response_t res;
   int status;
-  size_t i;
 
   if ((c == NULL) || (vl == NULL) || (vl->values_len < 1)
       || (vl->values == NULL) || (vl->values_types == NULL))
@@ -766,7 +773,7 @@ int lcc_putval (lcc_connection_t *c, const lcc_value_list_t *vl) /* {{{ */
   else
     SSTRCAT (command, " N");
 
-  for (i = 0; i < vl->values_len; i++)
+  for (size_t i = 0; i < vl->values_len; i++)
   {
     if (vl->values_types[i] == LCC_TYPE_COUNTER)
       SSTRCATF (command, ":%"PRIu64, vl->values[i].counter);
@@ -858,7 +865,6 @@ int lcc_listval (lcc_connection_t *c, /* {{{ */
     lcc_identifier_t **ret_ident, size_t *ret_ident_num)
 {
   lcc_response_t res;
-  size_t i;
   int status;
 
   lcc_identifier_t *ident;
@@ -893,7 +899,7 @@ int lcc_listval (lcc_connection_t *c, /* {{{ */
     return (-1);
   }
 
-  for (i = 0; i < res.lines_num; i++)
+  for (size_t i = 0; i < res.lines_num; i++)
   {
     char *time_str;
     char *ident_str;
index ac26b84..47462a6 100644 (file)
 
 #include "lcc_features.h"
 
+/* COLLECTD_TRACE is the environment variable used to control trace output. When
+ * set to something non-zero, all lines sent to / received from the daemon are
+ * printed to STDOUT. */
+#ifndef LCC_TRACE_ENV
+# define LCC_TRACE_ENV "COLLECTD_TRACE"
+#endif
+
 /*
  * Includes (for data types)
  */
index ee5af3b..16293ca 100644 (file)
@@ -120,7 +120,6 @@ static void int_server_destroy (lcc_server_t *srv) /* {{{ */
 static int server_open_socket (lcc_server_t *srv) /* {{{ */
 {
   struct addrinfo *ai_list;
-  struct addrinfo *ai_ptr;
   int status;
 
   if (srv == NULL)
@@ -140,7 +139,7 @@ static int server_open_socket (lcc_server_t *srv) /* {{{ */
     return (status);
   assert (ai_list != NULL);
 
-  for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+  for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
   {
     srv->fd = socket (ai_ptr->ai_family, ai_ptr->ai_socktype, ai_ptr->ai_protocol);
     if (srv->fd < 0)
@@ -470,12 +469,10 @@ int lcc_server_set_security_level (lcc_server_t *srv, /* {{{ */
 int lcc_network_values_send (lcc_network_t *net, /* {{{ */
     const lcc_value_list_t *vl)
 {
-  lcc_server_t *srv;
-
   if ((net == NULL) || (vl == NULL))
     return (EINVAL);
 
-  for (srv = net->servers; srv != NULL; srv = srv->next)
+  for (lcc_server_t *srv = net->servers; srv != NULL; srv = srv->next)
     server_value_add (srv, vl);
 
   return (0);
index 9a9c89a..2c6277c 100644 (file)
@@ -274,7 +274,6 @@ static int nb_add_values (char **ret_buffer, /* {{{ */
   value_t       pkg_values[vl->values_len];
 
   size_t offset;
-  size_t i;
 
   packet_len = sizeof (pkg_type) + sizeof (pkg_length)
     + sizeof (pkg_num_values)
@@ -288,7 +287,7 @@ static int nb_add_values (char **ret_buffer, /* {{{ */
   pkg_length = htons ((uint16_t) packet_len);
   pkg_num_values = htons ((uint16_t) vl->values_len);
 
-  for (i = 0; i < vl->values_len; i++)
+  for (size_t i = 0; i < vl->values_len; i++)
   {
     pkg_values_types[i] = (uint8_t) vl->values_types[i];
     switch (vl->values_types[i])
index cfe9c5a..319aae8 100644 (file)
@@ -126,8 +126,6 @@ oconfig_item_t *oconfig_clone (const oconfig_item_t *ci_orig)
 
   if (ci_orig->values_num > 0) /* {{{ */
   {
-    int i;
-
     ci_copy->values = (oconfig_value_t *) calloc ((size_t) ci_orig->values_num,
         sizeof (*ci_copy->values));
     if (ci_copy->values == NULL)
@@ -139,7 +137,7 @@ oconfig_item_t *oconfig_clone (const oconfig_item_t *ci_orig)
     }
     ci_copy->values_num = ci_orig->values_num;
 
-    for (i = 0; i < ci_copy->values_num; i++)
+    for (int i = 0; i < ci_copy->values_num; i++)
     {
        ci_copy->values[i].type = ci_orig->values[i].type;
        if (ci_copy->values[i].type == OCONFIG_TYPE_STRING)
@@ -161,8 +159,6 @@ oconfig_item_t *oconfig_clone (const oconfig_item_t *ci_orig)
 
   if (ci_orig->children_num > 0) /* {{{ */
   {
-    int i;
-
     ci_copy->children = (oconfig_item_t *) calloc ((size_t) ci_orig->children_num,
         sizeof (*ci_copy->children));
     if (ci_copy->children == NULL)
@@ -173,7 +169,7 @@ oconfig_item_t *oconfig_clone (const oconfig_item_t *ci_orig)
     }
     ci_copy->children_num = ci_orig->children_num;
 
-    for (i = 0; i < ci_copy->children_num; i++)
+    for (int i = 0; i < ci_copy->children_num; i++)
     {
       oconfig_item_t *child;
 
@@ -194,15 +190,13 @@ oconfig_item_t *oconfig_clone (const oconfig_item_t *ci_orig)
 
 static void oconfig_free_all (oconfig_item_t *ci)
 {
-  int i;
-
   if (ci == NULL)
     return;
 
   if (ci->key != NULL)
     free (ci->key);
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
     if ((ci->values[i].type == OCONFIG_TYPE_STRING)
         && (NULL != ci->values[i].value.string))
       free (ci->values[i].value.string);
@@ -210,7 +204,7 @@ static void oconfig_free_all (oconfig_item_t *ci)
   if (ci->values != NULL)
     free (ci->values);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
     oconfig_free_all (ci->children + i);
 
   if (ci->children != NULL)
index 1eb7aec..4a550b3 100644 (file)
@@ -239,7 +239,6 @@ static char *unquote (const char *orig)
 {
        char *ret = strdup (orig);
        int len;
-       int i;
 
        if (ret == NULL)
                return (NULL);
@@ -253,7 +252,7 @@ static char *unquote (const char *orig)
        memmove (ret, ret + 1, len);
        ret[len] = '\0';
 
-       for (i = 0; i < len; i++)
+       for (int i = 0; i < len; i++)
        {
                if (ret[i] == '\\')
                {
index 19ece7f..728fcd8 100644 (file)
@@ -395,8 +395,7 @@ static inline void watchlist_remove (uint32_t *wl, int item)
 
 static inline void watchlist_set (uint32_t *wl, uint32_t val)
 {
-       int i;
-       for (i = 0; i < WL_LEN; i++)
+       for (int i = 0; i < WL_LEN; i++)
                wl[i] = val;
 }
 
@@ -404,9 +403,8 @@ static inline void watchlist_set (uint32_t *wl, uint32_t val)
 static int watchitem_find (const char *name)
 {
        int max = STATIC_ARRAY_SIZE (specs);
-       int i;
 
-       for (i = 0; i < max; i++)
+       for (int i = 0; i < max; i++)
                if (strcasecmp (name, specs[i].name) == 0)
                        return i;
 
@@ -421,15 +419,14 @@ static int watchitem_find (const char *name)
 static int madwifi_real_init (void)
 {
        size_t max = STATIC_ARRAY_SIZE (specs);
-       size_t i;
 
-       for (i = 0; i < STATIC_ARRAY_SIZE (bounds); i++)
+       for (size_t i = 0; i < STATIC_ARRAY_SIZE (bounds); i++)
                bounds[i] = 0;
 
        watchlist_set(watch_items, 0);
        watchlist_set(misc_items, 0);
 
-       for (i = 0; i < max; i++)
+       for (size_t i = 0; i < max; i++)
        {
                bounds[specs[i].flags & SRC_MASK] = i;
 
@@ -440,7 +437,7 @@ static int madwifi_real_init (void)
                        misc_items[i / 32] |= FLAG (i);
        }
 
-       for (i = 0; i < STATIC_ARRAY_SIZE (bounds); i++)
+       for (size_t i = 0; i < STATIC_ARRAY_SIZE (bounds); i++)
                bounds[i]++;
 
        return (0);
@@ -590,9 +587,8 @@ static void submit_antx (const char *dev, const char *name,
                u_int32_t *vals, int vals_num)
 {
        char ti2[16];
-       int i;
 
-       for (i = 0; i < vals_num; i++)
+       for (int i = 0; i < vals_num; i++)
        {
                if (vals[i] == 0)
                        continue;
@@ -615,12 +611,11 @@ process_stat_struct (int which, const void *ptr, const char *dev, const char *ma
                         const char *type_name, const char *misc_name)
 {
        uint32_t misc = 0;
-       int i;
 
        assert (which >= 1);
        assert (((size_t) which) < STATIC_ARRAY_SIZE (bounds));
 
-       for (i = bounds[which - 1]; i < bounds[which]; i++)
+       for (int i = bounds[which - 1]; i < bounds[which]; i++)
        {
                uint32_t val = *(uint32_t *)(((char *) ptr) + specs[i].offset) ;
 
index f4b94ee..80a29ac 100644 (file)
@@ -56,9 +56,8 @@ static int mec_match (__attribute__((unused)) const data_set_t *ds, /* {{{ */
 {
   int num_counters = 0;
   int num_empty = 0;
-  size_t i;
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     if ((ds->ds[i].type != DS_TYPE_DERIVE)
         && (ds->ds[i].type != DS_TYPE_COUNTER))
index 994022e..c4983c2 100644 (file)
@@ -99,7 +99,6 @@ static int mh_config_match (const oconfig_item_t *ci, /* {{{ */
 static int mh_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
 {
   mh_match_t *m;
-  int i;
 
   m = calloc (1, sizeof (*m));
   if (m == NULL)
@@ -108,7 +107,7 @@ static int mh_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
     return (-ENOMEM);
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -150,8 +149,6 @@ static int mh_match (const data_set_t __attribute__((unused)) *ds, /* {{{ */
 {
   mh_match_t *m;
   uint32_t hash_val;
-  const char *host_ptr;
-  size_t i;
 
   if ((user_data == NULL) || (*user_data == NULL))
     return (-1);
@@ -160,14 +157,14 @@ static int mh_match (const data_set_t __attribute__((unused)) *ds, /* {{{ */
 
   hash_val = 0;
 
-  for (host_ptr = vl->host; *host_ptr != 0; host_ptr++)
+  for (const char *host_ptr = vl->host; *host_ptr != 0; host_ptr++)
   {
     /* 2184401929 is some appropriately sized prime number. */
     hash_val = (hash_val * UINT32_C (2184401929)) + ((uint32_t) *host_ptr);
   }
   DEBUG ("hashed match: host = %s; hash_val = %"PRIu32";", vl->host, hash_val);
 
-  for (i = 0; i < m->matches_num; i++)
+  for (size_t i = 0; i < m->matches_num; i++)
     if ((hash_val % m->matches[i].total) == m->matches[i].match)
       return (FC_MATCH_MATCHES);
 
index f7d5e3e..cd63016 100644 (file)
@@ -100,12 +100,10 @@ static void mr_free_match (mr_match_t *m) /* {{{ */
 static int mr_match_regexen (mr_regex_t *re_head, /* {{{ */
                const char *string)
 {
-       mr_regex_t *re;
-
        if (re_head == NULL)
                return (FC_MATCH_MATCHES);
 
-       for (re = re_head; re != NULL; re = re->next)
+       for (mr_regex_t *re = re_head; re != NULL; re = re->next)
        {
                int status;
 
@@ -192,7 +190,6 @@ static int mr_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
 {
        mr_match_t *m;
        int status;
-       int i;
 
        m = calloc (1, sizeof (*m));
        if (m == NULL)
@@ -204,7 +201,7 @@ static int mr_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
        m->invert = 0;
 
        status = 0;
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
index 9e08021..00fdd0c 100644 (file)
@@ -50,7 +50,6 @@ static int mt_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
 {
   mt_match_t *m;
   int status;
-  int i;
 
   m = calloc (1, sizeof (*m));
   if (m == NULL)
@@ -63,7 +62,7 @@ static int mt_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
   m->past = 0;
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 604f0d6..54ddba2 100644 (file)
@@ -59,14 +59,12 @@ struct mv_match_s
  */
 static void mv_free_match (mv_match_t *m) /* {{{ */
 {
-  size_t i;
-
   if (m == NULL)
     return;
 
   if (m->data_sources != NULL)
   {
-    for (i = 0; i < m->data_sources_num; ++i)
+    for (size_t i = 0; i < m->data_sources_num; ++i)
       free(m->data_sources[i]);
     free(m->data_sources);
   }
@@ -104,7 +102,6 @@ static int mv_config_add_data_source (mv_match_t *m, /* {{{ */
 {
   size_t new_data_sources_num;
   char **temp;
-  int i;
 
   /* Check number of arbuments. */
   if (ci->values_num < 1)
@@ -115,7 +112,7 @@ static int mv_config_add_data_source (mv_match_t *m, /* {{{ */
   }
 
   /* Check type of arguments */
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
     if (ci->values[i].type == OCONFIG_TYPE_STRING)
       continue;
@@ -140,14 +137,12 @@ static int mv_config_add_data_source (mv_match_t *m, /* {{{ */
   m->data_sources = temp;
 
   /* Copy the strings, allocating memory as needed. */
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
-    size_t j;
-
     /* If we get here, there better be memory for us to write to. */
     assert (m->data_sources_num < new_data_sources_num);
 
-    j = m->data_sources_num;
+    size_t j = m->data_sources_num;
     m->data_sources[j] = sstrdup (ci->values[i].value.string);
     if (m->data_sources[j] == NULL)
     {
@@ -199,7 +194,6 @@ static int mv_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
 {
   mv_match_t *m;
   int status;
-  int i;
 
   m = calloc (1, sizeof (*m));
   if (m == NULL)
@@ -216,7 +210,7 @@ static int mv_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
   m->data_sources_num = 0;
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -277,7 +271,6 @@ static int mv_match (const data_set_t *ds, const value_list_t *vl, /* {{{ */
   mv_match_t *m;
   gauge_t *values;
   int status;
-  size_t i;
 
   if ((user_data == NULL) || (*user_data == NULL))
     return (-1);
@@ -294,7 +287,7 @@ static int mv_match (const data_set_t *ds, const value_list_t *vl, /* {{{ */
 
   status = FC_MATCH_NO_MATCH;
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     int value_matches = 0;
 
index 2e26aa1..184bb99 100644 (file)
@@ -85,7 +85,7 @@ static int mbmon_query_daemon (char *buffer, int buffer_size)
        const char *host;
        const char *port;
 
-       struct addrinfo *ai_list, *ai_ptr;
+       struct addrinfo *ai_list;
        int              ai_return;
 
        host = mbmon_host;
@@ -115,7 +115,7 @@ static int mbmon_query_daemon (char *buffer, int buffer_size)
        }
 
        fd = -1;
-       for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+       for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
        {
                /* create our socket descriptor */
                if ((fd = socket (ai_ptr->ai_family, ai_ptr->ai_socktype, ai_ptr->ai_protocol)) < 0)
@@ -237,9 +237,7 @@ static void mbmon_submit (const char *type, const char *type_instance,
 /* Trim trailing whitespace from a string. */
 static void trim_spaces (char *s)
 {
-       size_t l;
-
-       for (l = strlen (s) - 1; (l > 0) && isspace ((int) s[l]); l--)
+       for (size_t l = strlen (s) - 1; (l > 0) && isspace ((int) s[l]); l--)
                s[l] = '\0';
 }
 
index 55e9b85..1b6ab67 100644 (file)
@@ -200,7 +200,6 @@ static int cmc_config_add_match (web_page_t *page, /* {{{ */
 {
   web_match_t *match;
   int status;
-  int i;
 
   if (ci->values_num != 0)
   {
@@ -215,7 +214,7 @@ static int cmc_config_add_match (web_page_t *page, /* {{{ */
   }
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -297,7 +296,6 @@ static int cmc_config_add_page (oconfig_item_t *ci) /* {{{ */
 {
   web_page_t *page;
   int status;
-  int i;
 
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
@@ -324,7 +322,7 @@ static int cmc_config_add_page (oconfig_item_t *ci) /* {{{ */
 
   /* Process all children */
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -401,12 +399,11 @@ static int cmc_config (oconfig_item_t *ci) /* {{{ */
   int success;
   int errors;
   int status;
-  int i;
 
   success = 0;
   errors = 0;
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -465,7 +462,6 @@ static void cmc_submit (const web_page_t *wp, const web_match_t *wm, /* {{{ */
 
 static int cmc_read_page (web_page_t *wp) /* {{{ */
 {
-  web_match_t *wm;
   memcached_return rc;
   size_t string_length;
   uint32_t flags;
@@ -483,7 +479,7 @@ static int cmc_read_page (web_page_t *wp) /* {{{ */
     return (-1);
   }
 
-  for (wm = wp->matches; wm != NULL; wm = wm->next)
+  for (web_match_t *wm = wp->matches; wm != NULL; wm = wm->next)
   {
     cu_match_value_t *mv;
 
@@ -512,9 +508,7 @@ static int cmc_read_page (web_page_t *wp) /* {{{ */
 
 static int cmc_read (void) /* {{{ */
 {
-  web_page_t *wp;
-
-  for (wp = pages_g; wp != NULL; wp = wp->next)
+  for (web_page_t *wp = pages_g; wp != NULL; wp = wp->next)
     cmc_read_page (wp);
 
   return (0);
index 02f4203..42882ae 100644 (file)
@@ -102,7 +102,7 @@ static int memcached_connect_inet (memcached_t *st)
   const char *host;
   const char *port;
 
-  struct addrinfo *ai_list, *ai_ptr;
+  struct addrinfo *ai_list;
   int status;
   int fd = -1;
 
@@ -128,7 +128,7 @@ static int memcached_connect_inet (memcached_t *st)
     return (-1);
   }
 
-  for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+  for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
   {
     /* create our socket descriptor */
     fd = socket (ai_ptr->ai_family, ai_ptr->ai_socktype, ai_ptr->ai_protocol);
@@ -578,7 +578,6 @@ static int memcached_add_read_callback (memcached_t *st)
 static int config_add_instance(oconfig_item_t *ci)
 {
   memcached_t *st;
-  int i;
   int status = 0;
 
   /* Disable automatic generation of default instance in the init callback. */
@@ -607,7 +606,7 @@ static int config_add_instance(oconfig_item_t *ci)
   }
   assert (st->name != NULL);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -644,9 +643,8 @@ static int memcached_config (oconfig_item_t *ci)
 {
   int status = 0;
   _Bool have_instance_block = 0;
-  int i;
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 6204d35..16b8e09 100644 (file)
@@ -99,9 +99,7 @@ static _Bool values_percentage = 0;
 
 static int memory_config (oconfig_item_t *ci) /* {{{ */
 {
-       int i;
-
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
                if (strcasecmp ("ValuesAbsolute", child->key) == 0)
@@ -251,9 +249,7 @@ static int memory_read_internal (value_list_t *vl)
        };
        double sysctl_vals[8];
 
-       int    i;
-
-       for (i = 0; sysctl_keys[i] != NULL; i++)
+       for (int i = 0; sysctl_keys[i] != NULL; i++)
        {
                int value;
                size_t value_len = sizeof (value);
@@ -271,7 +267,7 @@ static int memory_read_internal (value_list_t *vl)
        } /* for (sysctl_keys) */
 
        /* multiply all all page counts with the pagesize */
-       for (i = 1; sysctl_keys[i] != NULL; i++)
+       for (int i = 1; sysctl_keys[i] != NULL; i++)
                if (!isnan (sysctl_vals[i]))
                        sysctl_vals[i] *= sysctl_vals[0];
 
index 8d7871b..3e31889 100644 (file)
--- a/src/mic.c
+++ b/src/mic.c
@@ -214,9 +214,8 @@ static void mic_submit_temp(int micnumber, const char *type, gauge_t val)
 static int mic_read_temps(int mic)
 {
        size_t num_therms = STATIC_ARRAY_SIZE(therm_ids);
-       size_t j;
 
-       for (j = 0; j < num_therms; j++) {
+       for (size_t j = 0; j < num_therms; j++) {
                U32 status;
                U32 temp_buffer;
                U32 buffer_size = (U32)sizeof(temp_buffer);
@@ -287,8 +286,7 @@ static int mic_read_cpu(int mic)
        }
 
        if (show_cpu_cores) {
-               int j;
-               for (j = 0; j < core_util.core; j++) {
+               for (int j = 0; j < core_util.core; j++) {
                        mic_submit_cpu(mic, "user", j, core_jiffs[j].user);
                        mic_submit_cpu(mic, "sys", j, core_jiffs[j].sys);
                        mic_submit_cpu(mic, "nice", j, core_jiffs[j].nice);
@@ -357,12 +355,11 @@ static int mic_read_power(int mic)
 
 static int mic_read (void)
 {
-       int i;
        U32 ret;
        int error;
 
        error=0;
-       for (i=0;i<num_mics;i++) {
+       for (int i=0;i<num_mics;i++) {
                ret = MicInitAdapter(&mic_handle,&mics[i]);
                if (ret != MIC_ACCESS_API_SUCCESS) {
                        ERROR("mic plugin: Problem initializing MicAdapter: %s",
index 2f685e6..db7d033 100644 (file)
@@ -162,12 +162,10 @@ static mb_data_t *data_definitions = NULL;
 static mb_data_t *data_get_by_name (mb_data_t *src, /* {{{ */
     const char *name)
 {
-  mb_data_t *ptr;
-
   if (name == NULL)
     return (NULL);
 
-  for (ptr = src; ptr != NULL; ptr = ptr->next)
+  for (mb_data_t *ptr = src; ptr != NULL; ptr = ptr->next)
     if (strcasecmp (ptr->name, name) == 0)
       return (ptr);
 
@@ -622,7 +620,6 @@ static int mb_read_data (mb_host_t *host, mb_slave_t *slave, /* {{{ */
 
 static int mb_read_slave (mb_host_t *host, mb_slave_t *slave) /* {{{ */
 {
-  mb_data_t *data;
   int success;
   int status;
 
@@ -630,7 +627,7 @@ static int mb_read_slave (mb_host_t *host, mb_slave_t *slave) /* {{{ */
     return (EINVAL);
 
   success = 0;
-  for (data = slave->collect; data != NULL; data = data->next)
+  for (mb_data_t *data = slave->collect; data != NULL; data = data->next)
   {
     status = mb_read_data (host, slave, data);
     if (status == 0)
@@ -646,7 +643,6 @@ static int mb_read_slave (mb_host_t *host, mb_slave_t *slave) /* {{{ */
 static int mb_read (user_data_t *user_data) /* {{{ */
 {
   mb_host_t *host;
-  size_t i;
   int success;
   int status;
 
@@ -656,7 +652,7 @@ static int mb_read (user_data_t *user_data) /* {{{ */
   host = user_data->data;
 
   success = 0;
-  for (i = 0; i < host->slaves_num; i++)
+  for (size_t i = 0; i < host->slaves_num; i++)
   {
     status = mb_read_slave (host, host->slaves + i);
     if (status == 0)
@@ -695,12 +691,10 @@ static void data_free_all (mb_data_t *data) /* {{{ */
 
 static void slaves_free_all (mb_slave_t *slaves, size_t slaves_num) /* {{{ */
 {
-  size_t i;
-
   if (slaves == NULL)
     return;
 
-  for (i = 0; i < slaves_num; i++)
+  for (size_t i = 0; i < slaves_num; i++)
     data_free_all (slaves[i].collect);
   sfree (slaves);
 } /* }}} void slaves_free_all */
@@ -722,7 +716,6 @@ static int mb_config_add_data (oconfig_item_t *ci) /* {{{ */
 {
   mb_data_t data = { 0 };
   int status;
-  int i;
 
   data.name = NULL;
   data.register_type = REG_TYPE_UINT16;
@@ -732,7 +725,7 @@ static int mb_config_add_data (oconfig_item_t *ci) /* {{{ */
   if (status != 0)
     return (status);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -818,7 +811,6 @@ static int mb_config_set_host_address (mb_host_t *host, /* {{{ */
     const char *address)
 {
   struct addrinfo *ai_list;
-  struct addrinfo *ai_ptr;
   int status;
 
   if ((host == NULL) || (address == NULL))
@@ -842,7 +834,7 @@ static int mb_config_set_host_address (mb_host_t *host, /* {{{ */
     return (status);
   }
 
-  for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+  for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
   {
     status = getnameinfo (ai_ptr->ai_addr, ai_ptr->ai_addrlen,
         host->node, sizeof (host->node),
@@ -869,7 +861,6 @@ static int mb_config_add_slave (mb_host_t *host, oconfig_item_t *ci) /* {{{ */
 {
   mb_slave_t *slave;
   int status;
-  int i;
 
   if ((host == NULL) || (ci == NULL))
     return (EINVAL);
@@ -886,7 +877,7 @@ static int mb_config_add_slave (mb_host_t *host, oconfig_item_t *ci) /* {{{ */
   if (status != 0)
     return (status);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -929,7 +920,6 @@ static int mb_config_add_host (oconfig_item_t *ci) /* {{{ */
 {
   mb_host_t *host;
   int status;
-  int i;
 
   host = calloc (1, sizeof (*host));
   if (host == NULL)
@@ -948,7 +938,7 @@ static int mb_config_add_host (oconfig_item_t *ci) /* {{{ */
     return (EINVAL);
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     status = 0;
@@ -1037,12 +1027,10 @@ static int mb_config_add_host (oconfig_item_t *ci) /* {{{ */
 
 static int mb_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
   if (ci == NULL)
     return (EINVAL);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 5667ff4..a7a0b86 100644 (file)
@@ -145,11 +145,9 @@ static void mqtt_free (mqtt_client_conf_t *conf)
 
 static char *strip_prefix (char *topic)
 {
-    size_t num;
-    size_t i;
+    size_t num = 0;
 
-    num = 0;
-    for (i = 0; topic[i] != 0; i++)
+    for (size_t i = 0; topic[i] != 0; i++)
         if (topic[i] == '/')
             num++;
 
@@ -552,7 +550,6 @@ static int mqtt_config_publisher (oconfig_item_t *ci)
     char cb_name[1024];
     user_data_t user_data = { 0 };
     int status;
-    int i;
 
     conf = calloc (1, sizeof (*conf));
     if (conf == NULL)
@@ -586,7 +583,7 @@ static int mqtt_config_publisher (oconfig_item_t *ci)
 
     C_COMPLAIN_INIT (&conf->complaint_cantpublish);
 
-    for (i = 0; i < ci->children_num; i++)
+    for (int i = 0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
         if (strcasecmp ("Host", child->key) == 0)
@@ -656,7 +653,6 @@ static int mqtt_config_subscriber (oconfig_item_t *ci)
     mqtt_client_conf_t **tmp;
     mqtt_client_conf_t *conf;
     int status;
-    int i;
 
     conf = calloc (1, sizeof (*conf));
     if (conf == NULL)
@@ -690,7 +686,7 @@ static int mqtt_config_subscriber (oconfig_item_t *ci)
 
     C_COMPLAIN_INIT (&conf->complaint_cantpublish);
 
-    for (i = 0; i < ci->children_num; i++)
+    for (int i = 0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
         if (strcasecmp ("Host", child->key) == 0)
@@ -752,9 +748,7 @@ static int mqtt_config_subscriber (oconfig_item_t *ci)
  */
 static int mqtt_config (oconfig_item_t *ci)
 {
-    int i;
-
-    for (i = 0; i < ci->children_num; i++)
+    for (int i = 0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
 
@@ -771,11 +765,9 @@ static int mqtt_config (oconfig_item_t *ci)
 
 static int mqtt_init (void)
 {
-    size_t i;
-
     mosquitto_lib_init ();
 
-    for (i = 0; i < subscribers_num; i++)
+    for (size_t i = 0; i < subscribers_num; i++)
     {
         int status;
 
index 491e641..02fe1ad 100644 (file)
@@ -149,10 +149,9 @@ static int multimeter_read_value(double *value)
 
 static int multimeter_init (void)
 {
-       int i;
        char device[] = "/dev/ttyS ";
 
-       for (i = 0; i < 10; i++)
+       for (int i = 0; i < 10; i++)
        {
                device[strlen(device)-1] = i + '0';
 
index 54236da..177563c 100644 (file)
@@ -54,6 +54,7 @@ struct mysql_database_s /* {{{ */
        _Bool master_stats;
        _Bool slave_stats;
        _Bool innodb_stats;
+       _Bool wsrep_stats;
 
        _Bool slave_notif;
        _Bool slave_io_running;
@@ -104,7 +105,6 @@ static int mysql_config_database (oconfig_item_t *ci) /* {{{ */
 {
        mysql_database_t *db;
        int status = 0;
-       int i;
 
        if ((ci->values_num != 1)
            || (ci->values[0].type != OCONFIG_TYPE_STRING))
@@ -144,7 +144,7 @@ static int mysql_config_database (oconfig_item_t *ci) /* {{{ */
        assert (db->instance != NULL);
 
        /* Fill the `mysql_database_t' structure.. */
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -179,6 +179,8 @@ static int mysql_config_database (oconfig_item_t *ci) /* {{{ */
                        status = cf_util_get_boolean (child, &db->slave_notif);
                else if (strcasecmp ("InnodbStats", child->key) == 0)
                        status = cf_util_get_boolean (child, &db->innodb_stats);
+               else if (strcasecmp ("WsrepStats", child->key) == 0)
+                       status = cf_util_get_boolean (child, &db->wsrep_stats);
                else
                {
                        WARNING ("mysql plugin: Option `%s' not allowed here.", child->key);
@@ -222,13 +224,11 @@ static int mysql_config_database (oconfig_item_t *ci) /* {{{ */
 
 static int mysql_config (oconfig_item_t *ci) /* {{{ */
 {
-       int i;
-
        if (ci == NULL)
                return (EINVAL);
 
        /* Fill the `mysql_database_t' structure.. */
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -685,6 +685,93 @@ static int mysql_read_innodb_stats (mysql_database_t *db, MYSQL *con)
        return (0);
 }
 
+static int mysql_read_wsrep_stats (mysql_database_t *db, MYSQL *con)
+{
+       MYSQL_RES *res;
+       MYSQL_ROW  row;
+
+       const char *query;
+       struct {
+               const char *key;
+               const char *type;
+               int ds_type;
+       } metrics[] = {
+
+               { "wsrep_apply_oooe",                "operations",   DS_TYPE_DERIVE },
+               { "wsrep_apply_oool",                "operations",   DS_TYPE_DERIVE },
+               { "wsrep_causal_reads",              "operations",   DS_TYPE_DERIVE },
+               { "wsrep_commit_oooe",               "operations",   DS_TYPE_DERIVE },
+               { "wsrep_commit_oool",               "operations",   DS_TYPE_DERIVE },
+               { "wsrep_flow_control_recv",         "operations",   DS_TYPE_DERIVE },
+               { "wsrep_flow_control_sent",         "operations",   DS_TYPE_DERIVE },
+               { "wsrep_flow_control_paused",       "operations",   DS_TYPE_DERIVE },
+               { "wsrep_local_bf_aborts",           "operations",   DS_TYPE_DERIVE },
+               { "wsrep_local_cert_failures",       "operations",   DS_TYPE_DERIVE },
+               { "wsrep_local_commits",             "operations",   DS_TYPE_DERIVE },
+               { "wsrep_local_replays",             "operations",   DS_TYPE_DERIVE },
+               { "wsrep_received",                  "operations",   DS_TYPE_DERIVE },
+               { "wsrep_replicated",                "operations",   DS_TYPE_DERIVE },
+
+               { "wsrep_received_bytes",            "total_bytes",  DS_TYPE_DERIVE },
+               { "wsrep_replicated_bytes",          "total_bytes",  DS_TYPE_DERIVE },
+
+               { "wsrep_apply_window",              "gauge",        DS_TYPE_GAUGE },
+               { "wsrep_commit_window",             "gauge",        DS_TYPE_GAUGE },
+
+               { "wsrep_cluster_size",              "gauge",        DS_TYPE_GAUGE },
+               { "wsrep_cert_deps_distance",        "gauge",        DS_TYPE_GAUGE },
+
+               { "wsrep_local_recv_queue",          "queue_length", DS_TYPE_GAUGE },
+               { "wsrep_local_send_queue",          "queue_length", DS_TYPE_GAUGE },
+
+               { NULL,                              NULL,           0}
+
+       };
+
+       query = "SHOW GLOBAL STATUS LIKE 'wsrep_%'";
+
+       res = exec_query (con, query);
+       if (res == NULL)
+               return (-1);
+
+       row = mysql_fetch_row (res);
+       if (row == NULL)
+       {
+               ERROR ("mysql plugin: Failed to get wsrep statistics: "
+                       "`%s' did not return any rows.", query);
+               mysql_free_result (res);
+               return (-1);
+       }
+
+       while ((row = mysql_fetch_row (res)))
+       {
+               int i;
+               char *key;
+               unsigned long long val;
+
+               key = row[0];
+               val = atoll (row[1]);
+
+               for (i = 0; metrics[i].key != NULL && strcmp(metrics[i].key, key) != 0; i++)
+                       ;
+
+               if (metrics[i].key == NULL)
+                       continue;
+
+               switch (metrics[i].ds_type) {
+                       case DS_TYPE_GAUGE:
+                               gauge_submit(metrics[i].type, key, (gauge_t)val, db);
+                               break;
+                       case DS_TYPE_DERIVE:
+                               derive_submit(metrics[i].type, key, (derive_t)val, db);
+                               break;
+               }
+       }
+
+       mysql_free_result(res);
+       return (0);
+} /* mysql_read_wsrep_stats */
+
 static int mysql_read (user_data_t *ud)
 {
        mysql_database_t *db;
@@ -953,6 +1040,9 @@ static int mysql_read (user_data_t *ud)
        if ((db->slave_stats) || (db->slave_notif))
                mysql_read_slave_stats (db, con);
 
+       if (db->wsrep_stats)
+               mysql_read_wsrep_stats (db, con);
+
        return (0);
 } /* int mysql_read */
 
index dbf0285..26577da 100644 (file)
@@ -894,7 +894,6 @@ static int cna_handle_wafl_data (const char *hostname, cfg_wafl_t *cfg_wafl, /*
        const char *plugin_inst;
 
        na_elem_t *instances;
-       na_elem_t *counter;
        na_elem_iter_t counter_iter;
 
        perf_data.timestamp = cna_child_get_cdtime (data);
@@ -919,7 +918,7 @@ static int cna_handle_wafl_data (const char *hostname, cfg_wafl_t *cfg_wafl, /*
 
        /* Iterate over all counters */
        counter_iter = na_child_iterator (na_elem_child (instances, "counters"));
-       for (counter = na_iterator_next (&counter_iter);
+       for (na_elem_t *counter = na_iterator_next (&counter_iter);
                        counter != NULL;
                        counter = na_iterator_next (&counter_iter))
        {
@@ -1055,7 +1054,6 @@ static int cna_handle_disk_data (const char *hostname, /* {{{ */
 {
        cdtime_t timestamp;
        na_elem_t *instances;
-       na_elem_t *instance;
        na_elem_iter_t instance_iter;
        disk_t *worst_disk = NULL;
 
@@ -1075,7 +1073,7 @@ static int cna_handle_disk_data (const char *hostname, /* {{{ */
 
        /* Iterate over all children */
        instance_iter = na_child_iterator (instances);
-       for (instance = na_iterator_next (&instance_iter);
+       for (na_elem_t *instance = na_iterator_next (&instance_iter);
                        instance != NULL;
                        instance = na_iterator_next(&instance_iter))
        {
@@ -1083,7 +1081,6 @@ static int cna_handle_disk_data (const char *hostname, /* {{{ */
                disk_t  new_data = { 0 };
 
                na_elem_iter_t counter_iterator;
-               na_elem_t *counter;
 
                new_data.timestamp = timestamp;
                new_data.disk_busy_percent = NAN;
@@ -1094,7 +1091,7 @@ static int cna_handle_disk_data (const char *hostname, /* {{{ */
 
                /* Look for the "disk_busy" and "base_for_disk_busy" counters */
                counter_iterator = na_child_iterator(na_elem_child(instance, "counters"));
-               for (counter = na_iterator_next(&counter_iterator);
+               for (na_elem_t *counter = na_iterator_next(&counter_iterator);
                                counter != NULL;
                                counter = na_iterator_next(&counter_iterator))
                {
@@ -1251,7 +1248,6 @@ static int cna_handle_volume_perf_data (const char *hostname, /* {{{ */
        cdtime_t timestamp;
        na_elem_t *elem_instances;
        na_elem_iter_t iter_instances;
-       na_elem_t *elem_instance;
 
        timestamp = cna_child_get_cdtime (data);
 
@@ -1265,7 +1261,7 @@ static int cna_handle_volume_perf_data (const char *hostname, /* {{{ */
        }
 
        iter_instances = na_child_iterator (elem_instances);
-       for (elem_instance = na_iterator_next(&iter_instances);
+       for (na_elem_t *elem_instance = na_iterator_next(&iter_instances);
                        elem_instance != NULL;
                        elem_instance = na_iterator_next(&iter_instances))
        {
@@ -1276,7 +1272,6 @@ static int cna_handle_volume_perf_data (const char *hostname, /* {{{ */
 
                na_elem_t *elem_counters;
                na_elem_iter_t iter_counters;
-               na_elem_t *elem_counter;
 
                perf_data.timestamp = timestamp;
 
@@ -1294,7 +1289,7 @@ static int cna_handle_volume_perf_data (const char *hostname, /* {{{ */
                        continue;
 
                iter_counters = na_child_iterator (elem_counters);
-               for (elem_counter = na_iterator_next(&iter_counters);
+               for (na_elem_t *elem_counter = na_iterator_next(&iter_counters);
                                elem_counter != NULL;
                                elem_counter = na_iterator_next(&iter_counters))
                {
@@ -1419,9 +1414,7 @@ static int cna_query_volume_perf (host_config_t *host) /* {{{ */
 static int cna_submit_volume_usage_data (const char *hostname, /* {{{ */
                cfg_volume_usage_t *cfg_volume, int interval)
 {
-       data_volume_usage_t *v;
-
-       for (v = cfg_volume->volumes; v != NULL; v = v->next)
+       for (data_volume_usage_t *v = cfg_volume->volumes; v != NULL; v = v->next)
        {
                char plugin_instance[DATA_MAX_NAME_LEN];
 
@@ -1542,7 +1535,7 @@ static void cna_handle_volume_snap_usage(const host_config_t *host, /* {{{ */
                data_volume_usage_t *v)
 {
        uint64_t snap_used = 0, value;
-       na_elem_t *data, *elem_snap, *elem_snapshots;
+       na_elem_t *data, *elem_snapshots;
        na_elem_iter_t iter_snap;
 
        data = na_server_invoke_elem(host->srv, v->snap_query);
@@ -1574,7 +1567,7 @@ static void cna_handle_volume_snap_usage(const host_config_t *host, /* {{{ */
        }
 
        iter_snap = na_child_iterator (elem_snapshots);
-       for (elem_snap = na_iterator_next (&iter_snap);
+       for (na_elem_t *elem_snap = na_iterator_next (&iter_snap);
                        elem_snap != NULL;
                        elem_snap = na_iterator_next (&iter_snap))
        {
@@ -1689,7 +1682,6 @@ static void cna_handle_volume_sis_saved (const host_config_t *host, /* {{{ */
 static int cna_handle_volume_usage_data (const host_config_t *host, /* {{{ */
                cfg_volume_usage_t *cfg_volume, na_elem_t *data)
 {
-       na_elem_t *elem_volume;
        na_elem_t *elem_volumes;
        na_elem_iter_t iter_volume;
 
@@ -1703,7 +1695,7 @@ static int cna_handle_volume_usage_data (const host_config_t *host, /* {{{ */
        }
 
        iter_volume = na_child_iterator (elem_volumes);
-       for (elem_volume = na_iterator_next (&iter_volume);
+       for (na_elem_t *elem_volume = na_iterator_next (&iter_volume);
                        elem_volume != NULL;
                        elem_volume = na_iterator_next (&iter_volume))
        {
@@ -1827,7 +1819,6 @@ static int cna_query_volume_usage (host_config_t *host) /* {{{ */
 static int cna_handle_quota_data (const host_config_t *host, /* {{{ */
                cfg_quota_t *cfg_quota, na_elem_t *data)
 {
-       na_elem_t *elem_quota;
        na_elem_t *elem_quotas;
        na_elem_iter_t iter_quota;
 
@@ -1841,7 +1832,7 @@ static int cna_handle_quota_data (const host_config_t *host, /* {{{ */
        }
 
        iter_quota = na_child_iterator (elem_quotas);
-       for (elem_quota = na_iterator_next (&iter_quota);
+       for (na_elem_t *elem_quota = na_iterator_next (&iter_quota);
                        elem_quota != NULL;
                        elem_quota = na_iterator_next (&iter_quota))
        {
@@ -1953,7 +1944,6 @@ static int cna_query_quota (host_config_t *host) /* {{{ */
 static int cna_handle_snapvault_data (const char *hostname, /* {{{ */
                cfg_snapvault_t *cfg_snapvault, na_elem_t *data, cdtime_t interval)
 {
-       na_elem_t *status;
        na_elem_iter_t status_iter;
 
        status = na_elem_child (data, "status-list");
@@ -1963,7 +1953,7 @@ static int cna_handle_snapvault_data (const char *hostname, /* {{{ */
        }
 
        status_iter = na_child_iterator (status);
-       for (status = na_iterator_next (&status_iter);
+       for (na_elem_t *status = na_iterator_next (&status_iter);
                        status != NULL;
                        status = na_iterator_next (&status_iter))
        {
@@ -2013,7 +2003,6 @@ static int cna_handle_snapvault_iter (host_config_t *host, /* {{{ */
        const char *tag;
 
        uint32_t records_count;
-       uint32_t i;
 
        records_count = na_child_get_uint32 (data, "records", UINT32_MAX);
        if (records_count == UINT32_MAX)
@@ -2025,7 +2014,7 @@ static int cna_handle_snapvault_iter (host_config_t *host, /* {{{ */
 
        DEBUG ("netapp plugin: Iterating %u SV records (tag = %s)", records_count, tag);
 
-       for (i = 0; i < records_count; ++i) {
+       for (uint32_t i = 0; i < records_count; ++i) {
                na_elem_t *elem;
 
                elem = na_server_invoke (host->srv,
@@ -2114,7 +2103,6 @@ static int cna_handle_system_data (const char *hostname, /* {{{ */
                cfg_system_t *cfg_system, na_elem_t *data, int interval)
 {
        na_elem_t *instances;
-       na_elem_t *counter;
        na_elem_iter_t counter_iter;
 
        derive_t disk_read = 0, disk_written = 0;
@@ -2146,7 +2134,7 @@ static int cna_handle_system_data (const char *hostname, /* {{{ */
        }
 
        counter_iter = na_child_iterator (na_elem_child (instances, "counters"));
-       for (counter = na_iterator_next (&counter_iter);
+       for (na_elem_t *counter = na_iterator_next (&counter_iter);
                        counter != NULL;
                        counter = na_iterator_next (&counter_iter))
        {
@@ -2391,7 +2379,6 @@ static int cna_config_volume_performance (host_config_t *host, /* {{{ */
                const oconfig_item_t *ci)
 {
        cfg_volume_perf_t *cfg_volume_perf;
-       int i;
 
        if ((host == NULL) || (ci == NULL))
                return (EINVAL);
@@ -2434,7 +2421,7 @@ static int cna_config_volume_performance (host_config_t *host, /* {{{ */
        }
        cfg_volume_perf = host->cfg_volume_perf;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *item = ci->children + i;
 
                /* if (!item || !item->key || !*item->key) continue; */
@@ -2518,7 +2505,6 @@ static void cna_config_volume_usage_default (cfg_volume_usage_t *cvu, /* {{{ */
 static int cna_config_quota (host_config_t *host, oconfig_item_t *ci) /* {{{ */
 {
        cfg_quota_t *cfg_quota;
-       int i;
 
        if ((host == NULL) || (ci == NULL))
                return (EINVAL);
@@ -2534,7 +2520,7 @@ static int cna_config_quota (host_config_t *host, oconfig_item_t *ci) /* {{{ */
        }
        cfg_quota = host->cfg_quota;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *item = ci->children + i;
 
                if (strcasecmp (item->key, "Interval") == 0)
@@ -2550,7 +2536,6 @@ static int cna_config_quota (host_config_t *host, oconfig_item_t *ci) /* {{{ */
 /* Corresponds to a <Disks /> block */
 static int cna_config_disk(host_config_t *host, oconfig_item_t *ci) { /* {{{ */
        cfg_disk_t *cfg_disk;
-       int i;
 
        if ((host == NULL) || (ci == NULL))
                return (EINVAL);
@@ -2570,7 +2555,7 @@ static int cna_config_disk(host_config_t *host, oconfig_item_t *ci) { /* {{{ */
        }
        cfg_disk = host->cfg_disk;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *item = ci->children + i;
 
                /* if (!item || !item->key || !*item->key) continue; */
@@ -2595,7 +2580,6 @@ static int cna_config_disk(host_config_t *host, oconfig_item_t *ci) { /* {{{ */
 static int cna_config_wafl(host_config_t *host, oconfig_item_t *ci) /* {{{ */
 {
        cfg_wafl_t *cfg_wafl;
-       int i;
 
        if ((host == NULL) || (ci == NULL))
                return (EINVAL);
@@ -2613,7 +2597,7 @@ static int cna_config_wafl(host_config_t *host, oconfig_item_t *ci) /* {{{ */
        }
        cfg_wafl = host->cfg_wafl;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *item = ci->children + i;
 
                if (strcasecmp(item->key, "Interval") == 0)
@@ -2663,7 +2647,6 @@ static int cna_config_volume_usage(host_config_t *host, /* {{{ */
                const oconfig_item_t *ci)
 {
        cfg_volume_usage_t *cfg_volume_usage;
-       int i;
 
        if ((host == NULL) || (ci == NULL))
                return (EINVAL);
@@ -2697,7 +2680,7 @@ static int cna_config_volume_usage(host_config_t *host, /* {{{ */
        }
        cfg_volume_usage = host->cfg_volume_usage;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *item = ci->children + i;
 
                /* if (!item || !item->key || !*item->key) continue; */
@@ -2724,7 +2707,6 @@ static int cna_config_snapvault (host_config_t *host, /* {{{ */
                const oconfig_item_t *ci)
 {
        cfg_snapvault_t *cfg_snapvault;
-       int i;
 
        if ((host == NULL) || (ci == NULL))
                return EINVAL;
@@ -2741,7 +2723,7 @@ static int cna_config_snapvault (host_config_t *host, /* {{{ */
 
        cfg_snapvault = host->cfg_snapvault;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *item = ci->children + i;
 
                if (strcasecmp (item->key, "Interval") == 0)
@@ -2759,7 +2741,6 @@ static int cna_config_system (host_config_t *host, /* {{{ */
                oconfig_item_t *ci)
 {
        cfg_system_t *cfg_system;
-       int i;
 
        if ((host == NULL) || (ci == NULL))
                return (EINVAL);
@@ -2778,7 +2759,7 @@ static int cna_config_system (host_config_t *host, /* {{{ */
        }
        cfg_system = host->cfg_system;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *item = ci->children + i;
 
                if (strcasecmp(item->key, "Interval") == 0) {
@@ -2916,7 +2897,6 @@ static int cna_config_host (host_config_t *host, /* {{{ */
        oconfig_item_t *item;
        _Bool is_vfiler = 0;
        int status;
-       int i;
 
        if (! strcasecmp (ci->key, "VFiler"))
                is_vfiler = 1;
@@ -2930,7 +2910,7 @@ static int cna_config_host (host_config_t *host, /* {{{ */
        if (status != 0)
                return (1);
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                item = ci->children + i;
 
                status = 0;
@@ -3139,10 +3119,9 @@ static int cna_read (user_data_t *ud) { /* {{{ */
 } /* }}} int cna_read */
 
 static int cna_config (oconfig_item_t *ci) { /* {{{ */
-       int i;
        oconfig_item_t *item;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                item = ci->children + i;
 
                if (strcasecmp(item->key, "Host") == 0)
index b2c8b0f..cfca46f 100644 (file)
@@ -157,14 +157,12 @@ static int add_ignorelist (const char *dev, const char *type,
 static int check_ignorelist (const char *dev,
     const char *type, const char *type_instance)
 {
-  ir_ignorelist_t *i;
-
   assert ((dev != NULL) && (type != NULL));
 
   if (ir_ignorelist_head == NULL)
     return (ir_ignorelist_invert ? 0 : 1);
 
-  for (i = ir_ignorelist_head; i != NULL; i = i->next)
+  for (ir_ignorelist_t *i = ir_ignorelist_head; i != NULL; i = i->next)
   {
     /* i->device == NULL  =>  match all devices */
     if ((i->device != NULL)
@@ -725,8 +723,6 @@ static int ir_read (void)
   int ret;
   unsigned int seq, portid;
 
-  size_t ifindex;
-
   static const int type_id[] = { RTM_GETQDISC, RTM_GETTCLASS, RTM_GETTFILTER };
   static const char *type_name[] = { "qdisc", "class", "filter" };
 
@@ -761,15 +757,14 @@ static int ir_read (void)
 
   /* `link_filter_cb' will update `iflist' which is used here to iterate
    * over all interfaces. */
-  for (ifindex = 1; ifindex < iflist_len; ifindex++)
+  for (size_t ifindex = 1; ifindex < iflist_len; ifindex++)
   {
     struct tcmsg *tm;
-    size_t type_index;
 
     if (iflist[ifindex] == NULL)
       continue;
 
-    for (type_index = 0; type_index < STATIC_ARRAY_SIZE (type_id); type_index++)
+    for (size_t type_index = 0; type_index < STATIC_ARRAY_SIZE (type_id); type_index++)
     {
       if (check_ignorelist (iflist[ifindex], type_name[type_index], NULL))
       {
index 3fa66aa..1458a0a 100644 (file)
@@ -370,9 +370,7 @@ static _Bool check_send_okay (const value_list_t *vl) /* {{{ */
 
 static _Bool check_notify_received (const notification_t *n) /* {{{ */
 {
-  notification_meta_t *ptr;
-
-  for (ptr = n->meta; ptr != NULL; ptr = ptr->next)
+  for (notification_meta_t *ptr = n->meta; ptr != NULL; ptr = ptr->next)
     if ((strcmp ("network:received", ptr->name) == 0)
         && (ptr->type == NM_TYPE_BOOLEAN))
       return ((_Bool) ptr->nm_value.nm_boolean);
@@ -492,7 +490,7 @@ static int network_dispatch_notification (notification_t *n) /* {{{ */
 } /* }}} int network_dispatch_notification */
 
 #if HAVE_LIBGCRYPT
-static void network_init_gcrypt (void) /* {{{ */
+static int network_init_gcrypt (void) /* {{{ */
 {
   gcry_error_t err;
 
@@ -500,7 +498,7 @@ static void network_init_gcrypt (void) /* {{{ */
    * Because you can't know in a library whether another library has
    * already initialized the library */
   if (gcry_control (GCRYCTL_ANY_INITIALIZATION_P))
-    return;
+    return (0);
 
  /* http://www.gnupg.org/documentation/manuals/gcrypt/Multi_002dThreading.html
   * To ensure thread-safety, it's important to set GCRYCTL_SET_THREAD_CBS
@@ -514,7 +512,7 @@ static void network_init_gcrypt (void) /* {{{ */
   if (err)
   {
     ERROR ("network plugin: gcry_control (GCRYCTL_SET_THREAD_CBS) failed: %s", gcry_strerror (err));
-    abort ();
+    return (-1);
   }
 # endif
 
@@ -524,11 +522,12 @@ static void network_init_gcrypt (void) /* {{{ */
   if (err)
   {
     ERROR ("network plugin: gcry_control (GCRYCTL_INIT_SECMEM) failed: %s", gcry_strerror (err));
-    abort ();
+    return (-1);
   }
 
   gcry_control (GCRYCTL_INITIALIZATION_FINISHED);
-} /* }}} void network_init_gcrypt */
+  return (0);
+} /* }}} int network_init_gcrypt */
 
 static gcry_cipher_hd_t network_get_aes256_cypher (sockent_t *se, /* {{{ */
     const void *iv, size_t iv_size, const char *username)
@@ -619,7 +618,6 @@ static int write_part_values (char **ret_buffer, size_t *ret_buffer_len,
        value_t      *pkg_values;
 
        size_t offset;
-       int i;
 
        num_values = vl->values_len;
        packet_len = sizeof (part_header_t) + sizeof (uint16_t)
@@ -649,7 +647,7 @@ static int write_part_values (char **ret_buffer, size_t *ret_buffer_len,
 
        pkg_num_values = htons ((uint16_t) vl->values_len);
 
-       for (i = 0; i < num_values; i++)
+       for (int i = 0; i < num_values; i++)
        {
                pkg_values_types[i] = (uint8_t) ds->ds[i].type;
                switch (ds->ds[i].type)
@@ -787,7 +785,6 @@ static int parse_part_values (void **ret_buffer, size_t *ret_buffer_len,
 
        uint16_t tmp16;
        size_t exp_size;
-       size_t i;
 
        uint16_t pkg_length;
        uint16_t pkg_type;
@@ -853,7 +850,7 @@ static int parse_part_values (void **ret_buffer, size_t *ret_buffer_len,
        memcpy (pkg_values, buffer, pkg_numval * sizeof (*pkg_values));
        buffer += pkg_numval * sizeof (*pkg_values);
 
-       for (i = 0; i < pkg_numval; i++)
+       for (size_t i = 0; i < pkg_numval; i++)
        {
                switch (pkg_types[i])
                {
@@ -1152,7 +1149,7 @@ static int parse_part_sign_sha256 (sockent_t *se, /* {{{ */
   if (memcmp (pss.hash, hash, sizeof (pss.hash)) != 0)
   {
     WARNING ("network plugin: Verifying HMAC-SHA-256 signature failed: "
-        "Hash mismatch.");
+        "Hash mismatch. Username: %s", pss.username);
   }
   else
   {
@@ -1287,6 +1284,7 @@ static int parse_part_encr_aes256 (sockent_t *se, /* {{{ */
       pea.username);
   if (cypher == NULL)
   {
+    ERROR ("network plugin: Failed to get cypher. Username: %s", pea.username);
     sfree (pea.username);
     return (-1);
   }
@@ -1302,8 +1300,8 @@ static int parse_part_encr_aes256 (sockent_t *se, /* {{{ */
   if (err != 0)
   {
     sfree (pea.username);
-    ERROR ("network plugin: gcry_cipher_decrypt returned: %s",
-        gcry_strerror (err));
+    ERROR ("network plugin: gcry_cipher_decrypt returned: %s. Username: %s",
+        gcry_strerror (err), pea.username);
     return (-1);
   }
 
@@ -1319,8 +1317,8 @@ static int parse_part_encr_aes256 (sockent_t *se, /* {{{ */
       buffer + buffer_offset, payload_len);
   if (memcmp (hash, pea.hash, sizeof (hash)) != 0)
   {
+    ERROR ("network plugin: Checksum mismatch. Username: %s", pea.username);
     sfree (pea.username);
-    ERROR ("network plugin: Decryption failed: Checksum mismatch.");
     return (-1);
   }
 
@@ -1399,7 +1397,7 @@ static int parse_packet (sockent_t *se, /* {{{ */
 
 #if HAVE_LIBGCRYPT
        int packet_was_signed = (flags & PP_SIGNED);
-        int packet_was_encrypted = (flags & PP_ENCRYPTED);
+       int packet_was_encrypted = (flags & PP_ENCRYPTED);
        int printed_ignore_warning = 0;
 #endif /* HAVE_LIBGCRYPT */
 
@@ -1651,9 +1649,7 @@ static void free_sockent_client (struct sockent_client *sec) /* {{{ */
 
 static void free_sockent_server (struct sockent_server *ses) /* {{{ */
 {
-  size_t i;
-
-  for (i = 0; i < ses->fd_num; i++)
+  for (size_t i = 0; i < ses->fd_num; i++)
   {
     if (ses->fd[i] >= 0)
     {
@@ -2067,7 +2063,12 @@ static int sockent_init_crypto (sockent_t *se) /* {{{ */
        {
                if (se->data.client.security_level > SECURITY_LEVEL_NONE)
                {
-                       network_init_gcrypt ();
+                       if (network_init_gcrypt () < 0)
+                       {
+                               ERROR ("network plugin: Cannot configure client socket with "
+                                               "security: Failed to initialize crypto library.");
+                               return (-1);
+                       }
 
                        if ((se->data.client.username == NULL)
                                        || (se->data.client.password == NULL))
@@ -2087,7 +2088,12 @@ static int sockent_init_crypto (sockent_t *se) /* {{{ */
        {
                if (se->data.server.security_level > SECURITY_LEVEL_NONE)
                {
-                       network_init_gcrypt ();
+                       if (network_init_gcrypt () < 0)
+                       {
+                               ERROR ("network plugin: Cannot configure server socket with "
+                                               "security: Failed to initialize crypto library.");
+                               return (-1);
+                       }
 
                        if (se->data.server.auth_file == NULL)
                        {
@@ -2140,7 +2146,7 @@ static int sockent_client_connect (sockent_t *se) /* {{{ */
        static c_complain_t complaint = C_COMPLAIN_INIT_STATIC;
 
        struct sockent_client *client;
-       struct addrinfo *ai_list, *ai_ptr;
+       struct addrinfo *ai_list;
        int status;
        _Bool reconnect = 0;
        cdtime_t now;
@@ -2186,7 +2192,7 @@ static int sockent_client_connect (sockent_t *se) /* {{{ */
                                se->node);
        }
 
-       for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+       for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
        {
                if (client->fd >= 0) /* when we reconnect */
                        sockent_client_disconnect(se);
@@ -2236,7 +2242,7 @@ static int sockent_client_connect (sockent_t *se) /* {{{ */
 /* Open the file descriptors for a initialized sockent structure. */
 static int sockent_server_listen (sockent_t *se) /* {{{ */
 {
-       struct addrinfo *ai_list, *ai_ptr;
+       struct addrinfo *ai_list;
        int              status;
 
         const char *node;
@@ -2274,7 +2280,7 @@ static int sockent_server_listen (sockent_t *se) /* {{{ */
                return (-1);
        }
 
-       for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+       for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
        {
                int *tmp;
 
@@ -2329,7 +2335,6 @@ static int sockent_add (sockent_t *se) /* {{{ */
        if (se->type == SOCKENT_TYPE_SERVER)
        {
                struct pollfd *tmp;
-               size_t i;
 
                tmp = realloc (listen_sockets_pollfd,
                                sizeof (*tmp) * (listen_sockets_num
@@ -2342,7 +2347,7 @@ static int sockent_add (sockent_t *se) /* {{{ */
                listen_sockets_pollfd = tmp;
                tmp = listen_sockets_pollfd + listen_sockets_num;
 
-               for (i = 0; i < se->data.server.fd_num; i++)
+               for (size_t i = 0; i < se->data.server.fd_num; i++)
                {
                        memset (tmp + i, 0, sizeof (*tmp));
                        tmp[i].fd = se->data.server.fd[i];
@@ -2441,7 +2446,6 @@ static int network_receive (void) /* {{{ */
        char buffer[network_config_packet_size];
        int  buffer_len;
 
-       size_t i;
        int status = 0;
 
        receive_list_entry_t *private_list_head;
@@ -2467,7 +2471,7 @@ static int network_receive (void) /* {{{ */
                        break;
                }
 
-               for (i = 0; (i < listen_sockets_num) && (status > 0); i++)
+               for (size_t i = 0; (i < listen_sockets_num) && (status > 0); i++)
                {
                        receive_list_entry_t *ent;
 
@@ -2785,11 +2789,9 @@ static void network_send_buffer_encrypted (sockent_t *se, /* {{{ */
 
 static void network_send_buffer (char *buffer, size_t buffer_len) /* {{{ */
 {
-  sockent_t *se;
-
   DEBUG ("network plugin: network_send_buffer: buffer_len = %zu", buffer_len);
 
-  for (se = sending_sockets; se != NULL; se = se->next)
+  for (sockent_t *se = sending_sockets; se != NULL; se = se->next)
   {
 #if HAVE_LIBGCRYPT
     if (se->data.client.security_level == SECURITY_LEVEL_ENCRYPT)
@@ -2890,6 +2892,11 @@ static int network_write (const data_set_t *ds, const value_list_t *vl,
 {
        int status;
 
+       /* listen_loop is set to non-zero in the shutdown callback, which is
+        * guaranteed to be called *after* all the write threads have been shut
+        * down. */
+       assert (listen_loop == 0);
+
        if (!check_send_okay (vl))
        {
 #if COLLECT_DEBUG
@@ -3036,7 +3043,6 @@ static int network_config_add_listen (const oconfig_item_t *ci) /* {{{ */
 {
   sockent_t *se;
   int status;
-  int i;
 
   if ((ci->values_num < 1) || (ci->values_num > 2)
       || (ci->values[0].type != OCONFIG_TYPE_STRING)
@@ -3058,7 +3064,7 @@ static int network_config_add_listen (const oconfig_item_t *ci) /* {{{ */
   if (ci->values_num >= 2)
     se->service = strdup (ci->values[1].value.string);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -3122,7 +3128,6 @@ static int network_config_add_server (const oconfig_item_t *ci) /* {{{ */
 {
   sockent_t *se;
   int status;
-  int i;
 
   if ((ci->values_num < 1) || (ci->values_num > 2)
       || (ci->values[0].type != OCONFIG_TYPE_STRING)
@@ -3144,7 +3149,7 @@ static int network_config_add_server (const oconfig_item_t *ci) /* {{{ */
   if (ci->values_num >= 2)
     se->service = strdup (ci->values[1].value.string);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -3206,17 +3211,15 @@ static int network_config_add_server (const oconfig_item_t *ci) /* {{{ */
 
 static int network_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
   /* The options need to be applied first */
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     if (strcasecmp ("TimeToLive", child->key) == 0)
       network_config_set_ttl (child);
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -3319,8 +3322,6 @@ static int network_notification (const notification_t *n,
 
 static int network_shutdown (void)
 {
-       sockent_t *se;
-
        listen_loop++;
 
        /* Kill the listening thread */
@@ -3351,7 +3352,7 @@ static int network_shutdown (void)
 
        sfree (send_buffer);
 
-       for (se = sending_sockets; se != NULL; se = se->next)
+       for (sockent_t *se = sending_sockets; se != NULL; se = se->next)
                sockent_client_disconnect (se);
        sockent_destroy (sending_sockets);
 
@@ -3450,7 +3451,11 @@ static int network_init (void)
        have_init = 1;
 
 #if HAVE_LIBGCRYPT
-       network_init_gcrypt ();
+       if (network_init_gcrypt () < 0)
+       {
+               ERROR ("network plugin: Failed to initialize crypto library.");
+               return (-1);
+       }
 #endif
 
        if (network_config_stats)
index ee2d93b..c128c81 100644 (file)
--- a/src/nfs.c
+++ b/src/nfs.c
@@ -346,8 +346,6 @@ static int nfs_init (void)
 #elif HAVE_LIBKSTAT
 static int nfs_init (void)
 {
-       kstat_t *ksp_chain = NULL;
-
        nfs2_ksp_client = NULL;
        nfs2_ksp_server = NULL;
        nfs3_ksp_client = NULL;
@@ -358,7 +356,7 @@ static int nfs_init (void)
        if (kc == NULL)
                return (-1);
 
-       for (ksp_chain = kc->kc_chain; ksp_chain != NULL;
+       for (kstat_t *ksp_chain = kc->kc_chain; ksp_chain != NULL;
                        ksp_chain = ksp_chain->ks_next)
        {
                if (strncmp (ksp_chain->ks_module, "nfs", 3) != 0)
@@ -386,7 +384,6 @@ static void nfs_procedures_submit (const char *plugin_instance,
                value_t *values, size_t values_num)
 {
        value_list_t vl = VALUE_LIST_INIT;
-       size_t i;
 
        vl.values_len = 1;
        sstrncpy (vl.host, hostname_g, sizeof (vl.host));
@@ -395,7 +392,7 @@ static void nfs_procedures_submit (const char *plugin_instance,
                        sizeof (vl.plugin_instance));
        sstrncpy (vl.type, "nfs_procedure", sizeof (vl.type));
 
-       for (i = 0; i < values_num; i++)
+       for (size_t i = 0; i < values_num; i++)
        {
                vl.values = values + i;
                sstrncpy (vl.type_instance, type_instances[i],
@@ -410,12 +407,11 @@ static void nfs_submit_fields (int nfs_version, const char *instance,
 {
        char plugin_instance[DATA_MAX_NAME_LEN];
        value_t values[fields_num];
-       size_t i;
 
        ssnprintf (plugin_instance, sizeof (plugin_instance), "v%i%s",
                        nfs_version, instance);
 
-       for (i = 0; i < fields_num; i++)
+       for (size_t i = 0; i < fields_num; i++)
                (void) parse_value (fields[i], &values[i], DS_TYPE_DERIVE);
 
        nfs_procedures_submit (plugin_instance, proc_names, values,
@@ -609,7 +605,6 @@ static int nfs_read_kstat (kstat_t *ksp, int nfs_version, const char *inst,
 {
        char plugin_instance[DATA_MAX_NAME_LEN];
        value_t values[proc_names_num];
-       size_t i;
 
        if (ksp == NULL)
                return (EINVAL);
@@ -618,7 +613,7 @@ static int nfs_read_kstat (kstat_t *ksp, int nfs_version, const char *inst,
                        nfs_version, inst);
 
        kstat_read(kc, ksp, NULL);
-       for (i = 0; i < proc_names_num; i++)
+       for (size_t i = 0; i < proc_names_num; i++)
        {
                /* The name passed to kstat_data_lookup() doesn't have the
                 * "const" modifier, so we need to copy the name here. */
index 2c7e1cc..e346cee 100644 (file)
@@ -225,8 +225,6 @@ static void submit (const char *type, const char *inst, long long value)
 
 static int nginx_read (void)
 {
-  int i;
-
   char *ptr;
   char *lines[16];
   int   lines_num = 0;
@@ -264,7 +262,7 @@ static int nginx_read (void)
    *  16630948 16630948 31070465
    * Reading: 6 Writing: 179 Waiting: 106
    */
-  for (i = 0; i < lines_num; i++)
+  for (int i = 0; i < lines_num; i++)
   {
     fields_num = strsplit (lines[i], fields,
        (sizeof (fields) / sizeof (fields[0])));
index d12ecb2..ef7b95b 100644 (file)
@@ -67,9 +67,7 @@ static int set_timeout (oconfig_item_t *ci, int *timeout)
 
 static int c_notify_config (oconfig_item_t *ci)
 {
-       int i = 0;
-
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;
 
                if (0 == strcasecmp (c->key, "OkayTimeout"))
index c7fe79e..cefeb22 100644 (file)
@@ -67,8 +67,7 @@ static char *email_subject = NULL;
 static int authinteract (auth_client_request_t request, char **result,
     int fields, void __attribute__((unused)) *arg)
 {
-  int i;
-  for (i = 0; i < fields; i++)
+  for (int i = 0; i < fields; i++)
   {
     if (request[i].flags & AUTH_USER)
       result[i] = smtp_user;
index c53294b..57a034d 100644 (file)
@@ -43,9 +43,7 @@ static char *nagios_command_file;
 
 static int nagios_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 02c9f6d..a009365 100644 (file)
@@ -348,7 +348,6 @@ static int ntpd_connect (void)
        const char *port;
 
        struct addrinfo *ai_list;
-       struct addrinfo *ai_ptr;
        int              status;
 
        if (sock_descr >= 0)
@@ -382,7 +381,7 @@ static int ntpd_connect (void)
                return (-1);
        }
 
-       for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+       for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
        {
                /* create our socket descriptor */
                if ((sock_descr = socket (ai_ptr->ai_family,
@@ -420,7 +419,6 @@ static int ntpd_receive_response (int *res_items, int *res_size,
        struct resp_pkt  res;
        int              status;
        int              done;
-       int              i;
 
        char            *items;
        size_t           items_num;
@@ -674,7 +672,7 @@ static int ntpd_receive_response (int *res_items, int *res_size,
                items_num += pkt_item_num;
                *res_data = items;
 
-               for (i = 0; i < pkt_item_num; i++)
+               for (int i = 0; i < pkt_item_num; i++)
                {
                        /* dst: There are already `*res_items' items with
                         *      res_item_size bytes each in in `*res_data'. Set
@@ -903,7 +901,6 @@ static int ntpd_read (void)
        gauge_t offset_error;
 
        int status;
-       int i;
 
        /* On Linux, if the STA_NANO bit is set in ik->status, then ik->offset
         * is is nanoseconds, otherwise it's microseconds. */
@@ -971,7 +968,7 @@ static int ntpd_read (void)
                return (-1);
        }
 
-       for (i = 0; i < ps_num; i++)
+       for (int i = 0; i < ps_num; i++)
        {
                struct info_peer_summary *ptr;
                double offset;
index ee96863..b5c6b41 100644 (file)
--- a/src/nut.c
+++ b/src/nut.c
@@ -248,7 +248,6 @@ static int nut_read_one (nut_ups_t *ups)
 
 static int nut_read (void)
 {
-  nut_ups_t *ups;
   int success = 0;
 
   pthread_mutex_lock (&read_lock);
@@ -259,7 +258,7 @@ static int nut_read (void)
   if (success != 0)
     return (0);
 
-  for (ups = upslist_head; ups != NULL; ups = ups->next)
+  for (nut_ups_t *ups = upslist_head; ups != NULL; ups = ups->next)
     if (nut_read_one (ups) == 0)
       success++;
 
index 0af32dc..899ad3e 100644 (file)
@@ -150,7 +150,7 @@ static size_t strtabsplit (char *string, char **fields, size_t size) /* {{{ */
 
 static FILE *olsrd_connect (void) /* {{{ */
 {
-  struct addrinfo *ai_list, *ai_ptr;
+  struct addrinfo *ai_list;
   int              ai_return;
 
   FILE *fh;
@@ -173,7 +173,7 @@ static FILE *olsrd_connect (void) /* {{{ */
   }
 
   fh = NULL;
-  for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+  for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
   {
     int fd;
     int status;
index f103086..235eff8 100644 (file)
@@ -339,7 +339,6 @@ static int cow_read_values (const char *path, const char *name,
   value_t values[1];
   value_list_t vl = VALUE_LIST_INIT;
   int success = 0;
-  size_t i;
 
   if (sensor_list != NULL)
   {
@@ -355,7 +354,7 @@ static int cow_read_values (const char *path, const char *name,
   sstrncpy (vl.plugin, "onewire", sizeof (vl.plugin));
   sstrncpy (vl.plugin_instance, name, sizeof (vl.plugin_instance));
 
-  for (i = 0; i < family_info->features_num; i++)
+  for (size_t i = 0; i < family_info->features_num; i++)
   {
     char *buffer;
     size_t buffer_size;
index 35eae32..282e2dc 100644 (file)
@@ -209,7 +209,7 @@ static void cldap_submit_gauge (const char *type, const char *type_instance, /*
 static int cldap_read_host (user_data_t *ud) /* {{{ */
 {
        cldap_t *st;
-       LDAPMessage *e, *result;
+       LDAPMessage *result;
        char *dn;
        int rc;
        int status;
@@ -250,7 +250,7 @@ static int cldap_read_host (user_data_t *ud) /* {{{ */
                return (-1);
        }
 
-       for (e = ldap_first_entry (st->ld, result); e != NULL;
+       for (LDAPMessage *e = ldap_first_entry (st->ld, result); e != NULL;
                e = ldap_next_entry (st->ld, e))
        {
                if ((dn = ldap_get_dn (st->ld, e)) != NULL)
@@ -559,7 +559,6 @@ static int cldap_read_host (user_data_t *ud) /* {{{ */
 static int cldap_config_add (oconfig_item_t *ci) /* {{{ */
 {
        cldap_t *st;
-       int i;
        int status;
 
        st = calloc (1, sizeof (*st));
@@ -581,7 +580,7 @@ static int cldap_config_add (oconfig_item_t *ci) /* {{{ */
        st->verifyhost = 1;
        st->version = LDAP_VERSION3;
 
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -687,10 +686,9 @@ static int cldap_config_add (oconfig_item_t *ci) /* {{{ */
 
 static int cldap_config (oconfig_item_t *ci) /* {{{ */
 {
-       int i;
        int status = 0;
 
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -720,9 +718,7 @@ static int cldap_init (void) /* {{{ */
 
 static int cldap_shutdown (void) /* {{{ */
 {
-       size_t i;
-
-       for (i = 0; i < databases_num; i++)
+       for (size_t i = 0; i < databases_num; i++)
                if (databases[i]->ld != NULL)
                        ldap_unbind_ext_s (databases[i]->ld, NULL, NULL);
        sfree (databases);
index 8bbb82b..00ae736 100644 (file)
@@ -522,12 +522,12 @@ static int multi4_read (const char *name, FILE *fh)
 static int openvpn_read (void)
 {
        FILE *fh;
-       int  i, read;
+       int  read;
 
        read = 0;
 
        /* call the right read function for every status entry in the list */
-       for (i = 0; i < vpn_num; i++)
+       for (int i = 0; i < vpn_num; i++)
        {
                int vpn_read = 0;
 
@@ -651,7 +651,7 @@ static int openvpn_config (const char *key, const char *value)
        if (strcasecmp ("StatusFile", key) == 0)
        {
                char    *status_file, *status_name, *filename;
-               int     status_version, i;
+               int     status_version;
                vpn_status_t *temp;
 
                /* try to detect the status file format */
@@ -687,7 +687,7 @@ static int openvpn_config (const char *key, const char *value)
                }
 
                /* scan the list looking for a clone */
-               for (i = 0; i < vpn_num; i++)
+               for (int i = 0; i < vpn_num; i++)
                {
                        if (strcasecmp (vpn_list[i]->name, status_name) == 0)
                        {
@@ -778,9 +778,7 @@ static int openvpn_config (const char *key, const char *value)
 /* shutdown callback */
 static int openvpn_shutdown (void)
 {
-       int i;
-
-       for (i = 0; i < vpn_num; i++)
+       for (int i = 0; i < vpn_num; i++)
        {
                sfree (vpn_list[i]->file);
                sfree (vpn_list[i]);
index 8ecfe25..1554830 100644 (file)
@@ -94,7 +94,6 @@ static void o_report_error (const char *where, /* {{{ */
   char buffer[2048];
   sb4 error_code;
   int status;
-  unsigned int record_number;
 
   if (db_name == NULL)
     db_name = "(none)";
@@ -103,7 +102,7 @@ static void o_report_error (const char *where, /* {{{ */
 
   /* An operation may cause / return multiple errors. Loop until we have
    * handled all errors available (with a fail-save limit of 16). */
-  for (record_number = 1; record_number <= 16; record_number++)
+  for (unsigned int record_number = 1; record_number <= 16; record_number++)
   {
     memset (buffer, 0, sizeof (buffer));
     error_code = -1;
@@ -145,8 +144,6 @@ static void o_report_error (const char *where, /* {{{ */
 
 static void o_database_free (o_database_t *db) /* {{{ */
 {
-  size_t i;
-
   if (db == NULL)
     return;
 
@@ -157,7 +154,7 @@ static void o_database_free (o_database_t *db) /* {{{ */
   sfree (db->queries);
 
   if (db->q_prep_areas != NULL)
-    for (i = 0; i < db->queries_num; ++i)
+    for (size_t i = 0; i < db->queries_num; ++i)
       udb_query_delete_preparation_area (db->q_prep_areas[i]);
   free (db->q_prep_areas);
 
@@ -189,7 +186,6 @@ static int o_config_add_database (oconfig_item_t *ci) /* {{{ */
 {
   o_database_t *db;
   int status;
-  int i;
 
   if ((ci->values_num != 1)
       || (ci->values[0].type != OCONFIG_TYPE_STRING))
@@ -219,7 +215,7 @@ static int o_config_add_database (oconfig_item_t *ci) /* {{{ */
   }
 
   /* Fill the `o_database_t' structure.. */
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -278,7 +274,7 @@ static int o_config_add_database (oconfig_item_t *ci) /* {{{ */
       break;
     }
 
-    for (i = 0; i < db->queries_num; ++i)
+    for (int i = 0; i < db->queries_num; ++i)
     {
       db->q_prep_areas[i]
         = udb_query_allocate_preparation_area (db->queries[i]);
@@ -326,9 +322,7 @@ static int o_config_add_database (oconfig_item_t *ci) /* {{{ */
 
 static int o_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     if (strcasecmp ("Query", child->key) == 0)
@@ -400,7 +394,6 @@ static int o_read_database_query (o_database_t *db, /* {{{ */
   OCIDefine **oci_defines;
 
   int status;
-  size_t i;
 
   oci_statement = udb_query_get_user_data (q);
 
@@ -518,13 +511,13 @@ static int o_read_database_query (o_database_t *db, /* {{{ */
   ALLOC_OR_FAIL (column_names, column_num * sizeof (char *));
   ALLOC_OR_FAIL (column_names[0], column_num * DATA_MAX_NAME_LEN
       * sizeof (char));
-  for (i = 1; i < column_num; i++)
+  for (size_t i = 1; i < column_num; i++)
     column_names[i] = column_names[i - 1] + DATA_MAX_NAME_LEN;
 
   ALLOC_OR_FAIL (column_values, column_num * sizeof (char *));
   ALLOC_OR_FAIL (column_values[0], column_num * DATA_MAX_NAME_LEN
       * sizeof (char));
-  for (i = 1; i < column_num; i++)
+  for (size_t i = 1; i < column_num; i++)
     column_values[i] = column_values[i - 1] + DATA_MAX_NAME_LEN;
 
   ALLOC_OR_FAIL (oci_defines, column_num * sizeof (OCIDefine *));
@@ -532,7 +525,7 @@ static int o_read_database_query (o_database_t *db, /* {{{ */
 
   /* ``Define'' the returned data, i. e. bind the columns to the buffers
    * allocated above. */
-  for (i = 0; i < column_num; i++) /* {{{ */
+  for (size_t i = 0; i < column_num; i++) /* {{{ */
   {
     char *column_name;
     ub4 column_name_length;
@@ -643,7 +636,6 @@ static int o_read_database_query (o_database_t *db, /* {{{ */
 
 static int o_read_database (o_database_t *db) /* {{{ */
 {
-  size_t i;
   int status;
 
   if (db->oci_service_context != NULL)
@@ -718,7 +710,7 @@ static int o_read_database (o_database_t *db) /* {{{ */
   DEBUG ("oracle plugin: o_read_database: db->connect_id = %s; db->oci_service_context = %p;",
       db->connect_id, db->oci_service_context);
 
-  for (i = 0; i < db->queries_num; i++)
+  for (size_t i = 0; i < db->queries_num; i++)
     o_read_database_query (db, db->queries[i], db->q_prep_areas[i]);
 
   return (0);
index d2f8345..48374b6 100644 (file)
@@ -309,7 +309,6 @@ static int hv2data_source (pTHX_ HV *hash, data_source_t *ds)
 static size_t av2value (pTHX_ char *name, AV *array, value_t *value, size_t array_len)
 {
        const data_set_t *ds;
-       size_t i;
 
        if ((NULL == name) || (NULL == array) || (NULL == value) || (array_len == 0))
                return 0;
@@ -329,7 +328,7 @@ static size_t av2value (pTHX_ char *name, AV *array, value_t *value, size_t arra
                                name, array_len, ds->ds_num);
        }
 
-       for (i = 0; i < ds->ds_num; ++i) {
+       for (size_t i = 0; i < ds->ds_num; ++i) {
                SV **tmp = av_fetch (array, i, 0);
 
                if (NULL != tmp) {
@@ -428,7 +427,7 @@ static int hv2value_list (pTHX_ HV *hash, value_list_t *vl)
 
 static int av2data_set (pTHX_ AV *array, char *name, data_set_t *ds)
 {
-       int len, i;
+       int len;
 
        if ((NULL == array) || (NULL == name) || (NULL == ds))
                return -1;
@@ -443,7 +442,7 @@ static int av2data_set (pTHX_ AV *array, char *name, data_set_t *ds)
        ds->ds = smalloc ((len + 1) * sizeof (*ds->ds));
        ds->ds_num = len + 1;
 
-       for (i = 0; i <= len; ++i) {
+       for (int i = 0; i <= len; ++i) {
                SV **elem = av_fetch (array, i, 0);
 
                if (NULL == elem) {
@@ -487,9 +486,8 @@ static int av2notification_meta (pTHX_ AV *array, notification_meta_t **meta)
        notification_meta_t **m = meta;
 
        int len = av_len (array);
-       int i;
 
-       for (i = 0; i <= len; ++i) {
+       for (int i = 0; i <= len; ++i) {
                SV **tmp = av_fetch (array, i, 0);
                HV  *hash;
 
@@ -605,14 +603,12 @@ static int hv2notification (pTHX_ HV *hash, notification_t *n)
 
 static int data_set2av (pTHX_ data_set_t *ds, AV *array)
 {
-       size_t i;
-
        if ((NULL == ds) || (NULL == array))
                return -1;
 
        av_extend (array, ds->ds_num);
 
-       for (i = 0; i < ds->ds_num; ++i) {
+       for (size_t i = 0; i < ds->ds_num; ++i) {
                HV *source = newHV ();
 
                if (NULL == hv_store (source, "name", 4,
@@ -712,7 +708,6 @@ static int value_list2hv (pTHX_ value_list_t *vl, data_set_t *ds, HV *hash)
 static int notification_meta2av (pTHX_ notification_meta_t *meta, AV *array)
 {
        int meta_num = 0;
-       int i;
 
        while (meta) {
                ++meta_num;
@@ -721,7 +716,7 @@ static int notification_meta2av (pTHX_ notification_meta_t *meta, AV *array)
 
        av_extend (array, meta_num);
 
-       for (i = 0; NULL != meta; meta = meta->next, ++i) {
+       for (int i = 0; NULL != meta; meta = meta->next, ++i) {
                HV *m = newHV ();
                SV *value;
 
@@ -808,8 +803,6 @@ static int notification2hv (pTHX_ notification_t *n, HV *hash)
 
 static int oconfig_item2hv (pTHX_ oconfig_item_t *ci, HV *hash)
 {
-       int i;
-
        AV *values;
        AV *children;
 
@@ -826,7 +819,7 @@ static int oconfig_item2hv (pTHX_ oconfig_item_t *ci, HV *hash)
                return -1;
        }
 
-       for (i = 0; i < ci->values_num; ++i) {
+       for (int i = 0; i < ci->values_num; ++i) {
                SV *value;
 
                switch (ci->values[i].type) {
@@ -863,7 +856,7 @@ static int oconfig_item2hv (pTHX_ oconfig_item_t *ci, HV *hash)
                return -1;
        }
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                HV *child = newHV ();
 
                if (0 != oconfig_item2hv (aTHX_ ci->children + i, child)) {
@@ -2239,21 +2232,19 @@ static void xs_init (pTHX)
        SV   *tmp   = NULL;
        char *file  = __FILE__;
 
-       int i = 0;
-
        dXSUB_SYS;
 
        /* enable usage of Perl modules using shared libraries */
        newXS ("DynaLoader::boot_DynaLoader", boot_DynaLoader, file);
 
        /* register API */
-       for (i = 0; NULL != api[i].f; ++i)
+       for (int i = 0; NULL != api[i].f; ++i)
                newXS (api[i].name, api[i].f, file);
 
        stash = gv_stashpv ("Collectd", 1);
 
        /* export "constants" */
-       for (i = 0; '\0' != constants[i].name[0]; ++i)
+       for (int i = 0; '\0' != constants[i].name[0]; ++i)
                newCONSTSUB (stash, constants[i].name, newSViv (constants[i].value));
 
        /* export global variables
@@ -2262,7 +2253,7 @@ static void xs_init (pTHX)
         * accessing any such variable (this is basically the same as using
         * tie() in Perl) */
        /* global strings */
-       for (i = 0; '\0' != g_strings[i].name[0]; ++i) {
+       for (int i = 0; '\0' != g_strings[i].name[0]; ++i) {
                tmp = get_sv (g_strings[i].name, 1);
                sv_magicext (tmp, NULL, PERL_MAGIC_ext, &g_pv_vtbl,
                                g_strings[i].var, 0);
@@ -2287,9 +2278,7 @@ static int init_pi (int argc, char **argv)
        log_info ("Initializing Perl interpreter...");
 #if COLLECT_DEBUG
        {
-               int i = 0;
-
-               for (i = 0; i < argc; ++i)
+               for (int i = 0; i < argc; ++i)
                        log_debug ("argv[%i] = \"%s\"", i, argv[i]);
        }
 #endif /* COLLECT_DEBUG */
@@ -2558,11 +2547,10 @@ static int perl_config_plugin (pTHX_ oconfig_item_t *ci)
 static int perl_config (oconfig_item_t *ci)
 {
        int status = 0;
-       int i = 0;
 
        dTHXa (NULL);
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;
                int current_status = 0;
 
index e8e0b18..d7a5a15 100644 (file)
--- a/src/pf.c
+++ b/src/pf.c
@@ -83,7 +83,6 @@ static int pf_read (void)
        struct pf_status state;
        int fd;
        int status;
-       int i;
 
        fd = open (pf_device, O_RDONLY);
        if (fd < 0)
@@ -113,16 +112,16 @@ static int pf_read (void)
                return (-1);
        }
 
-       for (i = 0; i < PFRES_MAX; i++)
+       for (int i = 0; i < PFRES_MAX; i++)
                pf_submit ("pf_counters", pf_reasons[i], state.counters[i],
                                /* is gauge = */ 0);
-       for (i = 0; i < LCNT_MAX; i++)
+       for (int i = 0; i < LCNT_MAX; i++)
                pf_submit ("pf_limits", pf_lcounters[i], state.lcounters[i],
                                /* is gauge = */ 0);
-       for (i = 0; i < FCNT_MAX; i++)
+       for (int i = 0; i < FCNT_MAX; i++)
                pf_submit ("pf_state", pf_fcounters[i], state.fcounters[i],
                                /* is gauge = */ 0);
-       for (i = 0; i < SCNT_MAX; i++)
+       for (int i = 0; i < SCNT_MAX; i++)
                pf_submit ("pf_source", pf_scounters[i], state.scounters[i],
                                /* is gauge = */ 0);
 
index 33ab545..b9eed68 100644 (file)
@@ -252,11 +252,9 @@ static void service_statnode_process (pinba_statnode_t *node, /* {{{ */
 
 static void service_process_request (Pinba__Request *request) /* {{{ */
 {
-  unsigned int i;
-
   pthread_mutex_lock (&stat_nodes_lock);
 
-  for (i = 0; i < stat_nodes_num; i++)
+  for (unsigned int i = 0; i < stat_nodes_num; i++)
   {
     if ((stat_nodes[i].host != NULL)
         && (strcmp (request->hostname, stat_nodes[i].host) != 0))
@@ -352,7 +350,6 @@ static pinba_socket_t *pinba_socket_open (const char *node, /* {{{ */
 {
   pinba_socket_t *s;
   struct addrinfo *ai_list;
-  struct addrinfo *ai_ptr;
   int status;
 
   if (node == NULL)
@@ -385,7 +382,7 @@ static pinba_socket_t *pinba_socket_open (const char *node, /* {{{ */
     return (NULL);
   }
 
-  for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+  for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
   {
     status = pb_add_socket (s, ai_ptr);
     if (status != 0)
@@ -406,12 +403,10 @@ static pinba_socket_t *pinba_socket_open (const char *node, /* {{{ */
 
 static void pinba_socket_free (pinba_socket_t *socket) /* {{{ */
 {
-  nfds_t i;
-
   if (!socket)
     return;
 
-  for (i = 0; i < socket->fd_num; i++)
+  for (nfds_t i = 0; i < socket->fd_num; i++)
   {
     if (socket->fd[i].fd < 0)
       continue;
@@ -502,7 +497,6 @@ static int receive_loop (void) /* {{{ */
   while (!collector_thread_do_shutdown)
   {
     int status;
-    nfds_t i;
 
     if (s->fd_num < 1)
       break;
@@ -525,7 +519,7 @@ static int receive_loop (void) /* {{{ */
       return (-1);
     }
 
-    for (i = 0; i < s->fd_num; i++)
+    for (nfds_t i = 0; i < s->fd_num; i++)
     {
       if (s->fd[i].revents & (POLLERR | POLLHUP | POLLNVAL))
       {
@@ -565,13 +559,12 @@ static int pinba_config_view (const oconfig_item_t *ci) /* {{{ */
   char *server = NULL;
   char *script = NULL;
   int status;
-  int i;
 
   status = cf_util_get_string (ci, &name);
   if (status != 0)
     return (status);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -604,13 +597,11 @@ static int pinba_config_view (const oconfig_item_t *ci) /* {{{ */
 
 static int plugin_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
   /* The lock should not be necessary in the config callback, but let's be
    * sure.. */
   pthread_mutex_lock (&stat_nodes_lock);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 0a9bc44..4932bae 100644 (file)
@@ -152,11 +152,10 @@ static void time_calc (struct timespec *ts_dest, /* {{{ */
 
 static int ping_dispatch_all (pingobj_t *pingobj) /* {{{ */
 {
-  pingobj_iter_t *iter;
   hostlist_t *hl;
   int status;
 
-  for (iter = ping_iterator_get (pingobj);
+  for (pingobj_iter_t *iter = ping_iterator_get (pingobj);
       iter != NULL;
       iter = ping_iterator_next (iter))
   { /* {{{ */
@@ -251,7 +250,6 @@ static void *ping_thread (void *arg) /* {{{ */
   struct timespec ts_wait;
   struct timespec ts_int;
 
-  hostlist_t *hl;
   int count;
 
   c_complain_t complaint = C_COMPLAIN_INIT_STATIC;
@@ -287,7 +285,7 @@ static void *ping_thread (void *arg) /* {{{ */
 
   /* Add all the hosts to the ping object. */
   count = 0;
-  for (hl = hostlist_head; hl != NULL; hl = hl->next)
+  for (hostlist_t *hl = hostlist_head; hl != NULL; hl = hl->next)
   {
     int tmp_status;
     tmp_status = ping_host_add (pingobj, hl->host);
@@ -385,7 +383,7 @@ static int start_thread (void) /* {{{ */
   if (ping_thread_loop != 0)
   {
     pthread_mutex_unlock (&ping_lock);
-    return (-1);
+    return (0);
   }
 
   ping_thread_loop = 1;
@@ -450,10 +448,7 @@ static int ping_init (void) /* {{{ */
         "Will use a timeout of %gs.", ping_timeout);
   }
 
-  if (start_thread () != 0)
-    return (-1);
-
-  return (0);
+  return (start_thread ());
 } /* }}} int ping_init */
 
 static int config_set_string (const char *name, /* {{{ */
@@ -550,8 +545,6 @@ static int ping_config (const char *key, const char *value) /* {{{ */
     /* Max IP packet size - (IPv6 + ICMP) = 65535 - (40 + 8) = 65487 */
     if (size <= 65487)
     {
-      size_t i;
-
       sfree (ping_data);
       ping_data = malloc (size + 1);
       if (ping_data == NULL)
@@ -567,7 +560,7 @@ static int ping_config (const char *key, const char *value) /* {{{ */
        * Optimally we would follow the ping(1) behaviour, but we
        * cannot use byte 00 or start data payload at exactly same
        * location, due to oping library limitations. */
-      for (i = 0; i < size; i++) /* {{{ */
+      for (size_t i = 0; i < size; i++) /* {{{ */
       {
         /* This restricts data pattern to be only composed of easily
          * printable characters, and not NUL character. */
@@ -623,15 +616,13 @@ static void submit (const char *host, const char *type, /* {{{ */
 
 static int ping_read (void) /* {{{ */
 {
-  hostlist_t *hl;
-
   if (ping_thread_error != 0)
   {
     ERROR ("ping plugin: The ping thread had a problem. Restarting it.");
 
     stop_thread ();
 
-    for (hl = hostlist_head; hl != NULL; hl = hl->next)
+    for (hostlist_t *hl = hostlist_head; hl != NULL; hl = hl->next)
     {
       hl->pkg_sent = 0;
       hl->pkg_recv = 0;
@@ -644,7 +635,7 @@ static int ping_read (void) /* {{{ */
     return (-1);
   } /* if (ping_thread_error != 0) */
 
-  for (hl = hostlist_head; hl != NULL; hl = hl->next) /* {{{ */
+  for (hostlist_t *hl = hostlist_head; hl != NULL; hl = hl->next) /* {{{ */
   {
     uint32_t pkg_sent;
     uint32_t pkg_recv;
index 3b125ee..7e69877 100644 (file)
@@ -277,8 +277,6 @@ static c_psql_database_t *c_psql_database_new (const char *name)
 
 static void c_psql_database_delete (void *data)
 {
-       size_t i;
-
        c_psql_database_t *db = data;
 
        --db->ref_cnt;
@@ -296,7 +294,7 @@ static void c_psql_database_delete (void *data)
        db->conn = NULL;
 
        if (db->q_prep_areas)
-               for (i = 0; i < db->queries_num; ++i)
+               for (size_t i = 0; i < db->queries_num; ++i)
                        udb_query_delete_preparation_area (db->q_prep_areas[i]);
        free (db->q_prep_areas);
 
@@ -428,14 +426,13 @@ static PGresult *c_psql_exec_query_params (c_psql_database_t *db,
 {
        const char *params[db->max_params_num];
        char        interval[64];
-       int         i;
 
        if ((data == NULL) || (data->params_num == 0))
                return (c_psql_exec_query_noparams (db, q));
 
        assert (db->max_params_num >= data->params_num);
 
-       for (i = 0; i < data->params_num; ++i) {
+       for (int i = 0; i < data->params_num; ++i) {
                switch (data->params[i]) {
                        case C_PSQL_PARAM_HOST:
                                params[i] = C_PSQL_IS_UNIX_DOMAIN_SOCKET (db->host)
@@ -484,7 +481,6 @@ static int c_psql_exec_query (c_psql_database_t *db, udb_query_t *q,
 
        int rows_num;
        int status;
-       int row, col;
 
        /* The user data may hold parameter information, but may be NULL. */
        data = udb_query_get_user_data (q);
@@ -553,7 +549,7 @@ static int c_psql_exec_query (c_psql_database_t *db, udb_query_t *q,
                BAIL_OUT (-1);
        }
 
-       for (col = 0; col < column_num; ++col) {
+       for (int col = 0; col < column_num; ++col) {
                /* Pointers returned by `PQfname' are freed by `PQclear' via
                 * `BAIL_OUT'. */
                column_names[col] = PQfname (res, col);
@@ -578,7 +574,8 @@ static int c_psql_exec_query (c_psql_database_t *db, udb_query_t *q,
                BAIL_OUT (-1);
        }
 
-       for (row = 0; row < rows_num; ++row) {
+       for (int row = 0; row < rows_num; ++row) {
+        int col;
                for (col = 0; col < column_num; ++col) {
                        /* Pointers returned by `PQgetvalue' are freed by `PQclear' via
                         * `BAIL_OUT'. */
@@ -612,7 +609,6 @@ static int c_psql_read (user_data_t *ud)
        c_psql_database_t *db;
 
        int success = 0;
-       size_t i;
 
        if ((ud == NULL) || (ud->data == NULL)) {
                log_err ("c_psql_read: Invalid user data.");
@@ -632,7 +628,7 @@ static int c_psql_read (user_data_t *ud)
                return -1;
        }
 
-       for (i = 0; i < db->queries_num; ++i)
+       for (size_t i = 0; i < db->queries_num; ++i)
        {
                udb_query_preparation_area_t *prep_area;
                udb_query_t *q;
@@ -660,12 +656,11 @@ static char *values_name_to_sqlarray (const data_set_t *ds,
 {
        char  *str_ptr;
        size_t str_len;
-       size_t i;
 
        str_ptr = string;
        str_len = string_len;
 
-       for (i = 0; i < ds->ds_num; ++i) {
+       for (size_t i = 0; i < ds->ds_num; ++i) {
                int status = ssnprintf (str_ptr, str_len, ",'%s'", ds->ds[i].name);
 
                if (status < 1)
@@ -698,12 +693,11 @@ static char *values_type_to_sqlarray (const data_set_t *ds,
 {
        char  *str_ptr;
        size_t str_len;
-       size_t i;
 
        str_ptr = string;
        str_len = string_len;
 
-       for (i = 0; i < ds->ds_num; ++i) {
+       for (size_t i = 0; i < ds->ds_num; ++i) {
                int status;
 
                if (store_rates)
@@ -746,12 +740,11 @@ static char *values_to_sqlarray (const data_set_t *ds, const value_list_t *vl,
        size_t str_len;
 
        gauge_t *rates = NULL;
-       size_t i;
 
        str_ptr = string;
        str_len = string_len;
 
-       for (i = 0; i < vl->values_len; ++i) {
+       for (size_t i = 0; i < vl->values_len; ++i) {
                int status = 0;
 
                if ((ds->ds[i].type != DS_TYPE_GAUGE)
@@ -831,7 +824,6 @@ static int c_psql_write (const data_set_t *ds, const value_list_t *vl,
        const char *params[9];
 
        int success = 0;
-       size_t i;
 
        if ((ud == NULL) || (ud->data == NULL)) {
                log_err ("c_psql_write: Invalid user data.");
@@ -880,7 +872,7 @@ static int c_psql_write (const data_set_t *ds, const value_list_t *vl,
                        && (db->next_commit == 0))
                c_psql_begin (db);
 
-       for (i = 0; i < db->writers_num; ++i) {
+       for (size_t i = 0; i < db->writers_num; ++i) {
                c_psql_writer_t *writer;
                PGresult *res;
 
@@ -968,14 +960,13 @@ static int c_psql_flush (cdtime_t timeout,
 {
        c_psql_database_t **dbs = databases;
        size_t dbs_num = databases_num;
-       size_t i;
 
        if ((ud != NULL) && (ud->data != NULL)) {
                dbs = (void *)&ud->data;
                dbs_num = 1;
        }
 
-       for (i = 0; i < dbs_num; ++i) {
+       for (size_t i = 0; i < dbs_num; ++i) {
                c_psql_database_t *db = dbs[i];
 
                /* don't commit if the timeout is larger than the regular commit
@@ -989,13 +980,11 @@ static int c_psql_flush (cdtime_t timeout,
 
 static int c_psql_shutdown (void)
 {
-       size_t i = 0;
-
        _Bool had_flush = 0;
 
        plugin_unregister_read_group ("postgresql");
 
-       for (i = 0; i < databases_num; ++i) {
+       for (size_t i = 0; i < databases_num; ++i) {
                c_psql_database_t *db = databases[i];
 
                if (db->writers_num > 0) {
@@ -1140,7 +1129,6 @@ static int c_psql_config_writer (oconfig_item_t *ci)
        c_psql_writer_t *tmp;
 
        int status = 0;
-       int i;
 
        if ((ci->values_num != 1)
                        || (ci->values[0].type != OCONFIG_TYPE_STRING)) {
@@ -1163,7 +1151,7 @@ static int c_psql_config_writer (oconfig_item_t *ci)
        writer->statement = NULL;
        writer->store_rates = 1;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;
 
                if (strcasecmp ("Statement", c->key) == 0)
@@ -1193,8 +1181,6 @@ static int c_psql_config_database (oconfig_item_t *ci)
 
        static _Bool have_flush = 0;
 
-       int i;
-
        if ((1 != ci->values_num)
                        || (OCONFIG_TYPE_STRING != ci->values[0].type)) {
                log_err ("<Database> expects a single string argument.");
@@ -1205,7 +1191,7 @@ static int c_psql_config_database (oconfig_item_t *ci)
        if (db == NULL)
                return -1;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;
 
                if (0 == strcasecmp (c->key, "Host"))
@@ -1242,7 +1228,7 @@ static int c_psql_config_database (oconfig_item_t *ci)
 
        /* If no `Query' options were given, add the default queries.. */
        if ((db->queries_num == 0) && (db->writers_num == 0)){
-               for (i = 0; i < def_queries_num; i++)
+               for (int i = 0; i < def_queries_num; i++)
                        udb_query_pick_from_list_by_name (def_queries[i],
                                        queries, queries_num,
                                        &db->queries, &db->queries_num);
@@ -1259,7 +1245,7 @@ static int c_psql_config_database (oconfig_item_t *ci)
                }
        }
 
-       for (i = 0; (size_t)i < db->queries_num; ++i) {
+       for (int i = 0; (size_t)i < db->queries_num; ++i) {
                c_psql_user_data_t *data;
                data = udb_query_get_user_data (db->queries[i]);
                if ((data != NULL) && (data->params_num > db->max_params_num))
@@ -1312,8 +1298,6 @@ static int c_psql_config (oconfig_item_t *ci)
 {
        static int have_def_config = 0;
 
-       int i;
-
        if (0 == have_def_config) {
                oconfig_item_t *c;
 
@@ -1330,7 +1314,7 @@ static int c_psql_config (oconfig_item_t *ci)
                                        "any queries - please check your installation.");
        }
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;
 
                if (0 == strcasecmp (c->key, "Query"))
index 958a341..e215a8c 100644 (file)
@@ -631,8 +631,6 @@ static int powerdns_read_server (list_item_t *item) /* {{{ */
   saveptr = NULL;
   while ((key = strtok_r (dummy, ",", &saveptr)) != NULL)
   {
-    int i;
-
     dummy = NULL;
 
     value = strchr (key, '=');
@@ -646,6 +644,7 @@ static int powerdns_read_server (list_item_t *item) /* {{{ */
       continue;
 
     /* Check if this item was requested. */
+    int i;
     for (i = 0; i < fields_num; i++)
       if (strcasecmp (key, fields[i]) == 0)
        break;
@@ -781,7 +780,6 @@ static int powerdns_read_recursor (list_item_t *item) /* {{{ */
 static int powerdns_config_add_collect (list_item_t *li, /* {{{ */
     oconfig_item_t *ci)
 {
-  int i;
   char **temp;
 
   if (ci->values_num < 1)
@@ -791,7 +789,7 @@ static int powerdns_config_add_collect (list_item_t *li, /* {{{ */
     return (-1);
   }
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
     if (ci->values[i].type != OCONFIG_TYPE_STRING)
     {
       WARNING ("powerdns plugin: Only string arguments are allowed to "
@@ -808,7 +806,7 @@ static int powerdns_config_add_collect (list_item_t *li, /* {{{ */
   }
   li->fields = temp;
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
     li->fields[li->fields_num] = strdup (ci->values[i].value.string);
     if (li->fields[li->fields_num] == NULL)
@@ -831,7 +829,6 @@ static int powerdns_config_add_server (oconfig_item_t *ci) /* {{{ */
 
   list_item_t *item;
   int status;
-  int i;
 
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
@@ -880,7 +877,7 @@ static int powerdns_config_add_server (oconfig_item_t *ci) /* {{{ */
   }
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -940,8 +937,6 @@ static int powerdns_config_add_server (oconfig_item_t *ci) /* {{{ */
 
 static int powerdns_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
   DEBUG ("powerdns plugin: powerdns_config (ci = %p);", (void *) ci);
 
   if (list == NULL)
@@ -955,7 +950,7 @@ static int powerdns_config (oconfig_item_t *ci) /* {{{ */
     }
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -988,9 +983,7 @@ static int powerdns_config (oconfig_item_t *ci) /* {{{ */
 
 static int powerdns_read (void)
 {
-  llentry_t *e;
-
-  for (e = llist_head (list); e != NULL; e = e->next)
+  for (llentry_t *e = llist_head (list); e != NULL; e = e->next)
   {
     list_item_t *item = e->value;
     item->func (item);
@@ -1001,12 +994,10 @@ static int powerdns_read (void)
 
 static int powerdns_shutdown (void)
 {
-  llentry_t *e;
-
   if (list == NULL)
     return (0);
 
-  for (e = llist_head (list); e != NULL; e = e->next)
+  for (llentry_t *e = llist_head (list); e != NULL; e = e->next)
   {
     list_item_t *item = (list_item_t *) e->value;
     e->value = NULL;
index b8cb192..d34fe40 100644 (file)
@@ -391,13 +391,12 @@ static void ps_update_counter (_Bool init, derive_t *group_counter,
 /* add process entry to 'instances' of process 'name' (or refresh it) */
 static void ps_list_add (const char *name, const char *cmdline, procstat_entry_t *entry)
 {
-       procstat_t *ps;
        procstat_entry_t *pse;
 
        if (entry->id == 0)
                return;
 
-       for (ps = list_head_g; ps != NULL; ps = ps->next)
+       for (procstat_t *ps = list_head_g; ps != NULL; ps = ps->next)
        {
                _Bool want_init;
 
@@ -483,11 +482,10 @@ static void ps_list_add (const char *name, const char *cmdline, procstat_entry_t
 /* remove old entries from instances of processes in list_head_g */
 static void ps_list_reset (void)
 {
-       procstat_t *ps;
        procstat_entry_t *pse;
        procstat_entry_t *pse_prev;
 
-       for (ps = list_head_g; ps != NULL; ps = ps->next)
+       for (procstat_t *ps = list_head_g; ps != NULL; ps = ps->next)
        {
                ps->num_proc    = 0;
                ps->num_lwp     = 0;
@@ -539,15 +537,13 @@ static void ps_list_reset (void)
 /* put all pre-defined 'Process' names from config to list_head_g tree */
 static int ps_config (oconfig_item_t *ci)
 {
-       int i;
-
 #if KERNEL_LINUX
        const size_t max_procname_len = 15;
 #elif KERNEL_SOLARIS || KERNEL_FREEBSD
        const size_t max_procname_len = MAXCOMLEN -1;
 #endif
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;
 
                if (strcasecmp (c->key, "Process") == 0)
@@ -1468,13 +1464,12 @@ static int ps_read_process(long pid, procstat_t *ps, char *state)
 static int read_fork_rate (void)
 {
        extern kstat_ctl_t *kc;
-       kstat_t *ksp_chain = NULL;
        derive_t result = 0;
 
        if (kc == NULL)
                return (-1);
 
-       for (ksp_chain = kc->kc_chain;
+       for (kstat_t *ksp_chain = kc->kc_chain;
                        ksp_chain != NULL;
                        ksp_chain = ksp_chain->ks_next)
        {
@@ -1540,17 +1535,14 @@ static int ps_read (void)
 #if HAVE_THREAD_INFO
        kern_return_t            status;
 
-       int                      pset;
        processor_set_t          port_pset_priv;
 
-       int                      task;
        task_array_t             task_list;
        mach_msg_type_number_t   task_list_len;
 
        int                      task_pid;
        char                     task_name[MAXCOMLEN + 1];
 
-       int                      thread;
        thread_act_array_t       thread_list;
        mach_msg_type_number_t   thread_list_len;
        thread_basic_info_data_t thread_data;
@@ -1575,7 +1567,7 @@ static int ps_read (void)
         * Tasks are assigned to sets of processors, so that's where you go to
         * get a list.
         */
-       for (pset = 0; pset < pset_list_len; pset++)
+       for (int pset = 0; pset < pset_list_len; pset++)
        {
                if ((status = host_processor_set_priv (port_host_self,
                                                pset_list[pset],
@@ -1596,7 +1588,7 @@ static int ps_read (void)
                        continue;
                }
 
-               for (task = 0; task < task_list_len; task++)
+               for (int task = 0; task < task_list_len; task++)
                {
                        ps = NULL;
                        if (mach_get_task_name (task_list[task],
@@ -1694,7 +1686,7 @@ static int ps_read (void)
                                continue; /* with next task_list */
                        }
 
-                       for (thread = 0; thread < thread_list_len; thread++)
+                       for (int thread = 0; thread < thread_list_len; thread++)
                        {
                                thread_data_len = THREAD_BASIC_INFO_COUNT;
                                status = thread_info (thread_list[thread],
@@ -1825,8 +1817,6 @@ static int ps_read (void)
        procstat_entry_t pse;
        char       state;
 
-       procstat_t *ps_ptr;
-
        running = sleeping = zombies = stopped = paging = blocked = 0;
        ps_list_reset ();
 
@@ -1907,7 +1897,7 @@ static int ps_read (void)
        ps_submit_state ("paging",   paging);
        ps_submit_state ("blocked",  blocked);
 
-       for (ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next)
+       for (procstat_t *ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next)
                ps_submit_proc_list (ps_ptr);
 
        read_fork_rate();
@@ -1927,9 +1917,7 @@ static int ps_read (void)
        struct kinfo_proc *procs;          /* array of processes */
        struct kinfo_proc *proc_ptr = NULL;
        int count;                         /* returns number of processes */
-       int i;
 
-       procstat_t *ps_ptr;
        procstat_entry_t pse;
 
        ps_list_reset ();
@@ -1954,7 +1942,7 @@ static int ps_read (void)
        }
 
        /* Iterate through the processes in kinfo_proc */
-       for (i = 0; i < count; i++)
+       for (int i = 0; i < count; i++)
        {
                /* Create only one process list entry per _process_, i.e.
                 * filter out threads (duplicate PID entries). */
@@ -2057,7 +2045,7 @@ static int ps_read (void)
        ps_submit_state ("idle",     idle);
        ps_submit_state ("wait",     wait);
 
-       for (ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next)
+       for (procstat_t *ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next)
                ps_submit_proc_list (ps_ptr);
 /* #endif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_FREEBSD */
 
@@ -2075,9 +2063,7 @@ static int ps_read (void)
        struct kinfo_proc *procs;          /* array of processes */
        struct kinfo_proc *proc_ptr = NULL;
        int count;                         /* returns number of processes */
-       int i;
 
-       procstat_t *ps_ptr;
        procstat_entry_t pse;
 
        ps_list_reset ();
@@ -2102,7 +2088,7 @@ static int ps_read (void)
        }
 
        /* Iterate through the processes in kinfo_proc */
-       for (i = 0; i < count; i++)
+       for (int i = 0; i < count; i++)
        {
                /* Create only one process list entry per _process_, i.e.
                 * filter out threads (duplicate PID entries). */
@@ -2194,7 +2180,7 @@ static int ps_read (void)
        ps_submit_state ("idle",     idle);
        ps_submit_state ("dead",     dead);
 
-       for (ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next)
+       for (procstat_t *ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next)
                ps_submit_proc_list (ps_ptr);
 /* #endif HAVE_LIBKVM_GETPROCS && HAVE_STRUCT_KINFO_PROC_OPENBSD */
 
@@ -2210,7 +2196,6 @@ static int ps_read (void)
        pid_t pindex = 0;
        int nprocs;
 
-       procstat_t *ps;
        procstat_entry_t pse;
 
        ps_list_reset ();
@@ -2218,9 +2203,7 @@ static int ps_read (void)
                                        /* fdsinfo = */ NULL, sizeof(struct fdsinfo64),
                                        &pindex, MAXPROCENTRY)) > 0)
        {
-               int i;
-
-               for (i = 0; i < nprocs; i++)
+               for (int i = 0; i < nprocs; i++)
                {
                        tid64_t thindex;
                        int nthreads;
@@ -2331,7 +2314,7 @@ static int ps_read (void)
        ps_submit_state ("paging",   paging);
        ps_submit_state ("blocked",  blocked);
 
-       for (ps = list_head_g; ps != NULL; ps = ps->next)
+       for (procstat_t *ps = list_head_g; ps != NULL; ps = ps->next)
                ps_submit_proc_list (ps);
 /* #endif HAVE_PROCINFO_H */
 
@@ -2355,7 +2338,6 @@ static int ps_read (void)
        DIR *proc;
 
        int status;
-       procstat_t *ps_ptr;
        char state;
 
        char cmdline[PRARGSZ];
@@ -2445,7 +2427,7 @@ static int ps_read (void)
        ps_submit_state ("system",   system);
        ps_submit_state ("orphan",   orphan);
 
-       for (ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next)
+       for (procstat_t *ps_ptr = list_head_g; ps_ptr != NULL; ps_ptr = ps_ptr->next)
                ps_submit_proc_list (ps_ptr);
 
        read_fork_rate();
index 1576057..24046de 100644 (file)
@@ -219,7 +219,9 @@ static char reg_shutdown_doc[] = "register_shutdown(callback[, data][, name]) ->
                "    data if it was supplied.";
 
 
-static int do_interactive = 0;
+static pthread_t main_thread;
+static PyOS_sighandler_t python_sigint_handler;
+static _Bool do_interactive = 0;
 
 /* This is our global thread state. Python saves some stuff in thread-local
  * storage. So if we allow the interpreter to run in the background
@@ -271,7 +273,7 @@ static void cpy_build_name(char *buf, size_t size, PyObject *callback, const cha
 }
 
 void cpy_log_exception(const char *context) {
-       int l = 0, i;
+       int l = 0;
        const char *typename = NULL, *message = NULL;
        PyObject *type, *value, *traceback, *tn, *m, *list;
 
@@ -304,7 +306,7 @@ void cpy_log_exception(const char *context) {
        if (list)
                l = PyObject_Length(list);
 
-       for (i = 0; i < l; ++i) {
+       for (int i = 0; i < l; ++i) {
                PyObject *line;
                char const *msg;
                char *cpy;
@@ -353,7 +355,6 @@ static int cpy_read_callback(user_data_t *data) {
 }
 
 static int cpy_write_callback(const data_set_t *ds, const value_list_t *value_list, user_data_t *data) {
-       size_t i;
        cpy_callback_t *c = data->data;
        PyObject *ret, *list, *temp, *dict = NULL;
        Values *v;
@@ -364,7 +365,7 @@ static int cpy_write_callback(const data_set_t *ds, const value_list_t *value_li
                        cpy_log_exception("write callback");
                        CPY_RETURN_FROM_THREADS 0;
                }
-               for (i = 0; i < value_list->values_len; ++i) {
+               for (size_t i = 0; i < value_list->values_len; ++i) {
                        if (ds->ds[i].type == DS_TYPE_COUNTER) {
                                PyList_SetItem(list, i, PyLong_FromUnsignedLongLong(value_list->values[i].counter));
                        } else if (ds->ds[i].type == DS_TYPE_GAUGE) {
@@ -393,7 +394,7 @@ static int cpy_write_callback(const data_set_t *ds, const value_list_t *value_li
                        meta_data_t *meta = value_list->meta;
 
                        num = meta_data_toc(meta, &table);
-                       for (i = 0; i < num; ++i) {
+                       for (size_t i = 0; i < num; ++i) {
                                int type;
                                char *string;
                                int64_t si;
@@ -572,7 +573,6 @@ static PyObject *float_or_none(float number) {
 }
 
 static PyObject *cpy_get_dataset(PyObject *self, PyObject *args) {
-       size_t i;
        char *name;
        const data_set_t *ds;
        PyObject *list, *tuple;
@@ -585,7 +585,7 @@ static PyObject *cpy_get_dataset(PyObject *self, PyObject *args) {
                return NULL;
        }
        list = PyList_New(ds->ds_num); /* New reference. */
-       for (i = 0; i < ds->ds_num; ++i) {
+       for (size_t i = 0; i < ds->ds_num; ++i) {
                tuple = PyTuple_New(4);
                PyTuple_SET_ITEM(tuple, 0, cpy_string_to_unicode_or_bytes(ds->ds[i].name));
                PyTuple_SET_ITEM(tuple, 1, cpy_string_to_unicode_or_bytes(DS_TYPE_TO_STRING(ds->ds[i].type)));
@@ -894,14 +894,13 @@ static PyMethodDef cpy_methods[] = {
 };
 
 static int cpy_shutdown(void) {
-       cpy_callback_t *c;
        PyObject *ret;
 
        /* This can happen if the module was loaded but not configured. */
        if (state != NULL)
                PyEval_RestoreThread(state);
 
-       for (c = cpy_shutdown_callbacks; c; c = c->next) {
+       for (cpy_callback_t *c = cpy_shutdown_callbacks; c; c = c->next) {
                ret = PyObject_CallFunctionObjArgs(c->callback, c->data, (void *) 0); /* New reference. */
                if (ret == NULL)
                        cpy_log_exception("shutdown callback");
@@ -913,13 +912,8 @@ static int cpy_shutdown(void) {
        return 0;
 }
 
-static void cpy_int_handler(int sig) {
-       return;
-}
-
 static void *cpy_interactive(void *data) {
-       sigset_t sigset;
-       struct sigaction old;
+       PyOS_sighandler_t cur_sig;
 
        /* Signal handler in a plugin? Bad stuff, but the best way to
         * handle it I guess. In an interactive session people will
@@ -929,47 +923,40 @@ static void *cpy_interactive(void *data) {
         * mess. Chances are, this isn't what the user wanted to do.
         *
         * So this is the plan:
-        * 1. Block SIGINT in the main thread.
-        * 2. Install our own signal handler that does nothing.
-        * 3. Unblock SIGINT in the interactive thread.
+        * 1. Restore Python's own signal handler
+        * 2. Tell Python we just forked so it will accept this thread
+        *    as the main one. No version of Python will ever handle
+        *    interrupts anywhere but in the main thread.
+        * 3. After the interactive loop is done, restore collectd's
+        *    SIGINT handler.
+        * 4. Raise SIGINT for a clean shutdown. The signal is sent to
+        *    the main thread to ensure it wakes up the main interval
+        *    sleep so that collectd shuts down immediately not in 10
+        *    seconds.
         *
         * This will make sure that SIGINT won't kill collectd but
-        * still interrupt syscalls like sleep and pause.
-        * It does not raise a KeyboardInterrupt exception because so
-        * far nobody managed to figure out how to do that. */
-       struct sigaction sig_int_action = {
-               .sa_handler = cpy_int_handler
-       };
-       sigaction (SIGINT, &sig_int_action, &old);
-
-       sigemptyset(&sigset);
-       sigaddset(&sigset, SIGINT);
-       pthread_sigmask(SIG_UNBLOCK, &sigset, NULL);
+        * still interrupt syscalls like sleep and pause. */
+
        PyEval_AcquireThread(state);
        if (PyImport_ImportModule("readline") == NULL) {
                /* This interactive session will suck. */
                cpy_log_exception("interactive session init");
-       }
+       }
+       cur_sig = PyOS_setsig(SIGINT, python_sigint_handler);
+       /* We totally forked just now. Everyone saw that, right? */
+       PyOS_AfterFork();
        PyRun_InteractiveLoop(stdin, "<stdin>");
+       PyOS_setsig(SIGINT, cur_sig);
        PyErr_Print();
        PyEval_ReleaseThread(state);
        NOTICE("python: Interactive interpreter exited, stopping collectd ...");
-       /* Restore the original collectd SIGINT handler and raise SIGINT.
-        * The main thread still has SIGINT blocked and there's nothing we
-        * can do about that so this thread will handle it. But that's not
-        * important, except that it won't interrupt the main loop and so
-        * it might take a few seconds before collectd really shuts down. */
-       sigaction (SIGINT, &old, NULL);
-       raise(SIGINT);
-       pause();
+       pthread_kill(main_thread, SIGINT);
        return NULL;
 }
 
 static int cpy_init(void) {
-       cpy_callback_t *c;
        PyObject *ret;
        static pthread_t thread;
-       sigset_t sigset;
 
        if (!Py_IsInitialized()) {
                WARNING("python: Plugin loaded but not configured.");
@@ -978,17 +965,15 @@ static int cpy_init(void) {
        }
        PyEval_InitThreads();
        /* Now it's finally OK to use python threads. */
-       for (c = cpy_init_callbacks; c; c = c->next) {
+       for (cpy_callback_t *c = cpy_init_callbacks; c; c = c->next) {
                ret = PyObject_CallFunctionObjArgs(c->callback, c->data, (void *) 0); /* New reference. */
                if (ret == NULL)
                        cpy_log_exception("init callback");
                else
                        Py_DECREF(ret);
        }
-       sigemptyset(&sigset);
-       sigaddset(&sigset, SIGINT);
-       pthread_sigmask(SIG_BLOCK, &sigset, NULL);
        state = PyEval_SaveThread();
+       main_thread = pthread_self();
        if (do_interactive) {
                if (plugin_thread_create(&thread, NULL, cpy_interactive, NULL)) {
                        ERROR("python: Error creating thread for interactive interpreter.");
@@ -999,14 +984,13 @@ static int cpy_init(void) {
 }
 
 static PyObject *cpy_oconfig_to_pyconfig(oconfig_item_t *ci, PyObject *parent) {
-       int i;
        PyObject *item, *values, *children, *tmp;
 
        if (parent == NULL)
                parent = Py_None;
 
        values = PyTuple_New(ci->values_num); /* New reference. */
-       for (i = 0; i < ci->values_num; ++i) {
+       for (int i = 0; i < ci->values_num; ++i) {
                if (ci->values[i].type == OCONFIG_TYPE_STRING) {
                        PyTuple_SET_ITEM(values, i, cpy_string_to_unicode_or_bytes(ci->values[i].value.string));
                } else if (ci->values[i].type == OCONFIG_TYPE_NUMBER) {
@@ -1021,7 +1005,7 @@ static PyObject *cpy_oconfig_to_pyconfig(oconfig_item_t *ci, PyObject *parent) {
        if (item == NULL)
                return NULL;
        children = PyTuple_New(ci->children_num); /* New reference. */
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                PyTuple_SET_ITEM(children, i, cpy_oconfig_to_pyconfig(ci->children + i, item));
        }
        tmp = ((Config *) item)->children;
@@ -1045,6 +1029,7 @@ PyMODINIT_FUNC PyInit_collectd(void) {
 #endif
 
 static int cpy_init_python(void) {
+       PyOS_sighandler_t cur_sig;
        PyObject *sys;
        PyObject *module;
 
@@ -1056,7 +1041,10 @@ static int cpy_init_python(void) {
        char *argv = "";
 #endif
 
+       /* Chances are the current signal handler is already SIG_DFL, but let's make sure. */
+       cur_sig = PyOS_setsig(SIGINT, SIG_DFL);
        Py_Initialize();
+       python_sigint_handler = PyOS_setsig(SIGINT, cur_sig);
 
        PyType_Ready(&ConfigType);
        PyType_Ready(&PluginDataType);
@@ -1108,8 +1096,8 @@ static int cpy_init_python(void) {
 }
 
 static int cpy_config(oconfig_item_t *ci) {
-       int i;
        PyObject *tb;
+       int status = 0;
 
        /* Ok in theory we shouldn't do initialization at this point
         * but we have to. In order to give python scripts a chance
@@ -1120,27 +1108,40 @@ static int cpy_config(oconfig_item_t *ci) {
 
        if (!Py_IsInitialized() && cpy_init_python()) return 1;
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *item = ci->children + i;
 
                if (strcasecmp(item->key, "Interactive") == 0) {
-                       if (item->values_num != 1 || item->values[0].type != OCONFIG_TYPE_BOOLEAN)
+                       if (cf_util_get_boolean(item, &do_interactive) != 0) {
+                               status = 1;
                                continue;
-                       do_interactive = item->values[0].value.boolean;
+                       }
                } else if (strcasecmp(item->key, "Encoding") == 0) {
-                       if (item->values_num != 1 || item->values[0].type != OCONFIG_TYPE_STRING)
+                       char *encoding = NULL;
+                       if (cf_util_get_string(item, &encoding) != 0) {
+                               status = 1;
                                continue;
+                       }
 #ifdef IS_PY3K
-                       NOTICE("python: \"Encoding\" was used in the config file but Python3 was used, which does not support changing encodings. Ignoring this.");
+                       ERROR("python: \"Encoding\" was used in the config file but Python3 was used, which does not support changing encodings");
+                       status = 1;
+                       sfree(encoding);
+                       continue;
 #else
                        /* Why is this even necessary? And undocumented? */
-                       if (PyUnicode_SetDefaultEncoding(item->values[0].value.string))
+                       if (PyUnicode_SetDefaultEncoding(encoding)) {
                                cpy_log_exception("setting default encoding");
+                               status = 1;
+                       }
 #endif
+                       sfree(encoding);
                } else if (strcasecmp(item->key, "LogTraces") == 0) {
-                       if (item->values_num != 1 || item->values[0].type != OCONFIG_TYPE_BOOLEAN)
+                       _Bool log_traces;
+                       if (cf_util_get_boolean(item, &log_traces) != 0) {
+                               status = 1;
                                continue;
-                       if (!item->values[0].value.boolean) {
+                       }
+                       if (!log_traces) {
                                Py_XDECREF(cpy_format_exception);
                                cpy_format_exception = NULL;
                                continue;
@@ -1150,30 +1151,37 @@ static int cpy_config(oconfig_item_t *ci) {
                        tb = PyImport_ImportModule("traceback"); /* New reference. */
                        if (tb == NULL) {
                                cpy_log_exception("python initialization");
+                               status = 1;
                                continue;
                        }
                        cpy_format_exception = PyObject_GetAttrString(tb, "format_exception"); /* New reference. */
                        Py_DECREF(tb);
-                       if (cpy_format_exception == NULL)
+                       if (cpy_format_exception == NULL) {
                                cpy_log_exception("python initialization");
+                               status = 1;
+                       }
                } else if (strcasecmp(item->key, "ModulePath") == 0) {
                        char *dir = NULL;
                        PyObject *dir_object;
 
-                       if (cf_util_get_string(item, &dir) != 0)
+                       if (cf_util_get_string(item, &dir) != 0) {
+                               status = 1;
                                continue;
+                       }
                        dir_object = cpy_string_to_unicode_or_bytes(dir); /* New reference. */
                        if (dir_object == NULL) {
                                ERROR("python plugin: Unable to convert \"%s\" to "
                                      "a python object.", dir);
                                free(dir);
                                cpy_log_exception("python initialization");
+                               status = 1;
                                continue;
                        }
                        if (PyList_Insert(sys_path, 0, dir_object) != 0) {
                                ERROR("python plugin: Unable to prepend \"%s\" to "
                                      "python module path.", dir);
                                cpy_log_exception("python initialization");
+                               status = 1;
                        }
                        Py_DECREF(dir_object);
                        free(dir);
@@ -1181,12 +1189,15 @@ static int cpy_config(oconfig_item_t *ci) {
                        char *module_name = NULL;
                        PyObject *module;
 
-                       if (cf_util_get_string(item, &module_name) != 0)
+                       if (cf_util_get_string(item, &module_name) != 0) {
+                               status = 1;
                                continue;
+                       }
                        module = PyImport_ImportModule(module_name); /* New reference. */
                        if (module == NULL) {
                                ERROR("python plugin: Error importing module \"%s\".", module_name);
                                cpy_log_exception("importing module");
+                               status = 1;
                        }
                        free(module_name);
                        Py_XDECREF(module);
@@ -1195,8 +1206,10 @@ static int cpy_config(oconfig_item_t *ci) {
                        cpy_callback_t *c;
                        PyObject *ret;
 
-                       if (cf_util_get_string(item, &name) != 0)
+                       if (cf_util_get_string(item, &name) != 0) {
+                               status = 1;
                                continue;
+                       }
                        for (c = cpy_config_callbacks; c; c = c->next) {
                                if (strcasecmp(c->name + 7, name) == 0)
                                        break;
@@ -1215,15 +1228,17 @@ static int cpy_config(oconfig_item_t *ci) {
                        else
                                ret = PyObject_CallFunction(c->callback, "NO",
                                        cpy_oconfig_to_pyconfig(item, NULL), c->data); /* New reference. */
-                       if (ret == NULL)
+                       if (ret == NULL) {
                                cpy_log_exception("loading module");
-                       else
+                               status = 1;
+                       } else
                                Py_DECREF(ret);
                } else {
-                       WARNING("python plugin: Ignoring unknown config key \"%s\".", item->key);
+                       ERROR("python plugin: Unknown config key \"%s\".", item->key);
+                       status = 1;
                }
        }
-       return 0;
+       return (status);
 }
 
 void module_register(void) {
index 7cb3599..a7cb792 100644 (file)
@@ -416,7 +416,7 @@ static int Values_init(PyObject *s, PyObject *args, PyObject *kwds) {
 }
 
 static meta_data_t *cpy_build_meta(PyObject *meta) {
-       int i, s;
+       int s;
        meta_data_t *m = NULL;
        PyObject *l;
 
@@ -435,7 +435,7 @@ static meta_data_t *cpy_build_meta(PyObject *meta) {
        }
 
        m = meta_data_create();
-       for (i = 0; i < s; ++i) {
+       for (int i = 0; i < s; ++i) {
                const char *string, *keystring;
                PyObject *key, *value, *item, *tmp;
 
@@ -505,7 +505,7 @@ static meta_data_t *cpy_build_meta(PyObject *meta) {
 static PyObject *Values_dispatch(Values *self, PyObject *args, PyObject *kwds) {
        int ret;
        const data_set_t *ds;
-       size_t size, i;
+       size_t size;
        value_t *value;
        value_list_t value_list = VALUE_LIST_INIT;
        PyObject *values = self->values, *meta = self->meta;
@@ -549,22 +549,25 @@ static PyObject *Values_dispatch(Values *self, PyObject *args, PyObject *kwds) {
                return NULL;
        }
        value = calloc(size, sizeof(*value));
-       for (i = 0; i < size; ++i) {
+       for (size_t i = 0; i < size; ++i) {
                PyObject *item, *num;
                item = PySequence_Fast_GET_ITEM(values, (int) i); /* Borrowed reference. */
-               if (ds->ds->type == DS_TYPE_COUNTER) {
+               switch (ds->ds[i].type) {
+               case DS_TYPE_COUNTER:
                        num = PyNumber_Long(item); /* New reference. */
                        if (num != NULL) {
                                value[i].counter = PyLong_AsUnsignedLongLong(num);
                                Py_XDECREF(num);
                        }
-               } else if (ds->ds->type == DS_TYPE_GAUGE) {
+                       break;
+               case DS_TYPE_GAUGE:
                        num = PyNumber_Float(item); /* New reference. */
                        if (num != NULL) {
                                value[i].gauge = PyFloat_AsDouble(num);
                                Py_XDECREF(num);
                        }
-               } else if (ds->ds->type == DS_TYPE_DERIVE) {
+                       break;
+               case DS_TYPE_DERIVE:
                        /* This might overflow without raising an exception.
                         * Not much we can do about it */
                        num = PyNumber_Long(item); /* New reference. */
@@ -572,7 +575,8 @@ static PyObject *Values_dispatch(Values *self, PyObject *args, PyObject *kwds) {
                                value[i].derive = PyLong_AsLongLong(num);
                                Py_XDECREF(num);
                        }
-               } else if (ds->ds->type == DS_TYPE_ABSOLUTE) {
+                       break;
+               case DS_TYPE_ABSOLUTE:
                        /* This might overflow without raising an exception.
                         * Not much we can do about it */
                        num = PyNumber_Long(item); /* New reference. */
@@ -580,9 +584,10 @@ static PyObject *Values_dispatch(Values *self, PyObject *args, PyObject *kwds) {
                                value[i].absolute = PyLong_AsUnsignedLongLong(num);
                                Py_XDECREF(num);
                        }
-               } else {
+                       break;
+               default:
                        free(value);
-                       PyErr_Format(PyExc_RuntimeError, "unknown data type %d for %s", ds->ds->type, value_list.type);
+                       PyErr_Format(PyExc_RuntimeError, "unknown data type %d for %s", ds->ds[i].type, value_list.type);
                        return NULL;
                }
                if (PyErr_Occurred() != NULL) {
@@ -614,7 +619,7 @@ static PyObject *Values_dispatch(Values *self, PyObject *args, PyObject *kwds) {
 static PyObject *Values_write(Values *self, PyObject *args, PyObject *kwds) {
        int ret;
        const data_set_t *ds;
-       size_t size, i;
+       size_t size;
        value_t *value;
        value_list_t value_list = VALUE_LIST_INIT;
        PyObject *values = self->values, *meta = self->meta;
@@ -653,22 +658,25 @@ static PyObject *Values_write(Values *self, PyObject *args, PyObject *kwds) {
                return NULL;
        }
        value = calloc(size, sizeof(*value));
-       for (i = 0; i < size; ++i) {
+       for (size_t i = 0; i < size; ++i) {
                PyObject *item, *num;
                item = PySequence_Fast_GET_ITEM(values, i); /* Borrowed reference. */
-               if (ds->ds->type == DS_TYPE_COUNTER) {
+               switch (ds->ds[i].type) {
+               case DS_TYPE_COUNTER:
                        num = PyNumber_Long(item); /* New reference. */
                        if (num != NULL) {
                                value[i].counter = PyLong_AsUnsignedLongLong(num);
                                Py_XDECREF(num);
                        }
-               } else if (ds->ds->type == DS_TYPE_GAUGE) {
+                       break;
+               case DS_TYPE_GAUGE:
                        num = PyNumber_Float(item); /* New reference. */
                        if (num != NULL) {
                                value[i].gauge = PyFloat_AsDouble(num);
                                Py_XDECREF(num);
                        }
-               } else if (ds->ds->type == DS_TYPE_DERIVE) {
+                       break;
+               case DS_TYPE_DERIVE:
                        /* This might overflow without raising an exception.
                         * Not much we can do about it */
                        num = PyNumber_Long(item); /* New reference. */
@@ -676,7 +684,8 @@ static PyObject *Values_write(Values *self, PyObject *args, PyObject *kwds) {
                                value[i].derive = PyLong_AsLongLong(num);
                                Py_XDECREF(num);
                        }
-               } else if (ds->ds->type == DS_TYPE_ABSOLUTE) {
+                       break;
+               case DS_TYPE_ABSOLUTE:
                        /* This might overflow without raising an exception.
                         * Not much we can do about it */
                        num = PyNumber_Long(item); /* New reference. */
@@ -684,9 +693,10 @@ static PyObject *Values_write(Values *self, PyObject *args, PyObject *kwds) {
                                value[i].absolute = PyLong_AsUnsignedLongLong(num);
                                Py_XDECREF(num);
                        }
-               } else {
+                       break;
+               default:
                        free(value);
-                       PyErr_Format(PyExc_RuntimeError, "unknown data type %d for %s", ds->ds->type, value_list.type);
+                       PyErr_Format(PyExc_RuntimeError, "unknown data type %d for %s", ds->ds[i].type, value_list.type);
                        return NULL;
                }
                if (PyErr_Occurred() != NULL) {
index 5a8c721..7395ba0 100644 (file)
@@ -126,7 +126,6 @@ static redis_query_t *redis_config_query (oconfig_item_t *ci) /* {{{ */
 {
     redis_query_t *rq;
     int status;
-    int i;
 
     rq = calloc(1, sizeof(*rq));
     if (rq == NULL) {
@@ -144,7 +143,7 @@ static redis_query_t *redis_config_query (oconfig_item_t *ci) /* {{{ */
     (void)sstrncpy(rq->instance, rq->query, sizeof(rq->instance));
     replace_special(rq->instance, sizeof(rq->instance));
 
-    for (i = 0; i < ci->children_num; i++) {
+    for (int i = 0; i < ci->children_num; i++) {
         oconfig_item_t *option = ci->children + i;
 
         if (strcasecmp("Type", option->key) == 0) {
@@ -167,7 +166,6 @@ static redis_query_t *redis_config_query (oconfig_item_t *ci) /* {{{ */
 static int redis_config_node (oconfig_item_t *ci) /* {{{ */
 {
   redis_query_t *rq;
-  int i;
   int status;
   int timeout;
 
@@ -182,7 +180,7 @@ static int redis_config_node (oconfig_item_t *ci) /* {{{ */
   if (status != 0)
     return (status);
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -230,9 +228,7 @@ static int redis_config_node (oconfig_item_t *ci) /* {{{ */
 
 static int redis_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -380,10 +376,7 @@ static int redis_handle_query (redisContext *rh, redis_node_t *rn, redis_query_t
 
 static int redis_read (void) /* {{{ */
 {
-  redis_node_t *rn;
-  redis_query_t *rq;
-
-  for (rn = nodes_head; rn != NULL; rn = rn->next)
+  for (redis_node_t *rn = nodes_head; rn != NULL; rn = rn->next)
   {
     redisContext *rh;
     redisReply   *rr;
@@ -442,7 +435,7 @@ static int redis_read (void) /* {{{ */
     redis_handle_info (rn->name, rr->str, "total_bytes", "input", "total_net_input_bytes", DS_TYPE_DERIVE);
     redis_handle_info (rn->name, rr->str, "total_bytes", "output", "total_net_output_bytes", DS_TYPE_DERIVE);
 
-    for (rq = rn->queries; rq != NULL; rq = rq->next)
+    for (redis_query_t *rq = rn->queries; rq != NULL; rq = rq->next)
         redis_handle_query(rh, rn, rq);
 
 redis_fail:
index 3cbbebc..a270f48 100644 (file)
@@ -327,7 +327,6 @@ static int cr_config_router (oconfig_item_t *ci) /* {{{ */
   char read_name[128];
   user_data_t user_data;
   int status;
-  int i;
 
   router_data = calloc (1, sizeof (*router_data));
   if (router_data == NULL)
@@ -339,7 +338,7 @@ static int cr_config_router (oconfig_item_t *ci) /* {{{ */
   router_data->password = NULL;
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -424,9 +423,7 @@ static int cr_config_router (oconfig_item_t *ci) /* {{{ */
 
 static int cr_config (oconfig_item_t *ci)
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 89367d4..0425419 100644 (file)
@@ -70,7 +70,6 @@ static int value_list_to_string (char *buffer, int buffer_len,
 {
   int offset;
   int status;
-  size_t i;
   time_t t;
 
   assert (0 == strcmp (ds->type, vl->type));
@@ -83,7 +82,7 @@ static int value_list_to_string (char *buffer, int buffer_len,
     return (-1);
   offset = status;
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     if ((ds->ds[i].type != DS_TYPE_COUNTER)
         && (ds->ds[i].type != DS_TYPE_GAUGE)
@@ -218,9 +217,7 @@ static int rc_config_add_timespan (int timespan)
 
 static int rc_config (oconfig_item_t *ci)
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t const *child = ci->children + i;
     const char *key = child->key;
@@ -294,7 +291,6 @@ static int rc_read (void)
 {
   int status;
   rrdc_stats_t *head;
-  rrdc_stats_t *ptr;
 
   value_t values[1];
   value_list_t vl = VALUE_LIST_INIT;
@@ -331,7 +327,7 @@ static int rc_read (void)
     return (-1);
   }
 
-  for (ptr = head; ptr != NULL; ptr = ptr->next)
+  for (rrdc_stats_t *ptr = head; ptr != NULL; ptr = ptr->next)
   {
     if (ptr->type == RRDC_STATS_TYPE_GAUGE)
       values[0].gauge = (gauge_t) ptr->value.gauge;
index 6166ecf..094dd42 100644 (file)
@@ -201,7 +201,6 @@ static int value_list_to_string_multiple (char *buffer, int buffer_len,
        int offset;
        int status;
        time_t tt;
-       size_t i;
 
        memset (buffer, '\0', buffer_len);
 
@@ -211,7 +210,7 @@ static int value_list_to_string_multiple (char *buffer, int buffer_len,
                return (-1);
        offset = status;
 
-       for (i = 0; i < ds->ds_num; i++)
+       for (size_t i = 0; i < ds->ds_num; i++)
        {
                if ((ds->ds[i].type != DS_TYPE_COUNTER)
                                && (ds->ds[i].type != DS_TYPE_GAUGE)
@@ -332,7 +331,6 @@ static void *rrd_queue_thread (void __attribute__((unused)) *data)
                char **values;
                int    values_num;
                int    status;
-               int    i;
 
                values = NULL;
                values_num = 0;
@@ -413,7 +411,7 @@ static void *rrd_queue_thread (void __attribute__((unused)) *data)
                pthread_mutex_unlock (&queue_lock);
 
                /* We now need the cache lock so the entry isn't updated while
-                * we make a copy of it's values */
+                * we make a copy of its values */
                pthread_mutex_lock (&cache_lock);
 
                status = c_avl_get (cache, queue_entry->filename,
@@ -459,7 +457,7 @@ static void *rrd_queue_thread (void __attribute__((unused)) *data)
                                values_num, (values_num == 1) ? "" : "s",
                                queue_entry->filename);
 
-               for (i = 0; i < values_num; i++)
+               for (int i = 0; i < values_num; i++)
                {
                        sfree (values[i]);
                }
@@ -557,7 +555,6 @@ static void rrd_cache_flush (cdtime_t timeout)
 
        char *key;
        c_avl_iterator_t *iter;
-       int i;
 
        DEBUG ("rrdtool plugin: Flushing cache, timeout = %.3f",
                        CDTIME_T_TO_DOUBLE (timeout));
@@ -605,7 +602,7 @@ static void rrd_cache_flush (cdtime_t timeout)
        } /* while (c_avl_iterator_next) */
        c_avl_iterator_destroy (iter);
 
-       for (i = 0; i < keys_num; i++)
+       for (int i = 0; i < keys_num; i++)
        {
                if (c_avl_remove (cache, keys[i], (void *) &key, (void *) &rc) != 0)
                {
@@ -857,7 +854,6 @@ static int rrd_cache_destroy (void) /* {{{ */
   while (c_avl_pick (cache, &key, &value) == 0)
   {
     rrd_cache_t *rc;
-    int i;
 
     sfree (key);
     key = NULL;
@@ -868,7 +864,7 @@ static int rrd_cache_destroy (void) /* {{{ */
     if (rc->values_num > 0)
       non_empty++;
 
-    for (i = 0; i < rc->values_num; i++)
+    for (int i = 0; i < rc->values_num; i++)
       sfree (rc->values[i]);
     sfree (rc->values);
     sfree (rc);
index 14dce2e..de2a4f7 100644 (file)
@@ -216,11 +216,9 @@ static int sensors_snprintf_chip_name (char *buf, size_t buf_size,
 
 static int sensors_feature_name_to_type (const char *name)
 {
-       int i;
-
        /* Yes, this is slow, but it's only ever done during initialization, so
         * it's a one time cost.. */
-       for (i = 0; i < known_features_num; i++)
+       for (int i = 0; i < known_features_num; i++)
                if (strcasecmp (known_features[i].label, name) == 0)
                        return (known_features[i].type);
 
@@ -276,7 +274,6 @@ static int sensors_config (const char *key, const char *value)
 
 static void sensors_free_features (void)
 {
-       featurelist_t *thisft;
        featurelist_t *nextft;
 
        if (first_feature == NULL)
@@ -284,7 +281,7 @@ static void sensors_free_features (void)
 
        sensors_cleanup ();
 
-       for (thisft = first_feature; thisft != NULL; thisft = nextft)
+       for (featurelist_t *thisft = first_feature; thisft != NULL; thisft = nextft)
        {
                nextft = thisft->next;
                sfree (thisft);
@@ -522,13 +519,11 @@ static void sensors_submit (const char *plugin_instance,
 
 static int sensors_read (void)
 {
-       featurelist_t *fl;
-
        if (sensors_load_conf () != 0)
                return (-1);
 
 #if SENSORS_API_VERSION < 0x400
-       for (fl = first_feature; fl != NULL; fl = fl->next)
+       for (featurelist_t *fl = first_feature; fl != NULL; fl = fl->next)
        {
                double value;
                int status;
@@ -556,7 +551,7 @@ static int sensors_read (void)
 /* #endif SENSORS_API_VERSION < 0x400 */
 
 #elif (SENSORS_API_VERSION >= 0x400) && (SENSORS_API_VERSION < 0x500)
-       for (fl = first_feature; fl != NULL; fl = fl->next)
+       for (featurelist_t *fl = first_feature; fl != NULL; fl = fl->next)
        {
                double value;
                int status;
index 3f7e92d..cf7ad2a 100644 (file)
@@ -74,7 +74,6 @@ static int serial_read (void)
 
                char *fields[16];
                int numfields;
-               int i;
 
                numfields = strsplit (buffer, fields, STATIC_ARRAY_SIZE (fields));
                if (numfields < 6)
@@ -91,7 +90,7 @@ static int serial_read (void)
                        continue;
                fields[0][len - 1] = 0;
 
-               for (i = 1; i < numfields; i++)
+               for (int i = 1; i < numfields; i++)
                {
                        len = strlen (fields[i]);
                        if (len < 4)
index e7aab7f..4006455 100644 (file)
@@ -70,7 +70,6 @@ static int sigrok_log_callback(void*cb_data __attribute__((unused)),
 static int sigrok_config_device(oconfig_item_t *ci)
 {
        struct config_device *cfdev;
-       int i;
 
        if (!(cfdev = calloc(1, sizeof(*cfdev)))) {
                ERROR("sigrok plugin: calloc failed.");
@@ -83,7 +82,7 @@ static int sigrok_config_device(oconfig_item_t *ci)
        }
        cfdev->min_dispatch_interval = DEFAULT_MIN_DISPATCH_INTERVAL;
 
-       for (i = 0; i < ci->children_num; i++) {
+       for (int i = 0; i < ci->children_num; i++) {
                oconfig_item_t *item = ci->children + i;
                if (!strcasecmp(item->key, "driver"))
                        cf_util_get_string(item, &cfdev->driver);
@@ -105,9 +104,7 @@ static int sigrok_config_device(oconfig_item_t *ci)
 
 static int sigrok_config(oconfig_item_t *ci)
 {
-       int i;
-
-       for (i = 0; i < ci->children_num; i++) {
+       for (int i = 0; i < ci->children_num; i++) {
                oconfig_item_t *item = ci->children + i;
                if (strcasecmp("LogLevel", item->key) == 0) {
                        int status;
@@ -164,13 +161,12 @@ static void sigrok_feed_callback(const struct sr_dev_inst *sdi,
 {
        const struct sr_datafeed_analog *analog;
        struct config_device *cfdev;
-       GSList *l;
        value_t value;
        value_list_t vl = VALUE_LIST_INIT;
 
        /* Find this device's configuration. */
        cfdev = NULL;
-       for (l = config_devices; l; l = l->next) {
+       for (GSList *l = config_devices; l; l = l->next) {
                cfdev = l->data;
                if (cfdev->sdi == sdi) {
                        /* Found it. */
index 60bec83..8b32730 100644 (file)
@@ -165,9 +165,8 @@ static int csnmp_oid_to_string (char *buffer, size_t buffer_size,
 {
   char oid_str[MAX_OID_LEN][16];
   char *oid_str_ptr[MAX_OID_LEN];
-  size_t i;
 
-  for (i = 0; i < o->oid_len; i++)
+  for (size_t i = 0; i < o->oid_len; i++)
   {
     ssnprintf (oid_str[i], sizeof (oid_str[i]), "%lu", (unsigned long) o->oid[i]);
     oid_str_ptr[i] = oid_str[i];
@@ -292,15 +291,13 @@ static int csnmp_config_add_data_instance_prefix (data_definition_t *dd,
 
 static int csnmp_config_add_data_values (data_definition_t *dd, oconfig_item_t *ci)
 {
-  int i;
-
   if (ci->values_num < 1)
   {
     WARNING ("snmp plugin: `Values' needs at least one argument.");
     return (-1);
   }
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
     if (ci->values[i].type != OCONFIG_TYPE_STRING)
     {
       WARNING ("snmp plugin: `Values' needs only string argument.");
@@ -314,7 +311,7 @@ static int csnmp_config_add_data_values (data_definition_t *dd, oconfig_item_t *
     return (-1);
   dd->values_len = (size_t) ci->values_num;
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
     dd->values[i].oid_len = MAX_OID_LEN;
 
@@ -335,12 +332,10 @@ static int csnmp_config_add_data_values (data_definition_t *dd, oconfig_item_t *
 
 static int csnmp_config_add_data_blacklist(data_definition_t *dd, oconfig_item_t *ci)
 {
-  int i;
-
   if (ci->values_num < 1)
     return (0);
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
     if (ci->values[i].type != OCONFIG_TYPE_STRING)
     {
@@ -352,7 +347,7 @@ static int csnmp_config_add_data_blacklist(data_definition_t *dd, oconfig_item_t
   dd->ignores_len = 0;
   dd->ignores = NULL;
 
-  for (i = 0; i < ci->values_num; ++i)
+  for (int i = 0; i < ci->values_num; ++i)
   {
     if (strarray_add(&(dd->ignores), &(dd->ignores_len), ci->values[i].value.string) != 0)
     {
@@ -381,7 +376,6 @@ static int csnmp_config_add_data (oconfig_item_t *ci)
 {
   data_definition_t *dd;
   int status = 0;
-  int i;
 
   dd = calloc (1, sizeof (*dd));
   if (dd == NULL)
@@ -397,7 +391,7 @@ static int csnmp_config_add_data (oconfig_item_t *ci)
   dd->scale = 1.0;
   dd->shift = 0.0;
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -503,7 +497,6 @@ static int csnmp_config_add_host_collect (host_definition_t *host,
   data_definition_t *data;
   data_definition_t **data_list;
   int data_list_len;
-  int i;
 
   if (ci->values_num < 1)
   {
@@ -511,7 +504,7 @@ static int csnmp_config_add_host_collect (host_definition_t *host,
     return (-1);
   }
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
     if (ci->values[i].type != OCONFIG_TYPE_STRING)
     {
       WARNING ("snmp plugin: All arguments to `Collect' must be strings.");
@@ -525,7 +518,7 @@ static int csnmp_config_add_host_collect (host_definition_t *host,
     return (-1);
   host->data_list = data_list;
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
     for (data = data_head; data != NULL; data = data->next)
       if (strcasecmp (ci->values[i].value.string, data->name) == 0)
@@ -638,7 +631,6 @@ static int csnmp_config_add_host (oconfig_item_t *ci)
 {
   host_definition_t *hd;
   int status = 0;
-  int i;
 
   /* Registration stuff. */
   char cb_name[DATA_MAX_NAME_LEN];
@@ -660,7 +652,7 @@ static int csnmp_config_add_host (oconfig_item_t *ci)
   hd->sess_handle = NULL;
   hd->interval = 0;
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
     status = 0;
@@ -790,11 +782,9 @@ static int csnmp_config_add_host (oconfig_item_t *ci)
 
 static int csnmp_config (oconfig_item_t *ci)
 {
-  int i;
-
   call_snmp_init_once ();
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
     if (strcasecmp ("Data", child->key) == 0)
@@ -1055,14 +1045,13 @@ static int csnmp_strvbcopy_hexstring (char *dst, /* {{{ */
 {
   char *buffer_ptr;
   size_t buffer_free;
-  size_t i;
 
   dst[0] = 0;
 
   buffer_ptr = dst;
   buffer_free = dst_size;
 
-  for (i = 0; i < vb->val_len; i++)
+  for (size_t i = 0; i < vb->val_len; i++)
   {
     int status;
 
@@ -1095,7 +1084,6 @@ static int csnmp_strvbcopy (char *dst, /* {{{ */
 {
   char *src;
   size_t num_chars;
-  size_t i;
 
   if (vb->type == ASN_OCTET_STR)
     src = (char *) vb->val.string;
@@ -1119,7 +1107,7 @@ static int csnmp_strvbcopy (char *dst, /* {{{ */
   if (num_chars > vb->val_len)
     num_chars = vb->val_len;
 
-  for (i = 0; i < num_chars; i++)
+  for (size_t i = 0; i < num_chars; i++)
   {
     /* Check for control characters. */
     if ((unsigned char)src[i] < 32)
@@ -1144,7 +1132,6 @@ static int csnmp_instance_list_add (csnmp_list_instances_t **head,
   struct variable_list *vb;
   oid_t vb_name;
   int status;
-  uint32_t i;
   uint32_t is_matched;
 
   /* Set vb on the last variable */
@@ -1179,7 +1166,7 @@ static int csnmp_instance_list_add (csnmp_list_instances_t **head,
 
     csnmp_strvbcopy (il->instance, vb, sizeof (il->instance));
     is_matched = 0;
-    for (i = 0; i < dd->ignores_len; i++)
+    for (uint32_t i = 0; i < dd->ignores_len; i++)
     {
       status = fnmatch(dd->ignores[i], il->instance, 0);
       if (status == 0)
index 7eb5862..040181a 100644 (file)
@@ -502,7 +502,6 @@ static int statsd_network_init (struct pollfd **ret_fds, /* {{{ */
   size_t fds_num = 0;
 
   struct addrinfo *ai_list;
-  struct addrinfo *ai_ptr;
   int status;
 
   char const *node = (conf_node != NULL) ? conf_node : STATSD_DEFAULT_NODE;
@@ -523,7 +522,7 @@ static int statsd_network_init (struct pollfd **ret_fds, /* {{{ */
     return (status);
   }
 
-  for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+  for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
   {
     int fd;
     struct pollfd *tmp;
@@ -590,7 +589,6 @@ static void *statsd_network_thread (void *args) /* {{{ */
   struct pollfd *fds = NULL;
   size_t fds_num = 0;
   int status;
-  size_t i;
 
   status = statsd_network_init (&fds, &fds_num);
   if (status != 0)
@@ -614,7 +612,7 @@ static void *statsd_network_thread (void *args) /* {{{ */
       break;
     }
 
-    for (i = 0; i < fds_num; i++)
+    for (size_t i = 0; i < fds_num; i++)
     {
       if ((fds[i].revents & (POLLIN | POLLPRI)) == 0)
         continue;
@@ -625,7 +623,7 @@ static void *statsd_network_thread (void *args) /* {{{ */
   } /* while (!network_thread_shutdown) */
 
   /* Clean up */
-  for (i = 0; i < fds_num; i++)
+  for (size_t i = 0; i < fds_num; i++)
     close (fds[i].fd);
   sfree (fds);
 
@@ -665,9 +663,7 @@ static int statsd_config_timer_percentile (oconfig_item_t *ci) /* {{{ */
 
 static int statsd_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -780,7 +776,6 @@ static int statsd_metric_submit_unsafe (char const *name, statsd_metric_t *metri
     values[0].gauge = (gauge_t) metric->value;
   else if (metric->type == STATSD_TIMER)
   {
-    size_t i;
     _Bool have_events = (metric->updates_num > 0);
 
     /* Make sure all timer metrics share the *same* timestamp. */
@@ -820,7 +815,7 @@ static int statsd_metric_submit_unsafe (char const *name, statsd_metric_t *metri
       plugin_dispatch_values (&vl);
     }
 
-    for (i = 0; i < conf_timer_percentile_num; i++)
+    for (size_t i = 0; i < conf_timer_percentile_num; i++)
     {
       ssnprintf (vl.type_instance, sizeof (vl.type_instance),
           "%s-percentile-%.0f", name, conf_timer_percentile[i]);
@@ -886,7 +881,6 @@ static int statsd_read (void) /* {{{ */
 
   char **to_be_deleted = NULL;
   size_t to_be_deleted_num = 0;
-  size_t i;
 
   pthread_mutex_lock (&metrics_lock);
 
@@ -921,7 +915,7 @@ static int statsd_read (void) /* {{{ */
   }
   c_avl_iterator_destroy (iter);
 
-  for (i = 0; i < to_be_deleted_num; i++)
+  for (size_t i = 0; i < to_be_deleted_num; i++)
   {
     int status;
 
index 32906fa..15eca9a 100644 (file)
@@ -113,9 +113,7 @@ static _Bool values_percentage = 0;
 
 static int swap_config (oconfig_item_t *ci) /* {{{ */
 {
-       int i;
-
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
                if (strcasecmp ("ReportBytes", child->key) == 0)
@@ -510,7 +508,6 @@ static int swap_read (void) /* {{{ */
        char *s_paths;
         int swap_num;
         int status;
-        int i;
 
         gauge_t avail = 0;
         gauge_t total = 0;
@@ -543,7 +540,7 @@ static int swap_read (void) /* {{{ */
                sfree (s);
                return (-1);
        }
-        for (i = 0; i < swap_num; i++)
+        for (int i = 0; i < swap_num; i++)
                s->swt_ent[i].ste_path = s_paths + (i * PATH_MAX);
         s->swt_n = swap_num;
 
@@ -573,7 +570,7 @@ static int swap_read (void) /* {{{ */
                /* less elements returned than requested */
                swap_num = status;
 
-        for (i = 0; i < swap_num; i++)
+        for (int i = 0; i < swap_num; i++)
         {
                char path[PATH_MAX];
                gauge_t this_total;
@@ -626,7 +623,6 @@ static int swap_read (void) /* {{{ */
        struct swapent *swap_entries;
        int swap_num;
        int status;
-       int i;
 
        gauge_t used  = 0;
        gauge_t total = 0;
@@ -665,7 +661,7 @@ static int swap_read (void) /* {{{ */
 
        /* TODO: Report per-device stats. The path name is available from
         * swap_entries[i].se_path */
-       for (i = 0; i < swap_num; i++)
+       for (int i = 0; i < swap_num; i++)
        {
                if ((swap_entries[i].se_flags & SWF_ENABLE) == 0)
                        continue;
index d2c4249..ba65f41 100644 (file)
@@ -106,13 +106,11 @@ static void tbl_setup (tbl_t *tbl, char *file)
 
 static void tbl_clear (tbl_t *tbl)
 {
-       size_t i;
-
        sfree (tbl->file);
        sfree (tbl->sep);
        sfree (tbl->instance);
 
-       for (i = 0; i < tbl->results_num; ++i)
+       for (size_t i = 0; i < tbl->results_num; ++i)
                tbl_result_clear (tbl->results + i);
        sfree (tbl->results);
        tbl->results_num = 0;
@@ -145,7 +143,6 @@ static int tbl_config_append_array_i (char *name, size_t **var, size_t *len,
 {
        size_t *tmp;
        size_t num;
-       size_t i;
 
        if (1 > ci->values_num) {
                log_err ("\"%s\" expects at least one argument.", name);
@@ -153,7 +150,7 @@ static int tbl_config_append_array_i (char *name, size_t **var, size_t *len,
        }
 
        num = (size_t) ci->values_num;
-       for (i = 0; i < num; ++i) {
+       for (size_t i = 0; i < num; ++i) {
                if (OCONFIG_TYPE_NUMBER != ci->values[i].type) {
                        log_err ("\"%s\" expects numerical arguments only.", name);
                        return 1;
@@ -169,7 +166,7 @@ static int tbl_config_append_array_i (char *name, size_t **var, size_t *len,
        }
        *var = tmp;
 
-       for (i = 0; i < num; ++i) {
+       for (size_t i = 0; i < num; ++i) {
                (*var)[*len] = (size_t) ci->values[i].value.number;
                (*len)++;
        }
@@ -182,7 +179,6 @@ static int tbl_config_result (tbl_t *tbl, oconfig_item_t *ci)
        tbl_result_t *res;
 
        int status = 0;
-       int i;
 
        if (0 != ci->values_num) {
                log_err ("<Result> does not expect any arguments.");
@@ -204,7 +200,7 @@ static int tbl_config_result (tbl_t *tbl, oconfig_item_t *ci)
        res = tbl->results + tbl->results_num - 1;
        tbl_result_setup (res);
 
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;
 
                if (0 == strcasecmp (c->key, "Type"))
@@ -247,7 +243,6 @@ static int tbl_config_table (oconfig_item_t *ci)
        tbl_t *tbl;
 
        int status = 0;
-       size_t i;
 
        if ((1 != ci->values_num)
                        || (OCONFIG_TYPE_STRING != ci->values[0].type)) {
@@ -269,7 +264,7 @@ static int tbl_config_table (oconfig_item_t *ci)
        tbl = tables + tables_num - 1;
        tbl_setup (tbl, ci->values[0].value.string);
 
-       for (i = 0; i < ((size_t) ci->children_num); ++i) {
+       for (size_t i = 0; i < ((size_t) ci->children_num); ++i) {
                oconfig_item_t *c = ci->children + i;
 
                if (0 == strcasecmp (c->key, "Separator"))
@@ -307,15 +302,14 @@ static int tbl_config_table (oconfig_item_t *ci)
                return status;
        }
 
-       for (i = 0; i < tbl->results_num; ++i) {
+       for (size_t i = 0; i < tbl->results_num; ++i) {
                tbl_result_t *res = tbl->results + i;
-               size_t j;
 
-               for (j = 0; j < res->instances_num; ++j)
+               for (size_t j = 0; j < res->instances_num; ++j)
                        if (res->instances[j] > tbl->max_colnum)
                                tbl->max_colnum = res->instances[j];
 
-               for (j = 0; j < res->values_num; ++j)
+               for (size_t j = 0; j < res->values_num; ++j)
                        if (res->values[j] > tbl->max_colnum)
                                tbl->max_colnum = res->values[j];
        }
@@ -324,9 +318,7 @@ static int tbl_config_table (oconfig_item_t *ci)
 
 static int tbl_config (oconfig_item_t *ci)
 {
-       int i;
-
-       for (i = 0; i < ci->children_num; ++i) {
+       for (int i = 0; i < ci->children_num; ++i) {
                oconfig_item_t *c = ci->children + i;
 
                if (0 == strcasecmp (c->key, "Table"))
@@ -343,9 +335,7 @@ static int tbl_config (oconfig_item_t *ci)
 
 static int tbl_prepare (tbl_t *tbl)
 {
-       size_t i;
-
-       for (i = 0; i < tbl->results_num; ++i) {
+       for (size_t i = 0; i < tbl->results_num; ++i) {
                tbl_result_t *res = tbl->results + i;
 
                res->ds = plugin_get_ds (res->type);
@@ -368,9 +358,7 @@ static int tbl_prepare (tbl_t *tbl)
 
 static int tbl_finish (tbl_t *tbl)
 {
-       size_t i;
-
-       for (i = 0; i < tbl->results_num; ++i)
+       for (size_t i = 0; i < tbl->results_num; ++i)
                tbl->results[i].ds = NULL;
        return 0;
 } /* tbl_finish */
@@ -381,12 +369,10 @@ static int tbl_result_dispatch (tbl_t *tbl, tbl_result_t *res,
        value_list_t vl = VALUE_LIST_INIT;
        value_t values[res->values_num];
 
-       size_t i;
-
        assert (NULL != res->ds);
        assert (res->values_num == res->ds->ds_num);
 
-       for (i = 0; i < res->values_num; ++i) {
+       for (size_t i = 0; i < res->values_num; ++i) {
                char *value;
 
                assert (res->values[i] < fields_num);
@@ -413,7 +399,7 @@ static int tbl_result_dispatch (tbl_t *tbl, tbl_result_t *res,
                char *instances[res->instances_num];
                char  instances_str[DATA_MAX_NAME_LEN];
 
-               for (i = 0; i < res->instances_num; ++i) {
+               for (size_t i = 0; i < res->instances_num; ++i) {
                        assert (res->instances[i] < fields_num);
                        instances[i] = fields[res->instances[i]];
                }
@@ -445,9 +431,8 @@ static int tbl_parse_line (tbl_t *tbl, char *line, size_t len)
        char *fields[tbl->max_colnum + 1];
        char *ptr, *saveptr;
 
-       size_t i;
+       size_t i = 0;
 
-       i = 0;
        ptr = line;
        saveptr = NULL;
        while (NULL != (fields[i] = strtok_r (ptr, tbl->sep, &saveptr))) {
@@ -519,12 +504,11 @@ static int tbl_read_table (tbl_t *tbl)
 static int tbl_read (void)
 {
        int status = -1;
-       size_t i;
 
        if (0 == tables_num)
                return 0;
 
-       for (i = 0; i < tables_num; ++i) {
+       for (size_t i = 0; i < tables_num; ++i) {
                tbl_t *tbl = tables + i;
 
                if (0 != tbl_prepare (tbl)) {
@@ -542,9 +526,7 @@ static int tbl_read (void)
 
 static int tbl_shutdown (void)
 {
-       size_t i;
-
-       for (i = 0; i < tables_num; ++i)
+       for (size_t i = 0; i < tables_num; ++i)
                tbl_clear (&tables[i]);
        sfree (tables);
        return 0;
index 732607c..b8922ec 100644 (file)
@@ -140,7 +140,6 @@ static int ctail_config_add_match (cu_tail_match_t *tm,
 {
   ctail_config_match_t cm = { 0 };
   int status;
-  int i;
 
   if (ci->values_num != 0)
   {
@@ -148,7 +147,7 @@ static int ctail_config_add_match (cu_tail_match_t *tm,
   }
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -223,7 +222,6 @@ static int ctail_config_add_file (oconfig_item_t *ci)
   cdtime_t interval = 0;
   char *plugin_instance = NULL;
   int num_matches = 0;
-  int i;
 
   if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING))
   {
@@ -239,7 +237,7 @@ static int ctail_config_add_file (oconfig_item_t *ci)
     return (-1);
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
     int status = 0;
@@ -298,9 +296,7 @@ static int ctail_config_add_file (oconfig_item_t *ci)
 
 static int ctail_config (oconfig_item_t *ci)
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -333,7 +329,6 @@ static int ctail_init (void)
 {
   char str[255];
   user_data_t ud = { 0 };
-  size_t i;
 
   if (tail_match_list_num == 0)
   {
@@ -341,7 +336,7 @@ static int ctail_init (void)
     return (-1);
   }
 
-  for (i = 0; i < tail_match_list_num; i++)
+  for (size_t i = 0; i < tail_match_list_num; i++)
   {
     ud.data = (void *)tail_match_list[i];
     ssnprintf(str, sizeof(str), "tail-%zu", i);
@@ -353,9 +348,7 @@ static int ctail_init (void)
 
 static int ctail_shutdown (void)
 {
-  size_t i;
-
-  for (i = 0; i < tail_match_list_num; i++)
+  for (size_t i = 0; i < tail_match_list_num; i++)
   {
     tail_match_destroy (tail_match_list[i]);
     tail_match_list[i] = NULL;
index 86c4fa8..79ea466 100644 (file)
@@ -289,7 +289,6 @@ static int tcsv_config_get_index(oconfig_item_t *ci, ssize_t *ret_index) {
 static int tcsv_config_add_metric(oconfig_item_t *ci){
     metric_definition_t *md;
     int status;
-    int i;
 
     md = calloc(1, sizeof(*md));
     if (md == NULL)
@@ -307,7 +306,7 @@ static int tcsv_config_add_metric(oconfig_item_t *ci){
         return (-1);
     }
 
-    for (i = 0; i < ci->children_num; ++i){
+    for (int i = 0; i < ci->children_num; ++i){
         oconfig_item_t *option = ci->children + i;
 
         if (strcasecmp("Type", option->key) == 0)
@@ -377,7 +376,6 @@ static int tcsv_config_add_instance_collect(instance_definition_t *id, oconfig_i
     metric_definition_t *metric;
     metric_definition_t **metric_list;
     size_t metric_list_size;
-    int i;
 
     if (ci->values_num < 1) {
         WARNING("tail_csv plugin: The `Collect' config option needs at least one argument.");
@@ -390,7 +388,7 @@ static int tcsv_config_add_instance_collect(instance_definition_t *id, oconfig_i
         return (-1);
     id->metric_list = metric_list;
 
-    for (i = 0; i < ci->values_num; i++) {
+    for (int i = 0; i < ci->values_num; i++) {
         char *metric_name;
 
         if (ci->values[i].type != OCONFIG_TYPE_STRING) {
@@ -420,7 +418,6 @@ static int tcsv_config_add_file(oconfig_item_t *ci)
 {
     instance_definition_t* id;
     int status = 0;
-    int i;
 
     /* Registration variables */
     char cb_name[DATA_MAX_NAME_LEN];
@@ -444,7 +441,7 @@ static int tcsv_config_add_file(oconfig_item_t *ci)
     /* Use default interval. */
     id->interval = plugin_get_interval();
 
-    for (i = 0; i < ci->children_num; ++i){
+    for (int i = 0; i < ci->children_num; ++i){
         oconfig_item_t *option = ci->children + i;
         status = 0;
 
@@ -500,8 +497,7 @@ static int tcsv_config_add_file(oconfig_item_t *ci)
 
 /* Parse blocks */
 static int tcsv_config(oconfig_item_t *ci){
-    int i;
-    for (i = 0; i < ci->children_num; ++i){
+    for (int i = 0; i < ci->children_num; ++i){
         oconfig_item_t *child = ci->children + i;
         if (strcasecmp("Metric", child->key) == 0)
             tcsv_config_add_metric(child);
index 723ee7b..52da2bc 100644 (file)
@@ -99,7 +99,6 @@ static int tape_read (void)
 # error "kstat_io_t does not have the required members"
 #endif
        static kstat_io_t kio;
-       int i;
 
        if (kc == NULL)
                return (-1);
@@ -107,7 +106,7 @@ static int tape_read (void)
        if (numtape <= 0)
                return (-1);
 
-       for (i = 0; i < numtape; i++)
+       for (int i = 0; i < numtape; i++)
        {
                if (kstat_read (kc, ksp[i], &kio) == -1)
                        continue;
index 59d8c94..21c071e 100644 (file)
@@ -125,7 +125,6 @@ static int tn_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
 {
   tn_data_t *data;
   int status;
-  int i;
 
   data = calloc (1, sizeof (*data));
   if (data == NULL)
@@ -138,7 +137,7 @@ static int tn_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
   data->severity = 0;
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -199,8 +198,6 @@ static int tn_invoke (const data_set_t *ds, value_list_t *vl, /* {{{ */
   gauge_t *rates;
   int rates_failed;
 
-  size_t i;
-
   if ((ds == NULL) || (vl == NULL) || (user_data == NULL))
     return (-EINVAL);
 
@@ -235,7 +232,8 @@ static int tn_invoke (const data_set_t *ds, value_list_t *vl, /* {{{ */
 
   rates_failed = 0;
   rates = NULL;
-  for (i = 0; i < ds->ds_num; i++)
+
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     char template[DATA_MAX_NAME_LEN];
     char value_str[DATA_MAX_NAME_LEN];
index 8389ce3..40a6fec 100644 (file)
@@ -156,7 +156,6 @@ static int tr_config_add_action (tr_action_t **dest, /* {{{ */
 static int tr_action_invoke (tr_action_t *act_head, /* {{{ */
     char *buffer_in, size_t buffer_in_size, int may_be_empty)
 {
-  tr_action_t *act;
   int status;
   char buffer[DATA_MAX_NAME_LEN];
   regmatch_t matches[8] = { [0] = { 0 } };
@@ -168,7 +167,7 @@ static int tr_action_invoke (tr_action_t *act_head, /* {{{ */
 
   DEBUG ("target_replace plugin: tr_action_invoke: <- buffer = %s;", buffer);
 
-  for (act = act_head; act != NULL; act = act->next)
+  for (tr_action_t *act = act_head; act != NULL; act = act->next)
   {
     char temp[DATA_MAX_NAME_LEN];
     char *subst_status;
@@ -241,7 +240,6 @@ static int tr_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
 {
   tr_data_t *data;
   int status;
-  int i;
 
   data = calloc (1, sizeof (*data));
   if (data == NULL)
@@ -257,7 +255,7 @@ static int tr_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
   data->type_instance = NULL;
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 8659c8d..22af4e3 100644 (file)
@@ -303,7 +303,6 @@ static int ts_config_add_data_source(ts_data_t *data, /* {{{ */
 {
        size_t new_data_sources_num;
        char **temp;
-       int i;
 
        /* Check number of arbuments. */
        if (ci->values_num < 1)
@@ -314,7 +313,7 @@ static int ts_config_add_data_source(ts_data_t *data, /* {{{ */
        }
 
        /* Check type of arguments */
-       for (i = 0; i < ci->values_num; i++)
+       for (int i = 0; i < ci->values_num; i++)
        {
                if (ci->values[i].type == OCONFIG_TYPE_STRING)
                        continue;
@@ -339,7 +338,7 @@ static int ts_config_add_data_source(ts_data_t *data, /* {{{ */
        data->data_sources = temp;
 
        /* Copy the strings, allocating memory as needed.  */
-       for (i = 0; i < ci->values_num; i++)
+       for (int i = 0; i < ci->values_num; i++)
        {
                size_t j;
 
@@ -370,8 +369,7 @@ static int ts_destroy (void **user_data) /* {{{ */
 
        if ((data != NULL) && (data->data_sources != NULL))
        {
-               size_t i;
-               for (i = 0; i < data->data_sources_num; i++)
+               for (size_t i = 0; i < data->data_sources_num; i++)
                        sfree (data->data_sources[i]);
                sfree (data->data_sources);
        }
@@ -386,7 +384,6 @@ static int ts_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
 {
        ts_data_t *data;
        int status;
-       int i;
 
        data = calloc (1, sizeof (*data));
        if (data == NULL)
@@ -399,7 +396,7 @@ static int ts_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
        data->offset = NAN;
 
        status = 0;
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -447,7 +444,6 @@ static int ts_invoke (const data_set_t *ds, value_list_t *vl, /* {{{ */
                notification_meta_t __attribute__((unused)) **meta, void **user_data)
 {
        ts_data_t *data;
-       size_t i;
 
        if ((ds == NULL) || (vl == NULL) || (user_data == NULL))
                return (-EINVAL);
@@ -459,7 +455,7 @@ static int ts_invoke (const data_set_t *ds, value_list_t *vl, /* {{{ */
                return (-EINVAL);
        }
 
-       for (i = 0; i < ds->ds_num; i++)
+       for (size_t i = 0; i < ds->ds_num; i++)
        {
                /* If we've got a list of data sources, is it in the list? */
                if (data->data_sources) {
index ee068ec..fee5ffd 100644 (file)
@@ -143,7 +143,6 @@ static int ts_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
 {
   ts_data_t *data;
   int status;
-  int i;
 
   data = calloc (1, sizeof (*data));
   if (data == NULL)
@@ -160,7 +159,7 @@ static int ts_create (const oconfig_item_t *ci, void **user_data) /* {{{ */
   data->meta = NULL;
 
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index e28a869..e74e4bc 100644 (file)
@@ -305,7 +305,6 @@ static void conn_submit_port_entry (port_entry_t *pe)
 {
   value_t values[1];
   value_list_t vl = VALUE_LIST_INIT;
-  int i;
 
   conn_prepare_vl (&vl, values);
 
@@ -315,7 +314,7 @@ static void conn_submit_port_entry (port_entry_t *pe)
     ssnprintf (vl.plugin_instance, sizeof (vl.plugin_instance),
        "%"PRIu16"-local", pe->port);
 
-    for (i = 1; i <= TCP_STATE_MAX; i++)
+    for (int i = 1; i <= TCP_STATE_MAX; i++)
     {
       vl.values[0].gauge = pe->count_local[i];
 
@@ -330,7 +329,7 @@ static void conn_submit_port_entry (port_entry_t *pe)
     ssnprintf (vl.plugin_instance, sizeof (vl.plugin_instance),
        "%"PRIu16"-remote", pe->port);
 
-    for (i = 1; i <= TCP_STATE_MAX; i++)
+    for (int i = 1; i <= TCP_STATE_MAX; i++)
     {
       vl.values[0].gauge = pe->count_remote[i];
 
@@ -345,13 +344,12 @@ static void conn_submit_port_total (void)
 {
   value_t values[1];
   value_list_t vl = VALUE_LIST_INIT;
-  int i;
 
   conn_prepare_vl (&vl, values);
 
   sstrncpy (vl.plugin_instance, "all", sizeof (vl.plugin_instance));
 
-  for (i = 1; i <= TCP_STATE_MAX; i++)
+  for (int i = 1; i <= TCP_STATE_MAX; i++)
   {
     vl.values[0].gauge = count_total[i];
 
@@ -363,12 +361,10 @@ static void conn_submit_port_total (void)
 
 static void conn_submit_all (void)
 {
-  port_entry_t *pe;
-
   if (port_collect_total)
     conn_submit_port_total ();
 
-  for (pe = port_list_head; pe != NULL; pe = pe->next)
+  for (port_entry_t *pe = port_list_head; pe != NULL; pe = pe->next)
     conn_submit_port_entry (pe);
 } /* void conn_submit_all */
 
@@ -1017,7 +1013,6 @@ static int conn_read (void)
 static int conn_read (void)
 {
   int size;
-  int i;
   int nconn;
   void *data;
   struct netinfo_header *header;
@@ -1059,7 +1054,7 @@ static int conn_read (void)
   nconn = header->size;
   conn = (struct netinfo_conn *)(data + sizeof(struct netinfo_header));
 
-  for (i=0; i < nconn; conn++, i++)
+  for (int i = 0; i < nconn; conn++, i++)
   {
     conn_handle_ports (conn->srcport, conn->dstport, conn->tcp_state);
   }
index 40ca15e..a1cde32 100644 (file)
@@ -200,7 +200,6 @@ static int tss2_get_socket (FILE **ret_read_fh, FILE **ret_write_fh)
         * if it's not already present
         */
        struct addrinfo *ai_head;
-       struct addrinfo *ai_ptr;
        int sd = -1;
        int status;
 
@@ -234,7 +233,7 @@ static int tss2_get_socket (FILE **ret_read_fh, FILE **ret_write_fh)
        }
 
        /* Try all given hosts until we can connect to one */
-       for (ai_ptr = ai_head; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+       for (struct addrinfo *ai_ptr = ai_head; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
        {
                /* Create socket */
                sd = socket (ai_ptr->ai_family, ai_ptr->ai_socktype,
@@ -770,7 +769,6 @@ static int tss2_read (void)
         * Poll function which collects global and vserver information
         * and submits it to collectd
         */
-       vserver_list_t *vserver;
        int success = 0;
        int status;
 
@@ -786,7 +784,7 @@ static int tss2_read (void)
        }
 
        /* Handle vservers */
-       for (vserver = server_list; vserver != NULL; vserver = vserver->next)
+       for (vserver_list_t *vserver = server_list; vserver != NULL; vserver = vserver->next)
        {
                status = tss2_read_vserver (vserver);
                if (status == 0)
index 28ee8e4..96c94e5 100644 (file)
--- a/src/ted.c
+++ b/src/ted.c
@@ -108,7 +108,6 @@ static int ted_read_value(double *ret_power, double *ret_voltage)
     while (end_flag == 0)
     {
         ssize_t receive_buffer_length;
-        ssize_t i;
 
         /* check for timeout or input error*/
         status = select (fd + 1, &input, NULL, NULL, &timeout);
@@ -165,7 +164,7 @@ static int ted_read_value(double *ret_power, double *ret_voltage)
          * the beginning of the package has been found. */
 
         escape_flag = 0;
-        for (i = 0; i < receive_buffer_length; i++)
+        for (ssize_t i = 0; i < receive_buffer_length; i++)
         {
             /* Check if previous byte was the escape byte. */
             if (escape_flag == 1)
@@ -312,7 +311,6 @@ static int ted_read (void)
     double power;
     double voltage;
     int status;
-    int i;
 
     status = ted_open_device ();
     if (status != 0)
@@ -320,7 +318,7 @@ static int ted_read (void)
 
     power = NAN;
     voltage = NAN;
-    for (i = 0; i <= conf_retries; i++)
+    for (int i = 0; i <= conf_retries; i++)
     {
         status = ted_read_value (&power, &voltage);
         if (status == 0)
index bbd4091..1d9bcf9 100644 (file)
@@ -216,7 +216,6 @@ static int ut_config_type_hysteresis (threshold_t *th, oconfig_item_t *ci)
 
 static int ut_config_type (const threshold_t *th_orig, oconfig_item_t *ci)
 {
-  int i;
   threshold_t th;
   int status = 0;
 
@@ -245,7 +244,7 @@ static int ut_config_type (const threshold_t *th_orig, oconfig_item_t *ci)
   th.hysteresis = 0;
   th.flags = UT_FLAG_INTERESTING; /* interesting by default */
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -310,7 +309,6 @@ static int ut_config_plugin_instance (threshold_t *th, oconfig_item_t *ci)
 
 static int ut_config_plugin (const threshold_t *th_orig, oconfig_item_t *ci)
 {
-  int i;
   threshold_t th;
   int status = 0;
 
@@ -332,7 +330,7 @@ static int ut_config_plugin (const threshold_t *th_orig, oconfig_item_t *ci)
   memcpy (&th, th_orig, sizeof (th));
   sstrncpy (th.plugin, ci->values[0].value.string, sizeof (th.plugin));
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -356,7 +354,6 @@ static int ut_config_plugin (const threshold_t *th_orig, oconfig_item_t *ci)
 
 static int ut_config_host (const threshold_t *th_orig, oconfig_item_t *ci)
 {
-  int i;
   threshold_t th;
   int status = 0;
 
@@ -378,7 +375,7 @@ static int ut_config_host (const threshold_t *th_orig, oconfig_item_t *ci)
   memcpy (&th, th_orig, sizeof (th));
   sstrncpy (th.host, ci->values[0].value.string, sizeof (th.host));
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
@@ -550,10 +547,9 @@ static int ut_report_state (const data_set_t *ds,
     {
       gauge_t value;
       gauge_t sum;
-      size_t i;
 
       sum = 0.0;
-      for (i = 0; i < vl->values_len; i++)
+      for (size_t i = 0; i < vl->values_len; i++)
       {
         if (isnan (values[i]))
           continue;
@@ -698,7 +694,6 @@ static int ut_check_one_threshold (const data_set_t *ds,
 { /* {{{ */
   int ret = -1;
   int ds_index = -1;
-  size_t i;
   gauge_t values_copy[ds->ds_num];
 
   memcpy (values_copy, values, sizeof (values_copy));
@@ -717,7 +712,7 @@ static int ut_check_one_threshold (const data_set_t *ds,
     }
 
     /* Prepare `sum' and `num'. */
-    for (i = 0; i < ds->ds_num; i++)
+    for (size_t i = 0; i < ds->ds_num; i++)
       if (!isnan (values[i]))
       {
         num++;
@@ -727,17 +722,17 @@ static int ut_check_one_threshold (const data_set_t *ds,
     if ((num == 0) /* All data sources are undefined. */
         || (sum == 0.0)) /* Sum is zero, cannot calculate percentage. */
     {
-      for (i = 0; i < ds->ds_num; i++)
+      for (size_t i = 0; i < ds->ds_num; i++)
         values_copy[i] = NAN;
     }
     else /* We can actually calculate the percentage. */
     {
-      for (i = 0; i < ds->ds_num; i++)
+      for (size_t i = 0; i < ds->ds_num; i++)
         values_copy[i] = 100.0 * values[i] / sum;
     }
   } /* if (UT_FLAG_PERCENTAGE) */
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     int status;
 
@@ -867,7 +862,6 @@ static int ut_missing (const value_list_t *vl,
 
 static int ut_config (oconfig_item_t *ci)
 { /* {{{ */
-  int i;
   int status = 0;
   int old_size = c_avl_size (threshold_tree);
 
@@ -889,7 +883,7 @@ static int ut_config (oconfig_item_t *ci)
     .flags = UT_FLAG_INTERESTING /* interesting by default */
   };
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *option = ci->children + i;
 
index 2b3ce0e..913511f 100644 (file)
@@ -652,11 +652,10 @@ for_all_cpus(int (func)(struct thread_data *, struct core_data *, struct pkg_dat
        struct thread_data *thread_base, struct core_data *core_base, struct pkg_data *pkg_base)
 {
        int retval;
-       unsigned int pkg_no, core_no, thread_no;
 
-       for (pkg_no = 0; pkg_no < topology.num_packages; ++pkg_no) {
-               for (core_no = 0; core_no < topology.num_cores; ++core_no) {
-                       for (thread_no = 0; thread_no < topology.num_threads; ++thread_no) {
+       for (unsigned int pkg_no = 0; pkg_no < topology.num_packages; ++pkg_no) {
+               for (unsigned int core_no = 0; core_no < topology.num_cores; ++core_no) {
+                       for (unsigned int thread_no = 0; thread_no < topology.num_threads; ++thread_no) {
                                struct thread_data *t;
                                struct core_data *c;
                                struct pkg_data *p;
@@ -692,11 +691,10 @@ for_all_cpus_delta(const struct thread_data *thread_new_base, const struct core_
                   const struct thread_data *thread_old_base, const struct core_data *core_old_base, const struct pkg_data *pkg_old_base)
 {
        int retval;
-       unsigned int pkg_no, core_no, thread_no;
 
-       for (pkg_no = 0; pkg_no < topology.num_packages; ++pkg_no) {
-               for (core_no = 0; core_no < topology.num_cores; ++core_no) {
-                       for (thread_no = 0; thread_no < topology.num_threads; ++thread_no) {
+       for (unsigned int pkg_no = 0; pkg_no < topology.num_packages; ++pkg_no) {
+               for (unsigned int core_no = 0; core_no < topology.num_cores; ++core_no) {
+                       for (unsigned int thread_no = 0; thread_no < topology.num_threads; ++thread_no) {
                                struct thread_data *t_delta;
                                const struct thread_data *t_old, *t_new;
                                struct core_data *c_delta;
@@ -1150,7 +1148,6 @@ allocate_cpu_set(cpu_set_t ** set, size_t * size) {
 static int __attribute__((warn_unused_result))
 topology_probe(void)
 {
-       unsigned int i;
        int ret;
        unsigned int max_package_id, max_core_id, max_threads;
        max_package_id = max_core_id = max_threads = 0;
@@ -1187,7 +1184,7 @@ topology_probe(void)
         * For online cpus
         * find max_core_id, max_package_id
         */
-       for (i = 0; i <= topology.max_cpu_id; ++i) {
+       for (unsigned int i = 0; i <= topology.max_cpu_id; ++i) {
                unsigned int num_threads;
                struct cpu_topology *cpu = &topology.cpus[i];
 
@@ -1252,7 +1249,6 @@ err:
 static int
 allocate_counters(struct thread_data **threads, struct core_data **cores, struct pkg_data **packages)
 {
-       unsigned int i;
        unsigned int total_threads, total_cores;
 
        if ((topology.num_threads == 0)
@@ -1272,7 +1268,7 @@ allocate_counters(struct thread_data **threads, struct core_data **cores, struct
                return -1;
        }
 
-       for (i = 0; i < total_threads; ++i)
+       for (unsigned int i = 0; i < total_threads; ++i)
                (*threads)[i].cpu_id = topology.max_cpu_id + 1;
 
        total_cores = topology.num_cores * topology.num_packages;
@@ -1322,9 +1318,7 @@ init_counter(struct thread_data *thread_base, struct core_data *core_base,
 static void
 initialize_counters(void)
 {
-       unsigned int cpu_id;
-
-       for (cpu_id = 0; cpu_id <= topology.max_cpu_id; ++cpu_id) {
+       for (unsigned int cpu_id = 0; cpu_id <= topology.max_cpu_id; ++cpu_id) {
                if (cpu_is_not_present(cpu_id))
                        continue;
                init_counter(EVEN_COUNTERS, cpu_id);
index 4c55cc7..1876150 100644 (file)
@@ -44,8 +44,6 @@ int handle_flush (FILE *fh, char *buffer)
        char **identifiers = NULL;
        size_t identifiers_num = 0;
 
-       size_t i;
-
 #define PRINT_TO_SOCK(fh, ...) \
        do { \
                if (fprintf (fh, __VA_ARGS__) < 0) { \
@@ -123,15 +121,14 @@ int handle_flush (FILE *fh, char *buffer)
                }
        } /* while (*buffer != 0) */
 
-       for (i = 0; (i == 0) || (i < plugins_num); i++)
+       for (size_t i = 0; (i == 0) || (i < plugins_num); i++)
        {
                char *plugin = NULL;
-               size_t j;
 
                if (plugins_num != 0)
                        plugin = plugins[i];
 
-               for (j = 0; (j == 0) || (j < identifiers_num); j++)
+               for (size_t j = 0; (j == 0) || (j < identifiers_num); j++)
                {
                        char *identifier = NULL;
                        int status;
index 1185a03..cd88760 100644 (file)
@@ -61,7 +61,6 @@ int handle_getval (FILE *fh, char *buffer)
   const data_set_t *ds;
 
   int   status;
-  size_t i;
 
   if ((fh == NULL) || (buffer == NULL))
     return (-1);
@@ -146,7 +145,7 @@ int handle_getval (FILE *fh, char *buffer)
 
   print_to_socket (fh, "%zu Value%s found\n", values_num,
       (values_num == 1) ? "" : "s");
-  for (i = 0; i < values_num; i++)
+  for (size_t i = 0; i < values_num; i++)
   {
     print_to_socket (fh, "%s=", ds->ds[i].name);
     if (isnan (values[i]))
index c5f71a3..afbd01d 100644 (file)
@@ -34,8 +34,7 @@
 #include "utils_parse_option.h"
 
 #define free_everything_and_return(status) do { \
-    size_t j; \
-    for (j = 0; j < number; j++) { \
+    for (size_t j = 0; j < number; j++) { \
       sfree(names[j]); \
       names[j] = NULL; \
     } \
@@ -61,7 +60,6 @@ int handle_listval (FILE *fh, char *buffer)
   char **names = NULL;
   cdtime_t *times = NULL;
   size_t number = 0;
-  size_t i;
   int status;
 
   DEBUG ("utils_cmd_listval: handle_listval (fh = %p, buffer = %s);",
@@ -98,7 +96,7 @@ int handle_listval (FILE *fh, char *buffer)
 
   print_to_socket (fh, "%i Value%s found\n",
       (int) number, (number == 1) ? "" : "s");
-  for (i = 0; i < number; i++)
+  for (size_t i = 0; i < number; i++)
     print_to_socket (fh, "%.3f %s\n", CDTIME_T_TO_DOUBLE (times[i]),
                names[i]);
 
index f9eaf88..79d77a2 100644 (file)
@@ -101,11 +101,10 @@ static unsigned int     crc32_tab[] = {
 uint32_t
 crc32_buffer(const unsigned char *s, size_t len)
 {
-    size_t      i;
     uint32_t   ret;
 
     ret = 0;
-    for (i = 0;  i < len;  i++)
+    for (size_t i = 0;  i < len;  i++)
         ret = crc32_tab[(ret ^ s[i]) & 0xff] ^ (ret >> 8);
     return ret;
 }
index 2865e9f..0509ff4 100644 (file)
@@ -160,7 +160,6 @@ static bool field_enabled (curl_stats_t *s, size_t offset)
 curl_stats_t *curl_stats_from_config (oconfig_item_t *ci)
 {
        curl_stats_t *s;
-       int i;
 
        if (ci == NULL)
                return NULL;
@@ -169,7 +168,7 @@ curl_stats_t *curl_stats_from_config (oconfig_item_t *ci)
        if (s == NULL)
                return NULL;
 
-       for (i = 0; i < ci->children_num; ++i)
+       for (int i = 0; i < ci->children_num; ++i)
        {
                oconfig_item_t *c = ci->children + i;
                size_t field;
@@ -211,7 +210,6 @@ int curl_stats_dispatch (curl_stats_t *s, CURL *curl,
                const char *hostname, const char *plugin, const char *plugin_instance)
 {
        value_list_t vl = VALUE_LIST_INIT;
-       size_t field;
 
        if (s == NULL)
                return 0;
@@ -229,7 +227,7 @@ int curl_stats_dispatch (curl_stats_t *s, CURL *curl,
        if (plugin_instance != NULL)
                sstrncpy (vl.plugin_instance, plugin_instance, sizeof (vl.plugin_instance));
 
-       for (field = 0; field < STATIC_ARRAY_SIZE (field_specs); ++field)
+       for (size_t field = 0; field < STATIC_ARRAY_SIZE (field_specs); ++field)
        {
                int status;
 
index e576f94..8eae6b8 100644 (file)
@@ -126,7 +126,6 @@ static int udb_config_add_string (char ***ret_array, /* {{{ */
 {
   char **array;
   size_t array_len;
-  int i;
 
   if (ci->values_num < 1)
   {
@@ -135,7 +134,7 @@ static int udb_config_add_string (char ***ret_array, /* {{{ */
     return (-1);
   }
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
     if (ci->values[i].type != OCONFIG_TYPE_STRING)
     {
@@ -155,7 +154,7 @@ static int udb_config_add_string (char ***ret_array, /* {{{ */
   }
   *ret_array = array;
 
-  for (i = 0; i < ci->values_num; i++)
+  for (int i = 0; i < ci->values_num; i++)
   {
     array[array_len] = strdup (ci->values[i].value.string);
     if (array[array_len] == NULL)
@@ -200,7 +199,6 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */
     udb_query_t const *q, udb_query_preparation_area_t *q_area)
 {
   value_list_t vl = VALUE_LIST_INIT;
-  size_t i;
   int status;
 
   assert (r != NULL);
@@ -216,7 +214,7 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */
   }
   vl.values_len = r_area->ds->ds_num;
 
-  for (i = 0; i < r->values_num; i++)
+  for (size_t i = 0; i < r->values_num; i++)
   {
     char *value_str = r_area->values_buffer[i];
 
@@ -258,15 +256,27 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */
   {
     if (r->instance_prefix == NULL)
     {
-      strjoin (vl.type_instance, sizeof (vl.type_instance),
+      int status = strjoin (vl.type_instance, sizeof (vl.type_instance),
           r_area->instances_buffer, r->instances_num, "-");
+      if (status != 0)
+      {
+        ERROR ("udb_result_submit: creating type_instance failed with status %d.",
+            status);
+        return (status);
+      }
     }
     else
     {
       char tmp[DATA_MAX_NAME_LEN];
 
-      strjoin (tmp, sizeof (tmp), r_area->instances_buffer,
+      int status = strjoin (tmp, sizeof (tmp), r_area->instances_buffer,
           r->instances_num, "-");
+      if (status != 0)
+      {
+        ERROR ("udb_result_submit: creating type_instance failed with status %d.",
+            status);
+        return (status);
+      }
       tmp[sizeof (tmp) - 1] = 0;
 
       snprintf (vl.type_instance, sizeof (vl.type_instance), "%s-%s",
@@ -286,7 +296,7 @@ static int udb_result_submit (udb_result_t *r, /* {{{ */
       return (-ENOMEM);
     }
 
-    for (i = 0; i < r->metadata_num; i++)
+    for (size_t i = 0; i < r->metadata_num; i++)
     {
       status = meta_data_add_string (vl.meta, r->metadata[i],
           r_area->metadata_buffer[i]);
@@ -332,17 +342,15 @@ static int udb_result_handle_result (udb_result_t *r, /* {{{ */
     udb_result_preparation_area_t *r_area,
     udb_query_t const *q, char **column_values)
 {
-  size_t i;
-
   assert (r && q_area && r_area);
 
-  for (i = 0; i < r->instances_num; i++)
+  for (size_t i = 0; i < r->instances_num; i++)
     r_area->instances_buffer[i] = column_values[r_area->instances_pos[i]];
 
-  for (i = 0; i < r->values_num; i++)
+  for (size_t i = 0; i < r->values_num; i++)
     r_area->values_buffer[i] = column_values[r_area->values_pos[i]];
 
-  for (i = 0; i < r->metadata_num; i++)
+  for (size_t i = 0; i < r->metadata_num; i++)
     r_area->metadata_buffer[i] = column_values[r_area->metadata_pos[i]];
 
   if (q->plugin_instance_from)
@@ -355,8 +363,6 @@ static int udb_result_prepare_result (udb_result_t const *r, /* {{{ */
     udb_result_preparation_area_t *prep_area,
     char **column_names, size_t column_num)
 {
-  size_t i;
-
   if ((r == NULL) || (prep_area == NULL))
     return (-EINVAL);
 
@@ -453,7 +459,7 @@ static int udb_result_prepare_result (udb_result_t const *r, /* {{{ */
   /* }}} */
 
   /* Determine the position of the plugin instance column {{{ */
-  for (i = 0; i < r->instances_num; i++)
+  for (size_t i = 0; i < r->instances_num; i++)
   {
     size_t j;
 
@@ -477,7 +483,7 @@ static int udb_result_prepare_result (udb_result_t const *r, /* {{{ */
 
 
   /* Determine the position of the value columns {{{ */
-  for (i = 0; i < r->values_num; i++)
+  for (size_t i = 0; i < r->values_num; i++)
   {
     size_t j;
 
@@ -500,7 +506,7 @@ static int udb_result_prepare_result (udb_result_t const *r, /* {{{ */
   } /* }}} for (i = 0; i < r->values_num; i++) */
 
   /* Determine the position of the metadata columns {{{ */
-  for (i = 0; i < r->metadata_num; i++)
+  for (size_t i = 0; i < r->metadata_num; i++)
   {
     size_t j;
 
@@ -528,23 +534,21 @@ static int udb_result_prepare_result (udb_result_t const *r, /* {{{ */
 
 static void udb_result_free (udb_result_t *r) /* {{{ */
 {
-  size_t i;
-
   if (r == NULL)
     return;
 
   sfree (r->type);
   sfree (r->instance_prefix);
 
-  for (i = 0; i < r->instances_num; i++)
+  for (size_t i = 0; i < r->instances_num; i++)
     sfree (r->instances[i]);
   sfree (r->instances);
 
-  for (i = 0; i < r->values_num; i++)
+  for (size_t i = 0; i < r->values_num; i++)
     sfree (r->values[i]);
   sfree (r->values);
 
-  for (i = 0; i < r->metadata_num; i++)
+  for (size_t i = 0; i < r->metadata_num; i++)
     sfree (r->metadata[i]);
   sfree (r->metadata);
 
@@ -558,7 +562,6 @@ static int udb_result_create (const char *query_name, /* {{{ */
 {
   udb_result_t *r;
   int status;
-  int i;
 
   if (ci->values_num != 0)
   {
@@ -582,7 +585,7 @@ static int udb_result_create (const char *query_name, /* {{{ */
 
   /* Fill the `udb_result_t' structure.. */
   status = 0;
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -680,7 +683,6 @@ int udb_query_create (udb_query_t ***ret_query_list, /* {{{ */
 
   udb_query_t *q;
   int status;
-  int i;
 
   if ((ret_query_list == NULL) || (ret_query_list_len == NULL))
     return (-EINVAL);
@@ -715,7 +717,7 @@ int udb_query_create (udb_query_t ***ret_query_list, /* {{{ */
   }
 
   /* Fill the `udb_query_t' structure.. */
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -802,12 +804,10 @@ int udb_query_create (udb_query_t ***ret_query_list, /* {{{ */
 
 void udb_query_free (udb_query_t **query_list, size_t query_list_len) /* {{{ */
 {
-  size_t i;
-
   if (query_list == NULL)
     return;
 
-  for (i = 0; i < query_list_len; i++)
+  for (size_t i = 0; i < query_list_len; i++)
     udb_query_free_one (query_list[i]);
 
   sfree (query_list);
@@ -817,7 +817,6 @@ int udb_query_pick_from_list_by_name (const char *name, /* {{{ */
     udb_query_t **src_list, size_t src_list_len,
     udb_query_t ***dst_list, size_t *dst_list_len)
 {
-  size_t i;
   int num_added;
 
   if ((name == NULL) || (src_list == NULL) || (dst_list == NULL)
@@ -829,7 +828,7 @@ int udb_query_pick_from_list_by_name (const char *name, /* {{{ */
   }
 
   num_added = 0;
-  for (i = 0; i < src_list_len; i++)
+  for (size_t i = 0; i < src_list_len; i++)
   {
     udb_query_t **tmp_list;
     size_t tmp_list_len;
@@ -990,9 +989,7 @@ int udb_query_handle_result (udb_query_t const *q, /* {{{ */
 #if defined(COLLECT_DEBUG) && COLLECT_DEBUG /* {{{ */
   do
   {
-    size_t i;
-
-    for (i = 0; i < prep_area->column_num; i++)
+    for (size_t i = 0; i < prep_area->column_num; i++)
     {
       DEBUG ("db query utils: udb_query_handle_result (%s, %s): "
           "column[%zu] = %s;",
@@ -1053,9 +1050,7 @@ int udb_query_prepare_result (udb_query_t const *q, /* {{{ */
 #if defined(COLLECT_DEBUG) && COLLECT_DEBUG
   do
   {
-    size_t i;
-
-    for (i = 0; i < column_num; i++)
+    for (size_t i = 0; i < column_num; i++)
     {
       DEBUG ("db query utils: udb_query_prepare_result: "
           "query = %s; column[%zu] = %s;",
index 12ba365..e0b8452 100644 (file)
@@ -195,9 +195,7 @@ static int cmp_in6_addr (const struct in6_addr *a,
 
 static inline int ignore_list_match (const struct in6_addr *addr)
 {
-    ip_list_t *ptr;
-
-    for (ptr = IgnoreList; ptr != NULL; ptr = ptr->next)
+    for (ip_list_t *ptr = IgnoreList; ptr != NULL; ptr = ptr->next)
        if (cmp_in6_addr (addr, &ptr->addr) == 0)
            return (1);
     return (0);
@@ -226,7 +224,6 @@ static void ignore_list_add (const struct in6_addr *addr)
 void ignore_list_add_name (const char *name)
 {
     struct addrinfo *ai_list;
-    struct addrinfo *ai_ptr;
     struct in6_addr  addr;
     int status;
 
@@ -234,7 +231,7 @@ void ignore_list_add_name (const char *name)
     if (status != 0)
        return;
 
-    for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+    for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
     {
        if (ai_ptr->ai_family == AF_INET)
        {
@@ -752,22 +749,41 @@ const char *qtype_str(int t)
            case ns_t_srv:      return ("SRV");
            case ns_t_atma:     return ("ATMA");
            case ns_t_naptr:    return ("NAPTR");
+           case ns_t_opt:      return ("OPT");
+# if __NAMESER >= 19991006
            case ns_t_kx:       return ("KX");
            case ns_t_cert:     return ("CERT");
            case ns_t_a6:       return ("A6");
            case ns_t_dname:    return ("DNAME");
            case ns_t_sink:     return ("SINK");
-           case ns_t_opt:      return ("OPT");
-# if __NAMESER >= 19991006
+           case ns_t_apl:      return ("APL");
            case ns_t_tsig:     return ("TSIG");
 # endif
+# if __NAMESER >= 20090302
+           case ns_t_ds:       return ("DS");
+           case ns_t_sshfp:    return ("SSHFP");
+           case ns_t_ipseckey: return ("IPSECKEY");
+           case ns_t_rrsig:    return ("RRSIG");
+           case ns_t_nsec:     return ("NSEC");
+           case ns_t_dnskey:   return ("DNSKEY");
+           case ns_t_dhcid:    return ("DHCID");
+           case ns_t_nsec3:    return ("NSEC3");
+           case ns_t_nsec3param: return ("NSEC3PARAM");
+           case ns_t_hip:      return ("HIP");
+           case ns_t_spf:      return ("SPF");
            case ns_t_ixfr:     return ("IXFR");
+# endif
            case ns_t_axfr:     return ("AXFR");
            case ns_t_mailb:    return ("MAILB");
            case ns_t_maila:    return ("MAILA");
            case ns_t_any:      return ("ANY");
+# if __NAMESER >= 19991006
            case ns_t_zxfr:     return ("ZXFR");
-/* #endif __NAMESER >= 19991006 */
+# endif
+# if __NAMESER >= 20090302
+           case ns_t_dlv:       return ("DLV");
+# endif
+/* #endif __NAMESER >= 19991001 */
 #elif (defined (__BIND)) && (__BIND >= 19950621)
            case T_A:           return ("A"); /* 1 ... */
            case T_NS:          return ("NS");
index a2deb3c..e523420 100644 (file)
@@ -85,14 +85,12 @@ static int gr_format_values (char *ret, size_t ret_len,
 static void gr_copy_escape_part (char *dst, const char *src, size_t dst_len,
     char escape_char)
 {
-    size_t i;
-
     memset (dst, 0, dst_len);
 
     if (src == NULL)
         return;
 
-    for (i = 0; i < dst_len; i++)
+    for (size_t i = 0; i < dst_len; i++)
     {
         if (src[i] == 0)
         {
@@ -173,11 +171,9 @@ static int gr_format_name (char *ret, int ret_len,
 
 static void escape_graphite_string (char *buffer, char escape_char)
 {
-       char *head;
-
        assert (strchr(GRAPHITE_FORBIDDEN, escape_char) == NULL);
 
-       for (head = buffer + strcspn(buffer, GRAPHITE_FORBIDDEN);
+       for (char *head = buffer + strcspn(buffer, GRAPHITE_FORBIDDEN);
             *head != '\0';
             head += strcspn(head, GRAPHITE_FORBIDDEN))
                *head = escape_char;
@@ -189,14 +185,13 @@ int format_graphite (char *buffer, size_t buffer_size,
     unsigned int flags)
 {
     int status = 0;
-    size_t i;
     int buffer_pos = 0;
 
     gauge_t *rates = NULL;
     if (flags & GRAPHITE_STORE_RATES)
       rates = uc_get_rate (ds, vl);
 
-    for (i = 0; i < ds->ds_num; i++)
+    for (size_t i = 0; i < ds->ds_num; i++)
     {
         char const *ds_name = NULL;
         char        key[10*DATA_MAX_NAME_LEN];
index 99996b4..63f03da 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * collectd - src/utils_format_json.c
- * Copyright (C) 2009       Florian octo Forster
+ * Copyright (C) 2009-2015  Florian octo Forster
  *
  * Permission is hereby granted, free of charge, to any person obtaining a
  * copy of this software and associated documentation files (the "Software"),
 
 #include "collectd.h"
 
+#include "utils_format_json.h"
+
 #include "plugin.h"
 #include "common.h"
-
 #include "utils_cache.h"
-#include "utils_format_json.h"
+
+#if HAVE_LIBYAJL
+# include <yajl/yajl_common.h>
+# include <yajl/yajl_gen.h>
+# if HAVE_YAJL_YAJL_VERSION_H
+#  include <yajl/yajl_version.h>
+# endif
+# if defined(YAJL_MAJOR) && (YAJL_MAJOR > 1)
+#  define HAVE_YAJL_V2 1
+# endif
+#endif
 
 static int json_escape_string (char *buffer, size_t buffer_size, /* {{{ */
     const char *string)
 {
-  size_t src_pos;
   size_t dst_pos;
 
   if ((buffer == NULL) || (string == NULL))
@@ -57,7 +67,7 @@ static int json_escape_string (char *buffer, size_t buffer_size, /* {{{ */
 
   /* Escape special characters */
   BUFFER_ADD ('"');
-  for (src_pos = 0; string[src_pos] != 0; src_pos++)
+  for (size_t src_pos = 0; string[src_pos] != 0; src_pos++)
   {
     if ((string[src_pos] == '"')
         || (string[src_pos] == '\\'))
@@ -82,7 +92,6 @@ static int values_to_json (char *buffer, size_t buffer_size, /* {{{ */
                 const data_set_t *ds, const value_list_t *vl, int store_rates)
 {
   size_t offset = 0;
-  size_t i;
   gauge_t *rates = NULL;
 
   memset (buffer, 0, buffer_size);
@@ -106,7 +115,7 @@ static int values_to_json (char *buffer, size_t buffer_size, /* {{{ */
 } while (0)
 
   BUFFER_ADD ("[");
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     if (i > 0)
       BUFFER_ADD (",");
@@ -161,7 +170,6 @@ static int dstypes_to_json (char *buffer, size_t buffer_size, /* {{{ */
                 const data_set_t *ds)
 {
   size_t offset = 0;
-  size_t i;
 
   memset (buffer, 0, buffer_size);
 
@@ -178,7 +186,7 @@ static int dstypes_to_json (char *buffer, size_t buffer_size, /* {{{ */
 } while (0)
 
   BUFFER_ADD ("[");
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     if (i > 0)
       BUFFER_ADD (",");
@@ -198,7 +206,6 @@ static int dsnames_to_json (char *buffer, size_t buffer_size, /* {{{ */
                 const data_set_t *ds)
 {
   size_t offset = 0;
-  size_t i;
 
   memset (buffer, 0, buffer_size);
 
@@ -215,7 +222,7 @@ static int dsnames_to_json (char *buffer, size_t buffer_size, /* {{{ */
 } while (0)
 
   BUFFER_ADD ("[");
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     if (i > 0)
       BUFFER_ADD (",");
@@ -236,7 +243,6 @@ static int meta_data_keys_to_json (char *buffer, size_t buffer_size, /* {{{ */
 {
   size_t offset = 0;
   int status;
-  size_t i;
 
   buffer[0] = 0;
 
@@ -251,7 +257,7 @@ static int meta_data_keys_to_json (char *buffer, size_t buffer_size, /* {{{ */
     offset += ((size_t) status); \
 } while (0)
 
-  for (i = 0; i < keys_num; ++i)
+  for (size_t i = 0; i < keys_num; ++i)
   {
     int type;
     char *key = keys[i];
@@ -315,7 +321,6 @@ static int meta_data_to_json (char *buffer, size_t buffer_size, /* {{{ */
   char **keys = NULL;
   size_t keys_num;
   int status;
-  size_t i;
 
   if ((buffer == NULL) || (buffer_size == 0) || (meta == NULL))
     return (EINVAL);
@@ -327,7 +332,7 @@ static int meta_data_to_json (char *buffer, size_t buffer_size, /* {{{ */
 
   status = meta_data_keys_to_json (buffer, buffer_size, meta, keys, keys_num);
 
-  for (i = 0; i < keys_num; ++i)
+  for (size_t i = 0; i < keys_num; ++i)
     sfree (keys[i]);
   sfree (keys);
 
@@ -499,4 +504,215 @@ int format_json_value_list (char *buffer, /* {{{ */
         store_rates, (*ret_buffer_free) - 2));
 } /* }}} int format_json_value_list */
 
+#if HAVE_LIBYAJL
+static int json_add_string (yajl_gen g, char const *str) /* {{{ */
+{
+  if (str == NULL)
+    return (int) yajl_gen_null (g);
+
+  return (int) yajl_gen_string (g, (unsigned char const *) str, (unsigned int) strlen (str));
+} /* }}} int json_add_string */
+
+#define JSON_ADD(g, str) do {                        \
+  yajl_gen_status status = json_add_string (g, str); \
+  if (status != yajl_gen_status_ok) { return -1; }   \
+} while (0)
+
+#define JSON_ADDF(g, format, ...) do {               \
+  char *str = ssnprintf_alloc (format, __VA_ARGS__); \
+  yajl_gen_status status = json_add_string (g, str); \
+  free (str);                                        \
+  if (status != yajl_gen_status_ok) { return -1; }   \
+} while (0)
+
+static int format_json_meta (yajl_gen g, notification_meta_t *meta) /* {{{ */
+{
+  if (meta == NULL)
+    return 0;
+
+  JSON_ADD (g, meta->name);
+  switch (meta->type)
+  {
+    case NM_TYPE_STRING:
+      JSON_ADD (g, meta->nm_value.nm_string);
+      break;
+    case NM_TYPE_SIGNED_INT:
+      JSON_ADDF (g, "%"PRIi64, meta->nm_value.nm_signed_int);
+      break;
+    case NM_TYPE_UNSIGNED_INT:
+      JSON_ADDF (g, "%"PRIu64, meta->nm_value.nm_unsigned_int);
+      break;
+    case NM_TYPE_DOUBLE:
+      JSON_ADDF (g, JSON_GAUGE_FORMAT, meta->nm_value.nm_double);
+      break;
+    case NM_TYPE_BOOLEAN:
+      JSON_ADD (g, meta->nm_value.nm_boolean ? "true" : "false");
+      break;
+    default:
+      ERROR ("format_json_meta: unknown meta data type %d (name \"%s\")", meta->type, meta->name);
+      yajl_gen_null (g);
+  }
+
+  return format_json_meta (g, meta->next);
+} /* }}} int format_json_meta */
+
+static int format_time (yajl_gen g, cdtime_t t) /* {{{ */
+{
+  char buffer[RFC3339NANO_SIZE] = "";
+
+  if (rfc3339nano (buffer, sizeof (buffer), t) != 0)
+    return -1;
+
+  JSON_ADD (g, buffer);
+  return 0;
+} /* }}} int format_time */
+
+static int format_alert (yajl_gen g, notification_t const *n) /* {{{ */
+{
+  yajl_gen_array_open (g);
+  yajl_gen_map_open (g); /* BEGIN alert */
+
+  /*
+   * labels
+   */
+  JSON_ADD (g, "labels");
+  yajl_gen_map_open (g); /* BEGIN labels */
+
+  JSON_ADD (g, "alertname");
+  if (strncmp (n->plugin, n->type, strlen (n->plugin)) == 0)
+    JSON_ADDF (g, "collectd_%s", n->type);
+  else
+    JSON_ADDF (g, "collectd_%s_%s", n->plugin, n->type);
+
+  JSON_ADD (g, "instance");
+  JSON_ADD (g, n->host);
+
+  /* mangling of plugin instance and type instance into labels is copied from
+   * the Prometheus collectd exporter. */
+  if (strlen (n->plugin_instance) > 0)
+  {
+    JSON_ADD (g, n->plugin);
+    JSON_ADD (g, n->plugin_instance);
+  }
+  if (strlen (n->type_instance) > 0)
+  {
+    if (strlen (n->plugin_instance) > 0)
+      JSON_ADD (g, "type");
+    else
+      JSON_ADD (g, n->plugin);
+    JSON_ADD (g, n->type_instance);
+  }
+
+  JSON_ADD (g, "severity");
+  JSON_ADD (g, (n->severity == NOTIF_FAILURE) ? "FAILURE"
+                   : (n->severity == NOTIF_WARNING) ? "WARNING"
+                   : (n->severity == NOTIF_OKAY) ? "OKAY"
+                   : "UNKNOWN");
+
+  JSON_ADD (g, "service");
+  JSON_ADD (g, "collectd");
+
+  yajl_gen_map_close (g); /* END labels */
+
+  /*
+   * annotations
+   */
+  JSON_ADD (g, "annotations");
+  yajl_gen_map_open (g); /* BEGIN annotations */
+
+  JSON_ADD (g, "summary");
+  JSON_ADD (g, n->message);
+
+  if (format_json_meta (g, n->meta) != 0)
+    return -1;
+
+  yajl_gen_map_close (g); /* END annotations */
+
+  JSON_ADD (g, "startsAt");
+  format_time (g, n->time);
+
+  yajl_gen_map_close (g); /* END alert */
+  yajl_gen_array_close (g);
+
+  return 0;
+} /* }}} format_alert */
+
+/*
+ * Format (prometheus/alertmanager v1):
+ *
+ * [{
+ *   "labels": {
+ *     "alertname": "collectd_cpu",
+ *     "instance":  "host.example.com",
+ *     "severity":  "FAILURE",
+ *     "service":   "collectd",
+ *     "cpu":       "0",
+ *     "type":      "wait"
+ *   },
+ *   "annotations": {
+ *     "summary": "...",
+ *     // meta
+ *   },
+ *   "startsAt": <rfc3339 time>,
+ *   "endsAt": <rfc3339 time>, // not used
+ * }]
+ */
+int format_json_notification (char *buffer, size_t buffer_size, /* {{{ */
+                              notification_t const *n)
+{
+  yajl_gen g;
+  unsigned char const *out;
+#if HAVE_YAJL_V2
+  size_t unused_out_len;
+#else
+  unsigned int unused_out_len;
+#endif
+
+  if ((buffer == NULL) || (n == NULL))
+    return EINVAL;
+
+#if HAVE_YAJL_V2
+  g = yajl_gen_alloc (NULL);
+  if (g == NULL)
+    return -1;
+# if COLLECT_DEBUG
+  yajl_gen_config (g, yajl_gen_beautify);
+  yajl_gen_config (g, yajl_gen_validate_utf8);
+# endif
+
+#else /* !HAVE_YAJL_V2 */
+  yajl_gen_config conf = { 0 };
+# if COLLECT_DEBUG
+  conf.beautify = 1;
+  conf.indentString = "  ";
+# endif
+  g = yajl_gen_alloc (&conf, NULL);
+  if (g == NULL)
+    return -1;
+#endif
+
+  if (format_alert (g, n) != 0)
+  {
+    yajl_gen_clear (g);
+    yajl_gen_free (g);
+    return -1;
+  }
+
+  /* copy to output buffer */
+  yajl_gen_get_buf (g, &out, &unused_out_len);
+  sstrncpy (buffer, (void *) out, buffer_size);
+
+  yajl_gen_clear (g);
+  yajl_gen_free (g);
+  return 0;
+} /* }}} format_json_notification */
+#else
+int format_json_notification (char *buffer, size_t buffer_size, /* {{{ */
+                              notification_t const *n)
+{
+  ERROR ("format_json_notification: Not available (requires libyajl).");
+  return ENOTSUP;
+} /* }}} int format_json_notification */
+#endif
+
 /* vim: set sw=2 sts=2 et fdm=marker : */
index 3584dec..a3eda30 100644 (file)
@@ -42,5 +42,7 @@ int format_json_value_list (char *buffer,
     const data_set_t *ds, const value_list_t *vl, int store_rates);
 int format_json_finalize (char *buffer,
     size_t *ret_buffer_fill, size_t *ret_buffer_free);
+int format_json_notification (char *buffer, size_t buffer_size,
+    notification_t const *n);
 
 #endif /* UTILS_FORMAT_JSON_H */
diff --git a/src/utils_format_json_test.c b/src/utils_format_json_test.c
new file mode 100644 (file)
index 0000000..aa275fd
--- /dev/null
@@ -0,0 +1,169 @@
+/**
+ * collectd - src/utils_format_json_test.c
+ * Copyright (C) 2015       Florian octo Forster
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ *   Florian octo Forster <octo at collectd.org>
+ */
+
+#include "testing.h"
+#include "collectd.h"
+#include "utils_format_json.h"
+#include "common.h" /* for STATIC_ARRAY_SIZE */
+
+#include <yajl/yajl_common.h>
+#include <yajl/yajl_parse.h>
+#if HAVE_YAJL_YAJL_VERSION_H
+# include <yajl/yajl_version.h>
+#endif
+#if YAJL_MAJOR > 1
+# define HAVE_YAJL_V2 1
+#endif
+
+typedef struct
+{
+  char const *key;
+  char const *value;
+} label_t;
+
+typedef struct
+{
+  label_t *expected_labels;
+  size_t   expected_labels_num;
+
+  label_t *current_label;
+} test_case_t;
+
+#if HAVE_YAJL_V2
+static int test_map_key (void *ctx, unsigned char const *key, size_t key_len)
+#else
+static int test_map_key (void *ctx, unsigned char const *key, unsigned int key_len)
+#endif
+{
+  test_case_t *c = ctx;
+  size_t i;
+
+  c->current_label = NULL;
+  for (i = 0; i < c->expected_labels_num; i++)
+  {
+    label_t *l = c->expected_labels + i;
+    if ((strlen (l->key) == key_len)
+        && (strncmp (l->key, (char const *) key, key_len) == 0))
+    {
+      c->current_label = l;
+      break;
+    }
+  }
+
+  return 1; /* continue */
+}
+
+static int expect_label (char const *name, char const *got, char const *want)
+{
+  _Bool ok = (strcmp (got, want) == 0);
+  char msg[1024];
+
+  if (ok)
+    snprintf (msg, sizeof (msg), "label[\"%s\"] = \"%s\"", name, got);
+  else
+    snprintf (msg, sizeof (msg), "label[\"%s\"] = \"%s\", want \"%s\"", name, got, want);
+
+  OK1 (ok, msg);
+  return 0;
+}
+
+#if HAVE_YAJL_V2
+static int test_string (void *ctx, unsigned char const *value, size_t value_len)
+#else
+static int test_string (void *ctx, unsigned char const *value, unsigned int value_len)
+#endif
+{
+  test_case_t *c = ctx;
+
+  if (c->current_label != NULL)
+  {
+    label_t *l = c->current_label;
+    char *got;
+    int status;
+
+    got = malloc (value_len + 1);
+    memmove (got, value, value_len);
+    got[value_len] = 0;
+
+    status = expect_label (l->key, got, l->value);
+
+    free (got);
+
+    if (status != 0)
+      return 0; /* abort */
+  }
+
+  return 1; /* continue */
+}
+
+static int expect_json_labels (char *json, label_t *labels, size_t labels_num)
+{
+  yajl_callbacks funcs = {
+    .yajl_string = test_string,
+    .yajl_map_key = test_map_key,
+  };
+
+  test_case_t c = { labels, labels_num, NULL };
+
+  yajl_handle hndl;
+#if HAVE_YAJL_V2
+  CHECK_NOT_NULL (hndl = yajl_alloc (&funcs, /* alloc = */ NULL, &c));
+#else
+  CHECK_NOT_NULL (hndl = yajl_alloc (&funcs, /* config = */ NULL, /* alloc = */ NULL, &c));
+#endif
+  OK (yajl_parse (hndl, (unsigned char *) json, strlen (json)) == yajl_status_ok);
+
+  yajl_free (hndl);
+  return 0;
+}
+
+DEF_TEST(notification)
+{
+  label_t labels[] = {
+    {"summary", "this is a message"},
+    {"alertname", "collectd_unit_test"},
+    {"instance", "example.com"},
+    {"service", "collectd"},
+    {"unit", "case"},
+  };
+
+  /* 1448284606.125 ^= 1555083754651779072 */
+  notification_t n = { NOTIF_WARNING, 1555083754651779072ULL, "this is a message",
+    "example.com", "unit", "", "test", "case", NULL };
+
+  char got[1024];
+  CHECK_ZERO (format_json_notification (got, sizeof (got), &n));
+  // printf ("got = \"%s\";\n", got);
+
+  return expect_json_labels (got, labels, STATIC_ARRAY_SIZE (labels));
+}
+
+int main (void)
+{
+  RUN_TEST(notification);
+
+  END_TEST;
+}
index febe2cb..41055c7 100644 (file)
@@ -59,7 +59,6 @@
 static int kairosdb_escape_string (char *buffer, size_t buffer_size, /* {{{ */
     const char *string)
 {
-  size_t src_pos;
   size_t dst_pos;
 
   if ((buffer == NULL) || (string == NULL))
@@ -82,7 +81,7 @@ static int kairosdb_escape_string (char *buffer, size_t buffer_size, /* {{{ */
   /* Escape special characters */
   /* authorize -_. and alpha num but also escapes " */
   BUFFER_ADD ('"');
-  for (src_pos = 0; string[src_pos] != 0; src_pos++)
+  for (size_t src_pos = 0; string[src_pos] != 0; src_pos++)
   {
     if (isalnum(string[src_pos]) ||
       0x2d == string[src_pos] ||
@@ -223,7 +222,6 @@ static int value_list_to_kairosdb (char *buffer, size_t buffer_size, /* {{{ */
   char temp[512];
   size_t offset = 0;
   int status;
-  size_t i;
 
   memset (buffer, 0, buffer_size);
 
@@ -245,7 +243,7 @@ static int value_list_to_kairosdb (char *buffer, size_t buffer_size, /* {{{ */
   BUFFER_ADD (",\"%s\": %s", (key), temp); \
 } while (0)
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     /* All value lists have a leading comma. The first one will be replaced with
      * a square bracket in `format_kairosdb_finalize'. */
index 2fb3f83..bfb9292 100644 (file)
@@ -97,9 +97,8 @@ static void change_bin_width (latency_counter_t *lc, cdtime_t latency) /* {{{ */
   if (lc->num > 0) // if the histogram has data then iterate else skip
   {
       double width_change_ratio = ((double) old_bin_width) / ((double) new_bin_width);
-      size_t i;
 
-      for (i = 0; i < HISTOGRAM_NUM_BINS; i++)
+      for (size_t i = 0; i < HISTOGRAM_NUM_BINS; i++)
       {
          size_t new_bin = (size_t) (((double) i) * width_change_ratio);
          if (i == new_bin)
index a0da51e..9c3b0ad 100644 (file)
@@ -50,12 +50,11 @@ DEF_TEST(simple)
     { 99, 0.3,  99, 103, 20.6},
     /* { -1, 0.3,  99, 103, 20.6}, see issue #1139 */
   };
-  size_t i;
   latency_counter_t *l;
 
   CHECK_NOT_NULL (l = latency_counter_create ());
 
-  for (i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
+  for (size_t i = 0; i < STATIC_ARRAY_SIZE (cases); i++) {
     printf ("# case %zu: DOUBLE_TO_CDTIME_T(%g) = %"PRIu64"\n",
         i, cases[i].val, DOUBLE_TO_CDTIME_T (cases[i].val));
     latency_counter_add (l, DOUBLE_TO_CDTIME_T (cases[i].val));
@@ -72,12 +71,11 @@ DEF_TEST(simple)
 
 DEF_TEST(percentile)
 {
-  size_t i;
   latency_counter_t *l;
 
   CHECK_NOT_NULL (l = latency_counter_create ());
 
-  for (i = 0; i < 100; i++) {
+  for (size_t i = 0; i < 100; i++) {
     latency_counter_add (l, TIME_T_TO_CDTIME_T (((time_t) i) + 1));
   }
 
index a2e96a6..b8dabb1 100644 (file)
@@ -216,7 +216,6 @@ uuidcache_init(void)
        FILE *procpt;
        char uuid[16], *label = NULL;
        char device[110];
-       int firstPass;
        int handleOnFirst;
 
        if(uuidCache) {
@@ -228,7 +227,7 @@ uuidcache_init(void)
                return;
        }
 
-       for(firstPass = 1; firstPass >= 0; firstPass--) {
+       for(int firstPass = 1; firstPass >= 0; firstPass--) {
                fseek(procpt, 0, SEEK_SET);
                while(fgets(line, sizeof(line), procpt)) {
                        if(sscanf(line, " %d %d %d %[^\n ]",
@@ -318,14 +317,13 @@ static char *
 get_spec_by_uuid(const char *s)
 {
        char uuid[16];
-       int i;
 
        if(strlen(s) != 36
        || s[8] != '-' || s[13] != '-' || s[18] != '-' || s[23] != '-') {
                goto bad_uuid;
        }
 
-       for(i=0; i<16; i++) {
+       for(int i=0; i<16; i++) {
                if(*s == '-') {
                        s++;
                }
@@ -382,7 +380,6 @@ static char *get_device_name(const char *optstr)
 static cu_mount_t *cu_mount_listmntent (void)
 {
        cu_mount_t *last = *list;
-       struct tabmntent *p;
        struct mntent *mnt;
 
        struct tabmntent *mntlist;
@@ -394,7 +391,7 @@ static cu_mount_t *cu_mount_listmntent (void)
 #endif /* COLLECT_DEBUG */
        }
 
-       for(p = mntlist; p; p = p->next) {
+       for(struct tabmntent *p = mntlist; p; p = p->next) {
                char *loop = NULL, *device = NULL;
 
                mnt = p->ment;
@@ -451,7 +448,6 @@ static cu_mount_t *cu_mount_getfsstat (void)
        STRUCT_STATFS *buf;
 
        int num;
-       int i;
 
        cu_mount_t *first = NULL;
        cu_mount_t *last  = NULL;
@@ -484,7 +480,7 @@ static cu_mount_t *cu_mount_getfsstat (void)
                return (NULL);
        }
 
-       for (i = 0; i < num; i++)
+       for (int i = 0; i < num; i++)
        {
                if ((new = calloc (1, sizeof (*new))) == NULL)
                        break;
@@ -741,10 +737,9 @@ cu_mount_t *cu_mount_getlist(cu_mount_t **list)
 
 void cu_mount_freelist (cu_mount_t *list)
 {
-       cu_mount_t *this;
        cu_mount_t *next;
 
-       for (this = list; this != NULL; this = next)
+       for (cu_mount_t *this = list; this != NULL; this = next)
        {
                next = this->next;
 
index edb6c95..884de8f 100644 (file)
@@ -83,9 +83,7 @@ static pthread_mutex_t async_creation_lock = PTHREAD_MUTEX_INITIALIZER;
  */
 static void rra_free (int rra_num, char **rra_def) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < rra_num; i++)
+  for (int i = 0; i < rra_num; i++)
   {
     sfree (rra_def[i]);
   }
@@ -100,8 +98,7 @@ static void srrd_create_args_destroy (srrd_create_args_t *args)
   sfree (args->filename);
   if (args->argv != NULL)
   {
-    int i;
-    for (i = 0; i < args->argc; i++)
+    for (int i = 0; i < args->argc; i++)
       sfree (args->argv[i]);
     sfree (args->argv);
   }
@@ -173,7 +170,6 @@ static int rra_get (char ***ret, const value_list_t *vl, /* {{{ */
 
   int cdp_num;
   int cdp_len;
-  int i, j;
 
   /* The stepsize we use here: If it is user-set, use it. If not, use the
    * interval of the value-list. */
@@ -221,7 +217,7 @@ static int rra_get (char ***ret, const value_list_t *vl, /* {{{ */
   rra_num = 0;
 
   cdp_len = 0;
-  for (i = 0; i < rts_num; i++)
+  for (int i = 0; i < rts_num; i++)
   {
     int span = rts[i];
 
@@ -237,7 +233,7 @@ static int rra_get (char ***ret, const value_list_t *vl, /* {{{ */
     cdp_num = (int) ceil (((double) span)
         / ((double) (cdp_len * ss)));
 
-    for (j = 0; j < rra_types_num; j++)
+    for (int j = 0; j < rra_types_num; j++)
     {
       char buffer[128];
       int status;
@@ -270,9 +266,7 @@ static int rra_get (char ***ret, const value_list_t *vl, /* {{{ */
 
 static void ds_free (int ds_num, char **ds_def) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ds_num; i++)
+  for (int i = 0; i < ds_num; i++)
     if (ds_def[i] != NULL)
       free (ds_def[i]);
   free (ds_def);
index 863f497..bc6d294 100644 (file)
@@ -970,7 +970,6 @@ static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */
        user_config_t *conf;
        user_data_t ud;
        char callback_name[DATA_MAX_NAME_LEN];
-       int i;
 
        conf = calloc (1, sizeof (*conf));
        if (conf == NULL)
@@ -1005,7 +1004,7 @@ static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */
                return (EINVAL);
        }
 
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
@@ -1149,9 +1148,7 @@ static int varnish_config_instance (const oconfig_item_t *ci) /* {{{ */
 
 static int varnish_config (oconfig_item_t *ci) /* {{{ */
 {
-       int i;
-
-       for (i = 0; i < ci->children_num; i++)
+       for (int i = 0; i < ci->children_num; i++)
        {
                oconfig_item_t *child = ci->children + i;
 
index 93bb69b..7df51c1 100644 (file)
@@ -155,7 +155,7 @@ static int refresh_lists (void);
 static void
 init_value_list (value_list_t *vl, virDomainPtr dom)
 {
-    int i, n;
+    int n;
     const char *name;
     char uuid[VIR_UUID_STRING_BUFLEN];
 
@@ -164,7 +164,7 @@ init_value_list (value_list_t *vl, virDomainPtr dom)
     vl->host[0] = '\0';
 
     /* Construct the hostname field according to HostnameFormat. */
-    for (i = 0; i < HF_MAX_FIELDS; ++i) {
+    for (int i = 0; i < HF_MAX_FIELDS; ++i) {
         if (hostname_format[i] == hf_none)
             continue;
 
@@ -195,7 +195,7 @@ init_value_list (value_list_t *vl, virDomainPtr dom)
     vl->host[sizeof (vl->host) - 1] = '\0';
 
     /* Construct the plugin instance field according to PluginInstanceFormat. */
-    for (i = 0; i < PLGINST_MAX_FIELDS; ++i) {
+    for (int i = 0; i < PLGINST_MAX_FIELDS; ++i) {
         if (plugin_instance_format[i] == plginst_none)
             continue;
 
@@ -395,7 +395,7 @@ lv_config (const char *key, const char *value)
     if (strcasecmp (key, "HostnameFormat") == 0) {
         char *value_copy;
         char *fields[HF_MAX_FIELDS];
-        int i, n;
+        int n;
 
         value_copy = strdup (value);
         if (value_copy == NULL) {
@@ -410,7 +410,7 @@ lv_config (const char *key, const char *value)
             return -1;
         }
 
-        for (i = 0; i < n; ++i) {
+        for (int i = 0; i < n; ++i) {
             if (strcasecmp (fields[i], "hostname") == 0)
                 hostname_format[i] = hf_hostname;
             else if (strcasecmp (fields[i], "name") == 0)
@@ -425,7 +425,7 @@ lv_config (const char *key, const char *value)
         }
         sfree (value_copy);
 
-        for (i = n; i < HF_MAX_FIELDS; ++i)
+        for (int i = n; i < HF_MAX_FIELDS; ++i)
             hostname_format[i] = hf_none;
 
         return 0;
@@ -434,7 +434,7 @@ lv_config (const char *key, const char *value)
     if (strcasecmp (key, "PluginInstanceFormat") == 0) {
         char *value_copy;
         char *fields[PLGINST_MAX_FIELDS];
-        int i, n;
+        int n;
 
         value_copy = strdup (value);
         if (value_copy == NULL) {
@@ -449,7 +449,7 @@ lv_config (const char *key, const char *value)
             return -1;
         }
 
-        for (i = 0; i < n; ++i) {
+        for (int i = 0; i < n; ++i) {
             if (strcasecmp (fields[i], "none") == 0) {
                 plugin_instance_format[i] = plginst_none;
                 break;
@@ -465,7 +465,7 @@ lv_config (const char *key, const char *value)
         }
         sfree (value_copy);
 
-        for (i = n; i < PLGINST_MAX_FIELDS; ++i)
+        for (int i = n; i < PLGINST_MAX_FIELDS; ++i)
             plugin_instance_format[i] = plginst_none;
 
         return 0;
@@ -493,7 +493,6 @@ static int
 lv_read (void)
 {
     time_t t;
-    int i;
 
     if (conn == NULL) {
         /* `conn_string == NULL' is acceptable. */
@@ -523,25 +522,24 @@ lv_read (void)
     }
 
 #if 0
-    for (i = 0; i < nr_domains; ++i)
+    for (int i = 0; i < nr_domains; ++i)
         fprintf (stderr, "domain %s\n", virDomainGetName (domains[i]));
-    for (i = 0; i < nr_block_devices; ++i)
+    for (int i = 0; i < nr_block_devices; ++i)
         fprintf  (stderr, "block device %d %s:%s\n",
                   i, virDomainGetName (block_devices[i].dom),
                   block_devices[i].path);
-    for (i = 0; i < nr_interface_devices; ++i)
+    for (int i = 0; i < nr_interface_devices; ++i)
         fprintf (stderr, "interface device %d %s:%s\n",
                  i, virDomainGetName (interface_devices[i].dom),
                  interface_devices[i].path);
 #endif
 
     /* Get CPU usage, memory, VCPU usage for each domain. */
-    for (i = 0; i < nr_domains; ++i) {
+    for (int i = 0; i < nr_domains; ++i) {
         virDomainInfo info;
         virVcpuInfoPtr vinfo = NULL;
         virDomainMemoryStatPtr minfo = NULL;
         int status;
-        int j;
 
         status = virDomainGetInfo (domains[i], &info);
         if (status != 0)
@@ -576,7 +574,7 @@ lv_read (void)
             continue;
         }
 
-        for (j = 0; j < info.nrVirtCpu; ++j)
+        for (int j = 0; j < info.nrVirtCpu; ++j)
             vcpu_submit (vinfo[j].cpuTime,
                     domains[i], vinfo[j].number, "virt_vcpu");
 
@@ -597,7 +595,7 @@ lv_read (void)
             continue;
         }
 
-        for (j = 0; j < status; j++) {
+        for (int j = 0; j < status; j++) {
             memory_stats_submit ((gauge_t) minfo[j].val * 1024, domains[i], minfo[j].tag);
         }
 
@@ -606,7 +604,7 @@ lv_read (void)
 
 
     /* Get block device stats for each domain. */
-    for (i = 0; i < nr_block_devices; ++i) {
+    for (int i = 0; i < nr_block_devices; ++i) {
         struct _virDomainBlockStats stats;
 
         if (virDomainBlockStats (block_devices[i].dom, block_devices[i].path,
@@ -625,7 +623,7 @@ lv_read (void)
     } /* for (nr_block_devices) */
 
     /* Get interface stats for each domain. */
-    for (i = 0; i < nr_interface_devices; ++i) {
+    for (int i = 0; i < nr_interface_devices; ++i) {
         struct _virDomainInterfaceStats stats;
         char *display_name = NULL;
 
@@ -683,7 +681,6 @@ refresh_lists (void)
     }
 
     if (n > 0) {
-        int i;
         int *domids;
 
         /* Get list of domains. */
@@ -705,14 +702,13 @@ refresh_lists (void)
         free_domains ();
 
         /* Fetch each domain and add it to the list, unless ignore. */
-        for (i = 0; i < n; ++i) {
+        for (int i = 0; i < n; ++i) {
             virDomainPtr dom = NULL;
             const char *name;
             char *xml = NULL;
             xmlDocPtr xml_doc = NULL;
             xmlXPathContextPtr xpath_ctx = NULL;
             xmlXPathObjectPtr xpath_obj = NULL;
-            int j;
 
             dom = virDomainLookupByID (conn, domids[i]);
             if (dom == NULL) {
@@ -759,7 +755,7 @@ refresh_lists (void)
                 xpath_obj->nodesetval == NULL)
                 goto cont;
 
-            for (j = 0; j < xpath_obj->nodesetval->nodeNr; ++j) {
+            for (int j = 0; j < xpath_obj->nodesetval->nodeNr; ++j) {
                 xmlNodePtr node;
                 char *path = NULL;
 
@@ -788,16 +784,15 @@ refresh_lists (void)
 
             xmlNodeSetPtr xml_interfaces = xpath_obj->nodesetval;
 
-            for (j = 0; j < xml_interfaces->nodeNr; ++j) {
+            for (int j = 0; j < xml_interfaces->nodeNr; ++j) {
                 char *path = NULL;
                 char *address = NULL;
                 xmlNodePtr xml_interface;
 
                 xml_interface = xml_interfaces->nodeTab[j];
                 if (!xml_interface) continue;
-                xmlNodePtr child = NULL;
 
-                for (child = xml_interface->children; child; child = child->next) {
+                for (xmlNodePtr child = xml_interface->children; child; child = child->next) {
                     if (child->type != XML_ELEMENT_NODE) continue;
 
                     if (xmlStrEqual(child->name, (const xmlChar *) "target")) {
@@ -836,10 +831,8 @@ refresh_lists (void)
 static void
 free_domains (void)
 {
-    int i;
-
     if (domains) {
-        for (i = 0; i < nr_domains; ++i)
+        for (int i = 0; i < nr_domains; ++i)
             virDomainFree (domains[i]);
         sfree (domains);
     }
@@ -869,10 +862,8 @@ add_domain (virDomainPtr dom)
 static void
 free_block_devices (void)
 {
-    int i;
-
     if (block_devices) {
-        for (i = 0; i < nr_block_devices; ++i)
+        for (int i = 0; i < nr_block_devices; ++i)
             sfree (block_devices[i].path);
         sfree (block_devices);
     }
@@ -909,10 +900,8 @@ add_block_device (virDomainPtr dom, const char *path)
 static void
 free_interface_devices (void)
 {
-    int i;
-
     if (interface_devices) {
-        for (i = 0; i < nr_interface_devices; ++i) {
+        for (int i = 0; i < nr_interface_devices; ++i) {
             sfree (interface_devices[i].path);
             sfree (interface_devices[i].address);
             sfree (interface_devices[i].number);
index 0b7a94f..2dce2d7 100644 (file)
@@ -195,7 +195,6 @@ static int wg_flush_nolock (cdtime_t timeout, struct wg_callback *cb)
 static int wg_callback_init (struct wg_callback *cb)
 {
     struct addrinfo *ai_list;
-    struct addrinfo *ai_ptr;
     cdtime_t now;
     int status;
 
@@ -230,7 +229,7 @@ static int wg_callback_init (struct wg_callback *cb)
     }
 
     assert (ai_list != NULL);
-    for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+    for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
     {
         cb->sock_fd = socket (ai_ptr->ai_family, ai_ptr->ai_socktype,
                 ai_ptr->ai_protocol);
@@ -476,7 +475,6 @@ static int wg_config_node (oconfig_item_t *ci)
     struct wg_callback *cb;
     user_data_t user_data = { 0 };
     char callback_name[DATA_MAX_NAME_LEN];
-    int i;
     int status = 0;
 
     cb = calloc (1, sizeof (*cb));
@@ -513,7 +511,7 @@ static int wg_config_node (oconfig_item_t *ci)
     pthread_mutex_init (&cb->send_lock, /* attr = */ NULL);
     C_COMPLAIN_INIT (&cb->init_complaint);
 
-    for (i = 0; i < ci->children_num; i++)
+    for (int i = 0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
 
@@ -589,9 +587,7 @@ static int wg_config_node (oconfig_item_t *ci)
 
 static int wg_config (oconfig_item_t *ci)
 {
-    int i;
-
-    for (i = 0; i < ci->children_num; i++)
+    for (int i = 0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
 
index ec538b6..d8d8c34 100644 (file)
@@ -65,6 +65,8 @@ struct wh_callback_s
 #define WH_FORMAT_JSON     1
 #define WH_FORMAT_KAIROSDB 2
         int format;
+        _Bool send_metrics;
+        _Bool send_notifications;
 
         CURL *curl;
         struct curl_slist *headers;
@@ -111,11 +113,12 @@ static void wh_reset_buffer (wh_callback_t *cb)  /* {{{ */
         }
 } /* }}} wh_reset_buffer */
 
-static int wh_send_buffer (wh_callback_t *cb) /* {{{ */
+/* must hold cb->send_lock when calling */
+static int wh_post_nolock (wh_callback_t *cb, char const *data) /* {{{ */
 {
         int status = 0;
 
-        curl_easy_setopt (cb->curl, CURLOPT_POSTFIELDS, cb->send_buffer);
+        curl_easy_setopt (cb->curl, CURLOPT_POSTFIELDS, data);
         status = curl_easy_perform (cb->curl);
 
         wh_log_http_error (cb);
@@ -127,7 +130,7 @@ static int wh_send_buffer (wh_callback_t *cb) /* {{{ */
                                 status, cb->curl_errbuf);
         }
         return (status);
-} /* }}} wh_send_buffer */
+} /* }}} wh_post_nolock */
 
 static int wh_callback_init (wh_callback_t *cb) /* {{{ */
 {
@@ -247,7 +250,7 @@ static int wh_flush_nolock (cdtime_t timeout, wh_callback_t *cb) /* {{{ */
                         return (0);
                 }
 
-                status = wh_send_buffer (cb);
+                status = wh_post_nolock (cb, cb->send_buffer);
                 wh_reset_buffer (cb);
         }
         else if (cb->format == WH_FORMAT_JSON || cb->format == WH_FORMAT_KAIROSDB)
@@ -269,7 +272,7 @@ static int wh_flush_nolock (cdtime_t timeout, wh_callback_t *cb) /* {{{ */
                         return (status);
                 }
 
-                status = wh_send_buffer (cb);
+                status = wh_post_nolock (cb, cb->send_buffer);
                 wh_reset_buffer (cb);
         }
         else
@@ -297,15 +300,11 @@ static int wh_flush (cdtime_t timeout, /* {{{ */
 
         pthread_mutex_lock (&cb->send_lock);
 
-        if (cb->curl == NULL)
+        if (wh_callback_init (cb) != 0)
         {
-                status = wh_callback_init (cb);
-                if (status != 0)
-                {
-                        ERROR ("write_http plugin: wh_callback_init failed.");
-                        pthread_mutex_unlock (&cb->send_lock);
-                        return (-1);
-                }
+                ERROR ("write_http plugin: wh_callback_init failed.");
+                pthread_mutex_unlock (&cb->send_lock);
+                return (-1);
         }
 
         status = wh_flush_nolock (timeout, cb);
@@ -398,16 +397,11 @@ static int wh_write_command (const data_set_t *ds, const value_list_t *vl, /* {{
         }
 
         pthread_mutex_lock (&cb->send_lock);
-
-        if (cb->curl == NULL)
+        if (wh_callback_init (cb) != 0)
         {
-                status = wh_callback_init (cb);
-                if (status != 0)
-                {
-                        ERROR ("write_http plugin: wh_callback_init failed.");
-                        pthread_mutex_unlock (&cb->send_lock);
-                        return (-1);
-                }
+                ERROR ("write_http plugin: wh_callback_init failed.");
+                pthread_mutex_unlock (&cb->send_lock);
+                return (-1);
         }
 
         if (command_len >= cb->send_buffer_free)
@@ -446,16 +440,11 @@ static int wh_write_json (const data_set_t *ds, const value_list_t *vl, /* {{{ *
         int status;
 
         pthread_mutex_lock (&cb->send_lock);
-
-        if (cb->curl == NULL)
+        if (wh_callback_init (cb) != 0)
         {
-                status = wh_callback_init (cb);
-                if (status != 0)
-                {
-                        ERROR ("write_http plugin: wh_callback_init failed.");
-                        pthread_mutex_unlock (&cb->send_lock);
-                        return (-1);
-                }
+                ERROR ("write_http plugin: wh_callback_init failed.");
+                pthread_mutex_unlock (&cb->send_lock);
+                return (-1);
         }
 
         status = format_json_value_list (cb->send_buffer,
@@ -558,6 +547,7 @@ static int wh_write (const data_set_t *ds, const value_list_t *vl, /* {{{ */
                 return (-EINVAL);
 
         cb = user_data->data;
+        assert (cb->send_metrics);
 
         switch(cb->format) {
             case WH_FORMAT_JSON:
@@ -573,6 +563,39 @@ static int wh_write (const data_set_t *ds, const value_list_t *vl, /* {{{ */
         return (status);
 } /* }}} int wh_write */
 
+static int wh_notify (notification_t const *n, user_data_t *ud) /* {{{ */
+{
+        wh_callback_t *cb;
+        char alert[4096];
+        int status;
+
+        if ((ud == NULL) || (ud->data == NULL))
+                return (EINVAL);
+
+        cb = ud->data;
+        assert (cb->send_notifications);
+
+        status = format_json_notification (alert, sizeof (alert), n);
+        if (status != 0)
+        {
+                ERROR ("write_http plugin: formatting notification failed");
+                return status;
+        }
+
+        pthread_mutex_lock (&cb->send_lock);
+        if (wh_callback_init (cb) != 0)
+        {
+                ERROR ("write_http plugin: wh_callback_init failed.");
+                pthread_mutex_unlock (&cb->send_lock);
+                return (-1);
+        }
+
+        status = wh_post_nolock (cb, alert);
+        pthread_mutex_unlock (&cb->send_lock);
+
+        return (status);
+} /* }}} int wh_notify */
+
 static int config_set_format (wh_callback_t *cb, /* {{{ */
                 oconfig_item_t *ci)
 {
@@ -629,7 +652,6 @@ static int wh_config_node (oconfig_item_t *ci) /* {{{ */
         user_data_t user_data = { 0 };
         char callback_name[DATA_MAX_NAME_LEN];
         int status = 0;
-        int i;
 
         cb = calloc (1, sizeof (*cb));
         if (cb == NULL)
@@ -645,7 +667,8 @@ static int wh_config_node (oconfig_item_t *ci) /* {{{ */
         cb->timeout = 0;
         cb->log_http_error = 0;
         cb->headers = NULL;
-
+        cb->send_metrics = 1;
+        cb->send_notifications = 0;
 
         pthread_mutex_init (&cb->send_lock, /* attr = */ NULL);
 
@@ -655,7 +678,7 @@ static int wh_config_node (oconfig_item_t *ci) /* {{{ */
         if (strcasecmp ("URL", ci->key) == 0)
                 cf_util_get_string (ci, &cb->location);
 
-        for (i = 0; i < ci->children_num; i++)
+        for (int i = 0; i < ci->children_num; i++)
         {
                 oconfig_item_t *child = ci->children + i;
 
@@ -714,6 +737,10 @@ static int wh_config_node (oconfig_item_t *ci) /* {{{ */
                 }
                 else if (strcasecmp ("Format", child->key) == 0)
                         status = config_set_format (cb, child);
+                else if (strcasecmp ("Metrics", child->key) == 0)
+                        cf_util_get_boolean (child, &cb->send_metrics);
+                else if (strcasecmp ("Notifications", child->key) == 0)
+                        cf_util_get_boolean (child, &cb->send_notifications);
                 else if (strcasecmp ("StoreRates", child->key) == 0)
                         status = cf_util_get_boolean (child, &cb->store_rates);
                 else if (strcasecmp ("BufferSize", child->key) == 0)
@@ -751,6 +778,14 @@ static int wh_config_node (oconfig_item_t *ci) /* {{{ */
                 return (-1);
         }
 
+        if (!cb->send_metrics && !cb->send_notifications)
+        {
+                ERROR ("write_http plugin: Neither metrics nor notifications "
+                       "are enabled for \"%s\".", cb->name);
+                wh_callback_free (cb);
+                return (-1);
+        }
+
         if (cb->low_speed_limit > 0)
                 cb->low_speed_time = CDTIME_T_TO_TIME_T(plugin_get_interval());
 
@@ -782,16 +817,27 @@ static int wh_config_node (oconfig_item_t *ci) /* {{{ */
         plugin_register_flush (callback_name, wh_flush, &user_data);
 
         user_data.free_func = wh_callback_free;
-        plugin_register_write (callback_name, wh_write, &user_data);
+
+        if (cb->send_metrics)
+        {
+                plugin_register_write (callback_name, wh_write, &user_data);
+                user_data.free_func = NULL;
+
+                plugin_register_flush (callback_name, wh_flush, &user_data);
+        }
+
+        if (cb->send_notifications)
+        {
+                plugin_register_notification (callback_name, wh_notify, &user_data);
+                user_data.free_func = NULL;
+        }
 
         return (0);
 } /* }}} int wh_config_node */
 
 static int wh_config (oconfig_item_t *ci) /* {{{ */
 {
-        int i;
-
-        for (i = 0; i < ci->children_num; i++)
+        for (int i = 0; i < ci->children_num; i++)
         {
                 oconfig_item_t *child = ci->children + i;
 
index 2df52a2..6364c6c 100644 (file)
@@ -241,7 +241,6 @@ static void kafka_topic_context_free(void *p) /* {{{ */
 static void kafka_config_topic(rd_kafka_conf_t *conf, oconfig_item_t *ci) /* {{{ */
 {
     int                          status;
-    int                          i;
     struct kafka_topic_context  *tctx;
     char                        *key = NULL;
     char                        *val;
@@ -293,7 +292,7 @@ static void kafka_config_topic(rd_kafka_conf_t *conf, oconfig_item_t *ci) /* {{{
         goto errout;
     }
 
-    for (i = 0; i < ci->children_num; i++) {
+    for (int i = 0; i < ci->children_num; i++) {
         /*
          * The code here could be simplified but makes room
          * for easy adding of new options later on.
@@ -412,7 +411,6 @@ static void kafka_config_topic(rd_kafka_conf_t *conf, oconfig_item_t *ci) /* {{{
 
 static int kafka_config(oconfig_item_t *ci) /* {{{ */
 {
-    int                          i;
     oconfig_item_t              *child;
     rd_kafka_conf_t             *conf;
     rd_kafka_conf_res_t          ret;
@@ -422,7 +420,7 @@ static int kafka_config(oconfig_item_t *ci) /* {{{ */
         WARNING("cannot allocate kafka configuration.");
         return -1;
     }
-    for (i = 0; i < ci->children_num; i++)  {
+    for (int i = 0; i < ci->children_num; i++)  {
         child = &ci->children[i];
 
         if (strcasecmp("Topic", child->key) == 0) {
index 8d9ed9d..8fb13c3 100644 (file)
@@ -76,7 +76,6 @@ static bson *wm_create_bson (const data_set_t *ds, /* {{{ */
 {
   bson *ret;
   gauge_t *rates;
-  int i;
 
   ret = bson_alloc (); /* matched by bson_dealloc() */
   if (ret == NULL)
@@ -108,7 +107,7 @@ static bson *wm_create_bson (const data_set_t *ds, /* {{{ */
   bson_append_string (ret, "type_instance", vl->type_instance);
 
   bson_append_start_array (ret, "values"); /* {{{ */
-  for (i = 0; i < ds->ds_num; i++)
+  for (int i = 0; i < ds->ds_num; i++)
   {
     char key[16];
 
@@ -130,7 +129,7 @@ static bson *wm_create_bson (const data_set_t *ds, /* {{{ */
   bson_append_finish_array (ret); /* }}} values */
 
   bson_append_start_array (ret, "dstypes"); /* {{{ */
-  for (i = 0; i < ds->ds_num; i++)
+  for (int i = 0; i < ds->ds_num; i++)
   {
     char key[16];
 
@@ -144,7 +143,7 @@ static bson *wm_create_bson (const data_set_t *ds, /* {{{ */
   bson_append_finish_array (ret); /* }}} dstypes */
 
   bson_append_start_array (ret, "dsnames"); /* {{{ */
-  for (i = 0; i < ds->ds_num; i++)
+  for (int i = 0; i < ds->ds_num; i++)
   {
     char key[16];
 
@@ -271,7 +270,6 @@ static int wm_config_node (oconfig_item_t *ci) /* {{{ */
 {
   wm_node_t *node;
   int status;
-  int i;
 
   node = calloc (1, sizeof (*node));
   if (node == NULL)
@@ -289,7 +287,7 @@ static int wm_config_node (oconfig_item_t *ci) /* {{{ */
     return (status);
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -358,9 +356,7 @@ static int wm_config_node (oconfig_item_t *ci) /* {{{ */
 
 static int wm_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 3608953..135a458 100644 (file)
@@ -168,7 +168,6 @@ static int wr_config_node (oconfig_item_t *ci) /* {{{ */
   wr_node_t *node;
   int timeout;
   int status;
-  int i;
 
   node = calloc (1, sizeof (*node));
   if (node == NULL)
@@ -191,7 +190,7 @@ static int wr_config_node (oconfig_item_t *ci) /* {{{ */
     return (status);
   }
 
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
@@ -251,9 +250,7 @@ static int wr_config_node (oconfig_item_t *ci) /* {{{ */
 
 static int wr_config (oconfig_item_t *ci) /* {{{ */
 {
-  int i;
-
-  for (i = 0; i < ci->children_num; i++)
+  for (int i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
 
index 261327a..10f8958 100644 (file)
@@ -186,8 +186,6 @@ wrr_notification_to_message(struct riemann_host *host, /* {{{ */
   riemann_event_t *event;
   char service_buffer[6 * DATA_MAX_NAME_LEN];
   char const *severity;
-  notification_meta_t *meta;
-  size_t i;
 
   switch (n->severity) {
   case NOTIF_OKAY:
@@ -228,18 +226,18 @@ wrr_notification_to_message(struct riemann_host *host, /* {{{ */
     riemann_event_string_attribute_add(event, "type_instance",
                                        n->type_instance);
 
-  for (i = 0; i < riemann_attrs_num; i += 2)
+  for (size_t i = 0; i < riemann_attrs_num; i += 2)
     riemann_event_string_attribute_add(event, riemann_attrs[i],
                                        riemann_attrs[i + 1]);
 
-  for (i = 0; i < riemann_tags_num; i++)
+  for (size_t i = 0; i < riemann_tags_num; i++)
     riemann_event_tag_add(event, riemann_tags[i]);
 
   if (n->message[0] != 0)
     riemann_event_string_attribute_add(event, "description", n->message);
 
   /* Pull in values from threshold and add extra attributes */
-  for (meta = n->meta; meta != NULL; meta = meta->next) {
+  for (notification_meta_t *meta = n->meta; meta != NULL; meta = meta->next) {
     if (strcasecmp("CurrentValue", meta->name) == 0 &&
         meta->type == NM_TYPE_DOUBLE) {
       riemann_event_set(event, RIEMANN_EVENT_FIELD_METRIC_D,
index 352c37f..f2ba9dc 100644 (file)
@@ -131,7 +131,6 @@ static int ut_check_one_threshold (const data_set_t *ds,
     int *statuses)
 { /* {{{ */
   int ret = -1;
-  size_t i;
   int status;
   gauge_t values_copy[ds->ds_num];
 
@@ -151,7 +150,7 @@ static int ut_check_one_threshold (const data_set_t *ds,
     }
 
     /* Prepare `sum' and `num'. */
-    for (i = 0; i < ds->ds_num; i++)
+    for (size_t i = 0; i < ds->ds_num; i++)
       if (!isnan (values[i]))
       {
         num++;
@@ -161,17 +160,17 @@ static int ut_check_one_threshold (const data_set_t *ds,
     if ((num == 0) /* All data sources are undefined. */
         || (sum == 0.0)) /* Sum is zero, cannot calculate percentage. */
     {
-      for (i = 0; i < ds->ds_num; i++)
+      for (size_t i = 0; i < ds->ds_num; i++)
         values_copy[i] = NAN;
     }
     else /* We can actually calculate the percentage. */
     {
-      for (i = 0; i < ds->ds_num; i++)
+      for (size_t i = 0; i < ds->ds_num; i++)
         values_copy[i] = 100.0 * values[i] / sum;
     }
   } /* if (UT_FLAG_PERCENTAGE) */
 
-  for (i = 0; i < ds->ds_num; i++)
+  for (size_t i = 0; i < ds->ds_num; i++)
   {
     status = ut_check_one_data_source (ds, vl, th, values_copy, i);
     if (status != -1) {
index ce9efb9..b07b3bf 100644 (file)
 #define SENSU_HOST             "localhost"
 #define SENSU_PORT             "3030"
 
+#ifdef HAVE_ASPRINTF
+#define my_asprintf asprintf
+#define my_vasprintf vasprintf
+#else
+/*
+ * asprintf() is available from Solaris 10 update 11.
+ * For older versions, use asprintf() portable implementation from
+ * https://github.com/littlstar/asprintf.c/blob/master/
+ * copyright (c) 2014 joseph werle <joseph.werle@gmail.com> under MIT license.
+ */
+
+static int my_vasprintf(char **str, const char *fmt, va_list args) {
+       int size = 0;
+       va_list tmpa;
+       // copy
+       va_copy(tmpa, args);
+       // apply variadic arguments to
+       // sprintf with format to get size
+       size = vsnprintf(NULL, size, fmt, tmpa);
+       // toss args
+       va_end(tmpa);
+       // return -1 to be compliant if
+       // size is less than 0
+       if (size < 0) { return -1; }
+       // alloc with size plus 1 for `\0'
+       *str = (char *) malloc(size + 1);
+       // return -1 to be compliant
+       // if pointer is `NULL'
+       if (NULL == *str) { return -1; }
+       // format string with original
+       // variadic arguments and set new size
+       size = vsprintf(*str, fmt, args);
+       return size;
+}
+
+static int my_asprintf(char **str, const char *fmt, ...) {
+       int size = 0;
+       va_list args;
+       // init variadic argumens
+       va_start(args, fmt);
+       // format and get size
+       size = my_vasprintf(str, fmt, args);
+       // toss args
+       va_end(args);
+       return size;
+}
+
+#endif
+
 struct str_list {
        int nb_strs;
        char **strs;
@@ -95,8 +144,7 @@ static int add_str_to_list(struct str_list *strs,
 
 static void free_str_list(struct str_list *strs) /* {{{ */
 {
-       int i;
-       for (i=0; i<strs->nb_strs; i++)
+       for (int i=0; i<strs->nb_strs; i++)
                free(strs->strs[i]);
        free(strs->strs);
 }
@@ -105,7 +153,6 @@ static void free_str_list(struct str_list *strs) /* {{{ */
 static int sensu_connect(struct sensu_host *host) /* {{{ */
 {
        int                      e;
-       struct addrinfo         *ai;
        char const              *node;
        char const              *service;
 
@@ -135,7 +182,7 @@ static int sensu_connect(struct sensu_host *host) /* {{{ */
 
        struct linger so_linger;
        host->s = -1;
-       for (ai = host->res; ai != NULL; ai = ai->ai_next) {
+       for (struct addrinfo *ai = host->res; ai != NULL; ai = ai->ai_next) {
                // create the socket
                if ((host->s = socket(ai->ai_family,
                                      ai->ai_socktype,
@@ -179,7 +226,6 @@ static char *build_json_str_list(const char *tag, struct str_list const *list) /
        int res;
        char *ret_str = NULL;
        char *temp_str;
-       int i;
        if (list->nb_strs == 0) {
                ret_str = malloc(sizeof(char));
                if (ret_str == NULL) {
@@ -189,14 +235,14 @@ static char *build_json_str_list(const char *tag, struct str_list const *list) /
                ret_str[0] = '\0';
        }
 
-       res = asprintf(&temp_str, "\"%s\": [\"%s\"", tag, list->strs[0]);
+       res = my_asprintf(&temp_str, "\"%s\": [\"%s\"", tag, list->strs[0]);
        if (res == -1) {
                ERROR("write_sensu plugin: Unable to alloc memory");
                free(ret_str);
                return NULL;
        }
-       for (i=1; i<list->nb_strs; i++) {
-               res = asprintf(&ret_str, "%s, \"%s\"", temp_str, list->strs[i]);
+       for (int i=1; i<list->nb_strs; i++) {
+               res = my_asprintf(&ret_str, "%s, \"%s\"", temp_str, list->strs[i]);
                free(temp_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -204,7 +250,7 @@ static char *build_json_str_list(const char *tag, struct str_list const *list) /
                }
                temp_str = ret_str;
        }
-       res = asprintf(&ret_str, "%s]", temp_str);
+       res = my_asprintf(&ret_str, "%s]", temp_str);
        free(temp_str);
        if (res == -1) {
                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -261,9 +307,8 @@ static int sensu_format_name2(char *ret, int ret_len,
 
 static void in_place_replace_sensu_name_reserved(char *orig_name) /* {{{ */
 {
-       int i;
        int len=strlen(orig_name);
-       for (i=0; i<len; i++) {
+       for (int i=0; i<len; i++) {
                // some plugins like ipmi generate special characters in metric name
                switch(orig_name[i]) {
                        case '(': orig_name[i] = '_'; break;
@@ -284,7 +329,6 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
 {
        char name_buffer[5 * DATA_MAX_NAME_LEN];
        char service_buffer[6 * DATA_MAX_NAME_LEN];
-       size_t i;
        char *ret_str;
        char *temp_str;
        char *value_str;
@@ -308,7 +352,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
                }
        }
        else {
-               res = asprintf(&ret_str, "%s, %s", part1, handlers_str);
+               res = my_asprintf(&ret_str, "%s, %s", part1, handlers_str);
                free(handlers_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -317,7 +361,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
        }
 
        // incorporate the plugin name information
-       res = asprintf(&temp_str, "%s, \"collectd_plugin\": \"%s\"", ret_str, vl->plugin);
+       res = my_asprintf(&temp_str, "%s, \"collectd_plugin\": \"%s\"", ret_str, vl->plugin);
        free(ret_str);
        if (res == -1) {
                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -326,7 +370,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
        ret_str = temp_str;
 
        // incorporate the plugin type
-       res = asprintf(&temp_str, "%s, \"collectd_plugin_type\": \"%s\"", ret_str, vl->type);
+       res = my_asprintf(&temp_str, "%s, \"collectd_plugin_type\": \"%s\"", ret_str, vl->type);
        free(ret_str);
        if (res == -1) {
                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -336,7 +380,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
 
        // incorporate the plugin instance if any
        if (vl->plugin_instance[0] != 0) {
-               res = asprintf(&temp_str, "%s, \"collectd_plugin_instance\": \"%s\"", ret_str, vl->plugin_instance);
+               res = my_asprintf(&temp_str, "%s, \"collectd_plugin_instance\": \"%s\"", ret_str, vl->plugin_instance);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -347,7 +391,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
 
        // incorporate the plugin type instance if any
        if (vl->type_instance[0] != 0) {
-               res = asprintf(&temp_str, "%s, \"collectd_plugin_type_instance\": \"%s\"", ret_str, vl->type_instance);
+               res = my_asprintf(&temp_str, "%s, \"collectd_plugin_type_instance\": \"%s\"", ret_str, vl->type_instance);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -360,7 +404,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
        if ((ds->ds[index].type != DS_TYPE_GAUGE) && (rates != NULL)) {
                char ds_type[DATA_MAX_NAME_LEN];
                ssnprintf (ds_type, sizeof (ds_type), "%s:rate", DS_TYPE_TO_STRING(ds->ds[index].type));
-               res = asprintf(&temp_str, "%s, \"collectd_data_source_type\": \"%s\"", ret_str, ds_type);
+               res = my_asprintf(&temp_str, "%s, \"collectd_data_source_type\": \"%s\"", ret_str, ds_type);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -368,7 +412,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
                }
                ret_str = temp_str;
        } else {
-               res = asprintf(&temp_str, "%s, \"collectd_data_source_type\": \"%s\"", ret_str, DS_TYPE_TO_STRING(ds->ds[index].type));
+               res = my_asprintf(&temp_str, "%s, \"collectd_data_source_type\": \"%s\"", ret_str, DS_TYPE_TO_STRING(ds->ds[index].type));
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -378,7 +422,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
        }
 
        // incorporate the data source name
-       res = asprintf(&temp_str, "%s, \"collectd_data_source_name\": \"%s\"", ret_str, ds->ds[index].name);
+       res = my_asprintf(&temp_str, "%s, \"collectd_data_source_name\": \"%s\"", ret_str, ds->ds[index].name);
        free(ret_str);
        if (res == -1) {
                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -390,7 +434,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
        {
                char ds_index[DATA_MAX_NAME_LEN];
                ssnprintf (ds_index, sizeof (ds_index), "%zu", index);
-               res = asprintf(&temp_str, "%s, \"collectd_data_source_index\": %s", ret_str, ds_index);
+               res = my_asprintf(&temp_str, "%s, \"collectd_data_source_index\": %s", ret_str, ds_index);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -400,8 +444,8 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
        }
 
        // add key value attributes from config if any
-       for (i = 0; i < sensu_attrs_num; i += 2) {
-               res = asprintf(&temp_str, "%s, \"%s\": \"%s\"", ret_str, sensu_attrs[i], sensu_attrs[i+1]);
+       for (size_t i = 0; i < sensu_attrs_num; i += 2) {
+               res = my_asprintf(&temp_str, "%s, \"%s\": \"%s\"", ret_str, sensu_attrs[i], sensu_attrs[i+1]);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -412,7 +456,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
 
        // incorporate sensu tags from config if any
        if ((sensu_tags != NULL) && (strlen(sensu_tags) != 0)) {
-               res = asprintf(&temp_str, "%s, %s", ret_str, sensu_tags);
+               res = my_asprintf(&temp_str, "%s, %s", ret_str, sensu_tags);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -423,14 +467,14 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
 
        // calculate the value and set to a string
        if (ds->ds[index].type == DS_TYPE_GAUGE) {
-               res = asprintf(&value_str, GAUGE_FORMAT, vl->values[index].gauge);
+               res = my_asprintf(&value_str, GAUGE_FORMAT, vl->values[index].gauge);
                if (res == -1) {
                        free(ret_str);
                        ERROR("write_sensu plugin: Unable to alloc memory");
                        return NULL;
                }
        } else if (rates != NULL) {
-               res = asprintf(&value_str, GAUGE_FORMAT, rates[index]);
+               res = my_asprintf(&value_str, GAUGE_FORMAT, rates[index]);
                if (res == -1) {
                        free(ret_str);
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -438,7 +482,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
                }
        } else {
                if (ds->ds[index].type == DS_TYPE_DERIVE) {
-                       res = asprintf(&value_str, "%"PRIi64, vl->values[index].derive);
+                       res = my_asprintf(&value_str, "%"PRIi64, vl->values[index].derive);
                        if (res == -1) {
                                free(ret_str);
                                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -446,7 +490,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
                        }
                }
                else if (ds->ds[index].type == DS_TYPE_ABSOLUTE) {
-                       res = asprintf(&value_str, "%"PRIu64, vl->values[index].absolute);
+                       res = my_asprintf(&value_str, "%"PRIu64, vl->values[index].absolute);
                        if (res == -1) {
                                free(ret_str);
                                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -454,7 +498,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
                        }
                }
                else {
-                       res = asprintf(&value_str, "%llu", vl->values[index].counter);
+                       res = my_asprintf(&value_str, "%llu", vl->values[index].counter);
                        if (res == -1) {
                                free(ret_str);
                                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -486,7 +530,7 @@ static char *sensu_value_to_json(struct sensu_host const *host, /* {{{ */
        in_place_replace_sensu_name_reserved(service_buffer);
 
        // finalize the buffer by setting the output and closing curly bracket
-       res = asprintf(&temp_str, "%s, \"output\": \"%s %s %ld\"}\n", ret_str, service_buffer, value_str, CDTIME_T_TO_TIME_T(vl->time));
+       res = my_asprintf(&temp_str, "%s, \"output\": \"%s %s %ld\"}\n", ret_str, service_buffer, value_str, CDTIME_T_TO_TIME_T(vl->time));
        free(ret_str);
        free(value_str);
        if (res == -1) {
@@ -591,7 +635,6 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
 {
        char service_buffer[6 * DATA_MAX_NAME_LEN];
        char const *severity;
-       notification_meta_t *meta;
        char *ret_str;
        char *temp_str;
        int status;
@@ -615,7 +658,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
                        severity = "UNKNOWN";
                        status = 3;
        }
-       res = asprintf(&temp_str, "{\"status\": %d", status);
+       res = my_asprintf(&temp_str, "{\"status\": %d", status);
        if (res == -1) {
                ERROR("write_sensu plugin: Unable to alloc memory");
                return NULL;
@@ -623,7 +666,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
        ret_str = temp_str;
 
        // incorporate the timestamp
-       res = asprintf(&temp_str, "%s, \"timestamp\": %ld", ret_str, CDTIME_T_TO_TIME_T(n->time));
+       res = my_asprintf(&temp_str, "%s, \"timestamp\": %ld", ret_str, CDTIME_T_TO_TIME_T(n->time));
        free(ret_str);
        if (res == -1) {
                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -639,7 +682,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
        }
        // incorporate the handlers
        if (strlen(handlers_str) != 0) {
-               res = asprintf(&temp_str, "%s, %s", ret_str, handlers_str);
+               res = my_asprintf(&temp_str, "%s, %s", ret_str, handlers_str);
                free(ret_str);
                free(handlers_str);
                if (res == -1) {
@@ -653,7 +696,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
 
        // incorporate the plugin name information if any
        if (n->plugin[0] != 0) {
-               res = asprintf(&temp_str, "%s, \"collectd_plugin\": \"%s\"", ret_str, n->plugin);
+               res = my_asprintf(&temp_str, "%s, \"collectd_plugin\": \"%s\"", ret_str, n->plugin);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -664,7 +707,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
 
        // incorporate the plugin type if any
        if (n->type[0] != 0) {
-               res = asprintf(&temp_str, "%s, \"collectd_plugin_type\": \"%s\"", ret_str, n->type);
+               res = my_asprintf(&temp_str, "%s, \"collectd_plugin_type\": \"%s\"", ret_str, n->type);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -675,7 +718,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
 
        // incorporate the plugin instance if any
        if (n->plugin_instance[0] != 0) {
-               res = asprintf(&temp_str, "%s, \"collectd_plugin_instance\": \"%s\"", ret_str, n->plugin_instance);
+               res = my_asprintf(&temp_str, "%s, \"collectd_plugin_instance\": \"%s\"", ret_str, n->plugin_instance);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -686,7 +729,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
 
        // incorporate the plugin type instance if any
        if (n->type_instance[0] != 0) {
-               res = asprintf(&temp_str, "%s, \"collectd_plugin_type_instance\": \"%s\"", ret_str, n->type_instance);
+               res = my_asprintf(&temp_str, "%s, \"collectd_plugin_type_instance\": \"%s\"", ret_str, n->type_instance);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -697,7 +740,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
 
        // add key value attributes from config if any
        for (i = 0; i < sensu_attrs_num; i += 2) {
-               res = asprintf(&temp_str, "%s, \"%s\": \"%s\"", ret_str, sensu_attrs[i], sensu_attrs[i+1]);
+               res = my_asprintf(&temp_str, "%s, \"%s\": \"%s\"", ret_str, sensu_attrs[i], sensu_attrs[i+1]);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -708,7 +751,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
 
        // incorporate sensu tags from config if any
        if ((sensu_tags != NULL) && (strlen(sensu_tags) != 0)) {
-               res = asprintf(&temp_str, "%s, %s", ret_str, sensu_tags);
+               res = my_asprintf(&temp_str, "%s, %s", ret_str, sensu_tags);
                free(ret_str);
                if (res == -1) {
                        ERROR("write_sensu plugin: Unable to alloc memory");
@@ -723,7 +766,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
                                n->type, n->type_instance, host->separator);
        // replace sensu event name chars that are considered illegal
        in_place_replace_sensu_name_reserved(service_buffer);
-       res = asprintf(&temp_str, "%s, \"name\": \"%s\"", ret_str, &service_buffer[1]);
+       res = my_asprintf(&temp_str, "%s, \"name\": \"%s\"", ret_str, &service_buffer[1]);
        free(ret_str);
        if (res == -1) {
                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -739,7 +782,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
                        free(ret_str);
                        return NULL;
                }
-               res = asprintf(&temp_str, "%s, \"output\": \"%s - %s\"", ret_str, severity, msg);
+               res = my_asprintf(&temp_str, "%s, \"output\": \"%s - %s\"", ret_str, severity, msg);
                free(ret_str);
                free(msg);
                if (res == -1) {
@@ -750,9 +793,9 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
        }
 
        // Pull in values from threshold and add extra attributes
-       for (meta = n->meta; meta != NULL; meta = meta->next) {
+       for (notification_meta_t *meta = n->meta; meta != NULL; meta = meta->next) {
                if (strcasecmp("CurrentValue", meta->name) == 0 && meta->type == NM_TYPE_DOUBLE) {
-                       res = asprintf(&temp_str, "%s, \"current_value\": \"%.8f\"", ret_str, meta->nm_value.nm_double);
+                       res = my_asprintf(&temp_str, "%s, \"current_value\": \"%.8f\"", ret_str, meta->nm_value.nm_double);
                        free(ret_str);
                        if (res == -1) {
                                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -761,7 +804,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
                        ret_str = temp_str;
                }
                if (meta->type == NM_TYPE_STRING) {
-                       res = asprintf(&temp_str, "%s, \"%s\": \"%s\"", ret_str, meta->name, meta->nm_value.nm_string);
+                       res = my_asprintf(&temp_str, "%s, \"%s\": \"%s\"", ret_str, meta->name, meta->nm_value.nm_string);
                        free(ret_str);
                        if (res == -1) {
                                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -772,7 +815,7 @@ static char *sensu_notification_to_json(struct sensu_host *host, /* {{{ */
        }
 
        // close the curly bracket
-       res = asprintf(&temp_str, "%s}\n", ret_str);
+       res = my_asprintf(&temp_str, "%s}\n", ret_str);
        free(ret_str);
        if (res == -1) {
                ERROR("write_sensu plugin: Unable to alloc memory");
@@ -839,7 +882,6 @@ static int sensu_write(const data_set_t *ds, /* {{{ */
        int statuses[vl->values_len];
        struct sensu_host       *host = ud->data;
        gauge_t *rates = NULL;
-       size_t i;
        char *msg;
 
        pthread_mutex_lock(&host->lock);
@@ -853,7 +895,7 @@ static int sensu_write(const data_set_t *ds, /* {{{ */
                        return -1;
                }
        }
-       for (i = 0; i < vl->values_len; i++) {
+       for (size_t i = 0; i < vl->values_len; i++) {
                msg = sensu_value_to_json(host, ds, vl, (int) i, rates, statuses[i]);
                if (msg == NULL) {
                        sfree(rates);
@@ -933,7 +975,6 @@ static int sensu_config_node(oconfig_item_t *ci) /* {{{ */
 {
        struct sensu_host       *host = NULL;
        int                                     status = 0;
-       int                                     i;
        oconfig_item_t          *child;
        char                            callback_name[DATA_MAX_NAME_LEN];
        user_data_t                     ud;
@@ -968,7 +1009,7 @@ static int sensu_config_node(oconfig_item_t *ci) /* {{{ */
                return -1;
        }
 
-       for (i = 0; i < ci->children_num; i++) {
+       for (int i = 0; i < ci->children_num; i++) {
                child = &ci->children[i];
                status = 0;
 
@@ -1109,7 +1150,6 @@ static int sensu_config_node(oconfig_item_t *ci) /* {{{ */
 
 static int sensu_config(oconfig_item_t *ci) /* {{{ */
 {
-       int              i;
        oconfig_item_t  *child;
        int              status;
        struct str_list sensu_tags_arr;
@@ -1117,7 +1157,7 @@ static int sensu_config(oconfig_item_t *ci) /* {{{ */
        sensu_tags_arr.nb_strs = 0;
        sensu_tags_arr.strs = NULL;
 
-       for (i = 0; i < ci->children_num; i++)  {
+       for (int i = 0; i < ci->children_num; i++)  {
                child = &ci->children[i];
 
                if (strcasecmp("Node", child->key) == 0) {
index 78166b1..309418a 100644 (file)
@@ -157,7 +157,6 @@ static int wt_flush_nolock(cdtime_t timeout, struct wt_callback *cb)
 static int wt_callback_init(struct wt_callback *cb)
 {
     struct addrinfo *ai_list;
-    struct addrinfo *ai_ptr;
     int status;
 
     const char *node = cb->node ? cb->node : WT_DEFAULT_NODE;
@@ -181,7 +180,7 @@ static int wt_callback_init(struct wt_callback *cb)
     }
 
     assert (ai_list != NULL);
-    for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
+    for (struct addrinfo *ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
     {
         cb->sock_fd = socket(ai_ptr->ai_family, ai_ptr->ai_socktype,
                              ai_ptr->ai_protocol);
@@ -503,7 +502,6 @@ static int wt_write_messages(const data_set_t *ds, const value_list_t *vl,
     char values[512];
 
     int status;
-    size_t i;
 
     if (0 != strcmp(ds->type, vl->type))
     {
@@ -512,7 +510,7 @@ static int wt_write_messages(const data_set_t *ds, const value_list_t *vl,
         return -1;
     }
 
-    for (i = 0; i < ds->ds_num; i++)
+    for (size_t i = 0; i < ds->ds_num; i++)
     {
         const char *ds_name = NULL;
 
@@ -573,7 +571,6 @@ static int wt_config_tsd(oconfig_item_t *ci)
     struct wt_callback *cb;
     user_data_t user_data = { 0 };
     char callback_name[DATA_MAX_NAME_LEN];
-    int i;
 
     cb = calloc(1, sizeof(*cb));
     if (cb == NULL)
@@ -589,7 +586,7 @@ static int wt_config_tsd(oconfig_item_t *ci)
 
     pthread_mutex_init (&cb->send_lock, NULL);
 
-    for (i = 0; i < ci->children_num; i++)
+    for (int i = 0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
 
@@ -626,9 +623,7 @@ static int wt_config_tsd(oconfig_item_t *ci)
 
 static int wt_config(oconfig_item_t *ci)
 {
-    int i;
-
-    for (i = 0; i < ci->children_num; i++)
+    for (int i = 0; i < ci->children_num; i++)
     {
         oconfig_item_t *child = ci->children + i;
 
index 59fbcb9..f1cd938 100644 (file)
@@ -142,8 +142,8 @@ static int xencpu_read (void)
         return (-1);
     }
 
-    int cpu, status;
-    for (cpu = 0; cpu < nr_cpus; cpu++) {
+    int status;
+    for (int cpu = 0; cpu < nr_cpus; cpu++) {
         gauge_t rate = NAN;
         value_t value = {.derive = cpu_info[cpu].idletime};
 
index c5493d8..8261282 100644 (file)
@@ -90,12 +90,10 @@ static long long get_zfs_value(kstat_t *ksp, const char *key)
 
 static void free_zfs_values (kstat_t *ksp)
 {
-       llentry_t *e;
-
        if (ksp == NULL)
                return;
 
-       for (e = llist_head (ksp); e != NULL; e = e->next)
+       for (llentry_t *e = llist_head (ksp); e != NULL; e = e->next)
        {
                sfree (e->key);
                sfree (e->value);
@@ -296,10 +294,6 @@ static int za_read (void)
        za_read_derive (ksp, "deleted",  "cache_operation", "deleted");
 #if defined(KERNEL_FREEBSD)
        za_read_derive (ksp, "allocated","cache_operation", "allocated");
-#if __FreeBSD_version < 1002501
-       /* stolen removed from sysctl kstat.zfs.misc.arcstats on FreeBSD 10.2+ */
-       za_read_derive (ksp, "stolen",   "cache_operation", "stolen");
-#endif
 #endif
 
        /* Issue indicators */
index 0479858..8417485 100644 (file)
@@ -106,7 +106,6 @@ static int zookeeper_connect (void)
 {
        int sk = -1;
        int status;
-       struct addrinfo *ai;
        struct addrinfo *ai_list;
        const char *host;
        const char *port;
@@ -130,7 +129,7 @@ static int zookeeper_connect (void)
                return (-1);
        }
 
-       for (ai = ai_list; ai != NULL; ai = ai->ai_next)
+       for (struct addrinfo *ai = ai_list; ai != NULL; ai = ai->ai_next)
        {
                sk = socket (ai->ai_family, SOCK_STREAM, 0);
                if (sk < 0)