Build system: Straighten up building of the DF plugin.
authorFlorian Forster <octo@huhu.verplant.org>
Wed, 6 May 2009 14:28:27 +0000 (16:28 +0200)
committerFlorian Forster <octo@huhu.verplant.org>
Wed, 6 May 2009 14:28:27 +0000 (16:28 +0200)
In rare cases, e. g. Solaris, getmntent is available but neither the one nor
the two argument version could be recognized. This lead to `cu_mount_getlist'
returning NULL without an error, leading to the df plugin fail without notice.

While at it I re-implemented the dependency checking of the DF plugin to match
the proprocessor logic in utils_mount.c.

configure.in
src/Makefile.am
src/utils_mount.c
src/utils_mount.h

index df1b187..af0219d 100644 (file)
@@ -778,7 +778,6 @@ if test "x$have_getmntent" = "xc"; then
                [c_cv_have_one_getmntent],
                AC_COMPILE_IFELSE(
                        AC_LANG_PROGRAM([[AC_INCLUDES_DEFAULT
-#include <mntent.h>
 #include "$srcdir/src/utils_mount.h"]],
                                [[
                                 FILE *fh;
@@ -795,7 +794,6 @@ if test "x$have_getmntent" = "xc"; then
                [c_cv_have_two_getmntent],
                AC_COMPILE_IFELSE(
                        AC_LANG_PROGRAM([[AC_INCLUDES_DEFAULT
-#include <sys/mnttab.h>
 #include "$srcdir/src/utils_mount.h"]],
                                [[
                                 FILE *fh;
@@ -2741,14 +2739,40 @@ then
        plugin_tcpconns="yes"
 fi
 
-if test "x$have_statfs" = "xyes"
+# Df plugin: Check if we know how to determine mount points first.
+#if test "x$have_listmntent" = "xyes"; then
+#      plugin_df="yes"
+#fi
+if test "x$have_getvfsstat" = "xyes" || test "x$have_getfsstat" = "xyes"
 then
        plugin_df="yes"
 fi
-if test "x$have_statvfs" = "xyes"
+if test "x$c_cv_have_two_getmntent" = "xyes" || test "x$have_getmntent" = "xgen" || test "x$have_getmntent" = "xsun"
 then
        plugin_df="yes"
 fi
+#if test "x$have_getmntent" = "xseq"
+#then
+#      plugin_df="yes"
+#fi
+if test "x$c_cv_have_one_getmntent" = "xyes"
+then
+       plugin_df="yes"
+fi
+
+# Df plugin: Check if we have either `statfs' or `statvfs' second.
+if test "x$plugin_df" = "xyes"
+then
+       plugin_df="no"
+       if test "x$have_statfs" = "xyes"
+       then
+               plugin_df="yes"
+       fi
+       if test "x$have_statvfs" = "xyes"
+       then
+               plugin_df="yes"
+       fi
+fi
 
 if test "x$have_getifaddrs" = "xyes"
 then
index 1b46b9b..92627b9 100644 (file)
@@ -37,7 +37,6 @@ collectd_SOURCES = collectd.c collectd.h \
                   utils_llist.c utils_llist.h \
                   utils_tail_match.c utils_tail_match.h \
                   utils_match.c utils_match.h \
-                  utils_mount.c utils_mount.h \
                   utils_tail.c utils_tail.h \
                   utils_threshold.c utils_threshold.h \
                   types_list.c types_list.h
@@ -186,7 +185,7 @@ endif
 
 if BUILD_PLUGIN_DF
 pkglib_LTLIBRARIES += df.la
-df_la_SOURCES = df.c
+df_la_SOURCES = df.c utils_mount.c utils_mount.h
 df_la_LDFLAGS = -module -avoid-version
 collectd_LDADD += "-dlopen" df.la
 collectd_DEPENDENCIES += df.la
index c53431f..cae3706 100644 (file)
@@ -659,11 +659,11 @@ cu_mount_t *cu_mount_getlist(cu_mount_t **list)
 #elif HAVE_TWO_GETMNTENT || HAVE_GEN_GETMNTENT || HAVE_SUN_GETMNTENT
        new = cu_mount_gen_getmntent ();
 #elif HAVE_SEQ_GETMNTENT
-# warn "This version of `getmntent' hat not yet been implemented!"
+# error "This version of `getmntent' hat not yet been implemented!"
 #elif HAVE_ONE_GETMNTENT
        new = cu_mount_getmntent ();
 #else
-       new = NULL;
+# error "Could not determine how to find mountpoints."
 #endif
 
        if (first != NULL)
index cab5c01..1f2403c 100644 (file)
 
 /* See below for instructions how to use the public functions. */
 
-#if !COLLECTD_UTILS_MOUNT_H
+#ifndef COLLECTD_UTILS_MOUNT_H
 #define COLLECTD_UTILS_MOUNT_H 1
 
-#include "common.h"
-
 #if HAVE_FS_INFO_H
 # include <fs_info.h>
 #endif