X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=configure.in;h=a2666826d59057e3f05fcfe8a6d16f5708487c49;hb=a0a6dd410c4de1b96d191a3988dd3709e5a934d3;hp=20f58fc9b3a5d33c9e1350691662510d82b04483;hpb=8ffb572a0491296a7ed3f0cbbf44da771a8e7eb5;p=nagiosplug.git diff --git a/configure.in b/configure.in index 20f58fc..a266682 100644 --- a/configure.in +++ b/configure.in @@ -1,10 +1,10 @@ dnl Process this file with autoconf to produce a configure script. AC_REVISION ($Revision$) -AC_PREREQ(2.50) -AC_INIT(nagios-plugins,1.3.99) -AC_CONFIG_SRCDIR(Helper.pm) +AC_PREREQ(2.58) +AC_INIT(nagios-plugins,1.4.2) +AC_CONFIG_SRCDIR(NPTest.pm) AM_INIT_AUTOMAKE -AM_CONFIG_HEADER(plugins/config.h) +AM_CONFIG_HEADER(config.h) AC_CANONICAL_HOST RELEASE=1 @@ -16,18 +16,24 @@ dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL AC_SUBST(INSTALL) -AC_GNU_SOURCE +dnl Must come very early on due to coreutils requirement +dnl Takes care of AC_GNU_SOURCE, AC_AIX and AC_MINIX +gl_USE_SYSTEM_EXTENSIONS + AC_PROG_CC AC_PROG_CPP AC_PROG_GCC_TRADITIONAL AC_PROG_RANLIB -AC_AIX -AC_MINIX AC_PROG_MAKE_SET AC_PROG_AWK -AC_FUNC_GETLOADAVG($topdir/lib) +AC_FUNC_MALLOC +AC_FUNC_REALLOC +AC_FUNC_ERROR_AT_LINE + +AC_CONFIG_LIBOBJ_DIR(lib) +AC_FUNC_GETLOADAVG([lib]) ifdef([AC_FUNC_STRTOD],[AC_FUNC_STRTOD],[AM_FUNC_STRTOD]) dnl AM_WITH_REGEX @@ -95,8 +101,15 @@ AC_SUBST(REV_TIMESTAMP) dnl Checks for programs. AC_PATH_PROG(PYTHON,python) -AC_PATH_PROG(PERL,perl) AC_PATH_PROG(SH,sh) +AC_PATH_PROG(PERL,perl) + +dnl allow them to override the path of perl +AC_ARG_WITH(perl, + ACX_HELP_STRING([--with-perl=PATH], + [sets path to perl executable]), + with_perl=$withval,with_perl=$PERL) +AC_SUBST(PERL, $with_perl) AC_PATH_PROG(HOSTNAME,hostname) AC_PATH_PROG(BASENAME,basename) @@ -124,6 +137,11 @@ AC_CHECK_LIB(socket,socket,SOCKETLIBS="$SOCKETLIBS -lsocket") AC_CHECK_LIB(resolv,main,SOCKETLIBS="$SOCKETLIBS -lresolv") AC_SUBST(SOCKETLIBS) +dnl +dnl check for math-related functions needing -lm +AC_CHECK_LIB(m,floor,MATHLIBS="-lm") +AC_SUBST(MATHLIBS) + dnl Check for PostgreSQL libraries _SAVEDLIBS="$LIBS" _SAVEDCPPFLAGS="$CPPFLAGS" @@ -198,6 +216,7 @@ if test "$ac_cv_lib_ldap_main" = "yes"; then AC_SUBST(LDAPINCLUDE) AC_CHECK_FUNCS(ldap_set_option) EXTRAS="$EXTRAS check_ldap" + AC_CHECK_FUNCS(ldap_init ldap_set_option ldap_get_option ldap_start_tls_s) else AC_MSG_WARN([Skipping LDAP plugin]) AC_MSG_WARN([install LDAP libs to compile this plugin (see REQUIREMENTS).]) @@ -245,31 +264,9 @@ else AC_MSG_WARN([Skipping mysql plugin]) AC_MSG_WARN([install mysql client libs to compile this plugin (see REQUIREMENTS).]) fi -CPPFLAGS="$_SAVEDCPPFLAGS" +CPPFLAGS="$_SAVEDCPPFLAGS $MYSQLINCLUDE" LIBS="$_SAVEDLIBS" -dnl Check for OpenSSL location -AC_PATH_PROG(OPENSSL,openssl) -if test "$OPENSSL" = "/usr/bin/openssl"; then - OPENSSL=/usr -elif test "$OPENSSL" = "/usr/sbin/openssl"; then - OPENSSL=/usr -elif test "$OPENSSL" = "/opt/bin/openssl"; then - OPENSSL=/opt -elif test "$OPENSSL" = "/opt/openssl/bin/openssl"; then - OPENSSL=/opt/openssl -elif test "$OPENSSL" = "/usr/slocal/bin/openssl"; then - OPENSSL=/usr/slocal -elif test "$OPENSSL" = "/usr/local/bin/openssl"; then - OPENSSL=/usr/local -elif test "$OPENSSL" = "/usr/local/ssl/bin/openssl"; then - OPENSSL=/usr/local/ssl -fi -AC_ARG_WITH(openssl, - ACX_HELP_STRING([--with-openssl=DIR], - [sets path to openssl installation]), - OPENSSL=$withval,) - AC_CHECK_HEADERS(unistd.h) dnl Check for AF_INET6 support - unistd.h required for Darwin @@ -396,6 +393,7 @@ if test x"$enable_emulate_getaddrinfo" != xno ; then fi +dnl Checks for Kerberos. Must come before openssl checks for Redhat EL 3 AC_CHECK_HEADERS(krb5.h,FOUNDINCLUDE=yes,FOUNDINCLUDE=no) if test "$FOUNDINCLUDE" = "no"; then _SAVEDCPPFLAGS="$CPPFLAGS" @@ -411,46 +409,90 @@ if test "$FOUNDINCLUDE" = "no"; then CPPFLAGS="$_SAVEDCPPFLAGS" fi -dnl Check for OpenSSL header files -unset FOUNDINCLUDE +dnl Check for OpenSSL location +AC_PATH_PROG(OPENSSL,openssl) +if test "$OPENSSL" = "/usr/bin/openssl"; then + OPENSSL=/usr +elif test "$OPENSSL" = "/usr/sbin/openssl"; then + OPENSSL=/usr +elif test "$OPENSSL" = "/opt/bin/openssl"; then + OPENSSL=/opt +elif test "$OPENSSL" = "/opt/openssl/bin/openssl"; then + OPENSSL=/opt/openssl +elif test "$OPENSSL" = "/usr/slocal/bin/openssl"; then + OPENSSL=/usr/slocal +elif test "$OPENSSL" = "/usr/local/bin/openssl"; then + OPENSSL=/usr/local +elif test "$OPENSSL" = "/usr/local/ssl/bin/openssl"; then + OPENSSL=/usr/local/ssl +fi +AC_ARG_WITH(openssl, +AC_HELP_STRING([--with-openssl=DIR], [sets path to openssl installation]) +AC_HELP_STRING([--without-openssl], [disable openssl]), +OPENSSL=$withval) + _SAVEDCPPFLAGS="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS -I$OPENSSL/include" -AC_CHECK_HEADERS(openssl/ssl.h openssl/x509.h openssl/rsa.h openssl/pem.h openssl/crypto.h openssl/err.h, +_SAVEDLDFLAGS="$LDFLAGS" +if test X"$OPENSSL" = "Xno"; then + AC_MSG_WARN([openssl disabled, you will not be able to use ssl options in some plugins]) + FOUNDSSL="dontbother" +else + dnl Check for OpenSSL header files + unset FOUNDINCLUDE + if test "$OPENSSL" != "/usr"; then + CPPFLAGS="$CPPFLAGS -I$OPENSSL/include" + LDFLAGS="$LDFLAGS -R$OPENSSL/lib" + fi + AC_CHECK_HEADERS(openssl/ssl.h openssl/x509.h openssl/rsa.h openssl/pem.h openssl/crypto.h openssl/err.h, SSLINCLUDE="-I$OPENSSL/include" FOUNDINCLUDE=yes, FOUNDINCLUDE=no) -if test "$FOUNDINCLUDE" = "no"; then - AC_CHECK_HEADERS(ssl.h x509.h rsa.h pem.h crypto.h err.h, + if test "$FOUNDINCLUDE" = "no"; then + AC_CHECK_HEADERS(ssl.h x509.h rsa.h pem.h crypto.h err.h, SSLINCLUDE="-I$OPENSSL/include" FOUNDINCLUDE=yes, FOUNDINCLUDE=no) -fi -AC_SUBST(SSLINCLUDE) -if test "$FOUNDINCLUDE" = "no"; then - CPPFLAGS="$_SAVEDCPPFLAGS" -fi + fi + AC_SUBST(SSLINCLUDE) + if test "$FOUNDINCLUDE" = "no"; then + CPPFLAGS="$_SAVEDCPPFLAGS" + fi -dnl Check for crypto lib -_SAVEDLIBS="$LIBS" -AC_CHECK_LIB(crypto,CRYPTO_lock,,,-L$OPENSSL/lib) -if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then - dnl Check for SSL lib - AC_CHECK_LIB(ssl,main,LDFLAGS="$LDFLAGS -L$OPENSSL/lib" SSLLIBS="-lssl -lcrypto",AC_CHECK_LIB(ssl,main,LDFLAGS="$LDFLAGS -L$OPENSSL/lib" SSLLIBS="-lssl -lcrypto"),-L$OPENSSL/lib -lcrypto) + dnl Check for crypto lib + _SAVEDLIBS="$LIBS" + AC_CHECK_LIB(crypto,CRYPTO_lock,,,-L$OPENSSL/lib) + if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then + dnl Check for SSL lib + AC_CHECK_LIB(ssl,main,LDFLAGS="$LDFLAGS -L$OPENSSL/lib" SSLLIBS="-lssl -lcrypto",AC_CHECK_LIB(ssl,main,LDFLAGS="$LDFLAGS -L$OPENSSL/lib" SSLLIBS="-lssl -lcrypto"),-L$OPENSSL/lib -lcrypto) + fi + LIBS="$_SAVEDLIBS" + + FOUNDSSL="no" + dnl test headers and libs to decide whether check_http should use SSL + if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then + if test "$ac_cv_lib_ssl_main" = "yes"; then + if test "$FOUNDINCLUDE" = "yes"; then + FOUNDSSL="yes" + fi + fi + fi fi -LIBS="$_SAVEDLIBS" -dnl test headers and libs to decide whether check_http should use SSL -if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then - if test "$ac_cv_lib_ssl_main" = "yes"; then - if test "$FOUNDINCLUDE" = "yes"; then - check_tcp_ssl="check_simap check_spop" - AC_SUBST(check_tcp_ssl) - AC_SUBST(SSLLIBS) - AC_DEFINE(HAVE_SSL,1,[Define if SSL libraries are found]) - fi +if test "$FOUNDSSL" = "yes"; then + check_tcp_ssl="check_simap check_spop check_jabber check_nntps check_ssmtp" + AC_SUBST(check_tcp_ssl) + AC_SUBST(SSLLIBS) + AC_DEFINE(HAVE_SSL,1,[Define if SSL libraries are found]) + with_openssl="yes" +else + if test "$FOUNDSSL" = "no"; then + AC_MSG_WARN([OpenSSL libs could not be found]) + dnl else deliberately disabled fi + with_openssl="no" + CPPFLAGS="$_SAVEDCPPFLAGS" + LDFLAGS="$_SAVEDLDFLAGS" fi -CPPFLAGS="$_SAVEDCPPFLAGS" dnl dnl Checks for header files. @@ -461,49 +503,6 @@ AC_HEADER_TIME AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(signal.h strings.h string.h syslog.h uio.h errno.h regex.h sys/types.h sys/time.h sys/socket.h sys/loadavg.h) AC_CHECK_HEADERS(features.h stdarg.h sys/unistd.h ctype.h stdlib.h) -AC_CHECK_HEADERS(limits.h sys/param.h sys/mount.h sys/vfs.h sys/fs/s5param.h sys/filsys.h fcntl.h sys/statfs.h sys/dustat.h sys/statvfs.h) - -# Define HAVE_INTTYPES_H if exists, -# doesn't clash with , and declares uintmax_t. - -AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, -[AC_TRY_COMPILE( - [#include -#include ], - [uintmax_t i = (uintmax_t) -1;], - jm_ac_cv_header_inttypes_h=yes, - jm_ac_cv_header_inttypes_h=no)]) - -if test $jm_ac_cv_header_inttypes_h = yes; then - AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, -[Define if exists, doesn't clash with , - and declares uintmax_t. ]) -fi - -# Check for SunOS statfs brokenness wrt partitions 2GB and larger. -# If exists and struct statfs has a member named f_spare, -# enable the work-around code in fsusage.c. -AC_MSG_CHECKING([for statfs that truncates block counts]) -AC_CACHE_VAL(fu_cv_sys_truncating_statfs, -[AC_TRY_COMPILE([ -#if !defined(sun) && !defined(__sun) -choke -- this is a workaround for a Sun-specific problem -#endif -#include -#include ], -[struct statfs t; long c = *(t.f_spare);], -fu_cv_sys_truncating_statfs=yes -AC_MSG_RESULT(yes), -fu_cv_sys_truncating_statfs=no -AC_MSG_RESULT(no), -)]) -if test $fu_cv_sys_truncating_statfs = yes; then - AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS, 1, -[ Define if the block counts reported by statfs may be truncated to 2GB - and the correct values may be stored in the f_spare array. - (SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem. - SunOS 4.1.1 seems not to be affected.)]) -fi dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST @@ -512,35 +511,22 @@ AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_SIGNAL -AC_CHECK_SIZEOF(int,cross) -AC_CHECK_SIZEOF(long,cross) -AC_CHECK_SIZEOF(short,cross) - -AC_CACHE_CHECK([for long long],ac_cv_have_longlong,[ -AC_TRY_RUN([#include -main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }], -ac_cv_have_longlong=yes,ac_cv_have_longlong=no,ac_cv_have_longlong=cross)]) -if test x"$ac_cv_have_longlong" = x"yes"; then - AC_DEFINE(HAVE_LONGLONG,1,[Define if system has long long type]) -fi - -# -# Check if the compiler supports the LL prefix on long long integers. -# AIX needs this. - -AC_CACHE_CHECK([for LL suffix on long long integers],ac_cv_compiler_supports_ll, [ - AC_TRY_COMPILE([#include ],[long long i = 0x8000000000LL], - ac_cv_compiler_supports_ll=yes,ac_cv_compiler_supports_ll=no)]) -if test x"$ac_cv_compiler_supports_ll" = x"yes"; then - AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Define if compiler support long long]) -fi - -AC_CACHE_CHECK([for __va_copy],ac_cv_HAVE_VA_COPY,[ +AC_CACHE_CHECK([for va_copy],ac_cv_HAVE_VA_COPY,[ AC_TRY_LINK([#include -va_list ap1,ap2;], [__va_copy(ap1,ap2);], -ac_cv_HAVE_VA_COPY=yes,ac_cv_HAVE_VA_COPY=no)]) +va_list ap1,ap2;], [va_copy(ap1,ap2);], +ac_cv_HAVE_VA_COPY=yes, +ac_cv_HAVE_VA_COPY=no)]) if test x"$ac_cv_HAVE_VA_COPY" = x"yes"; then - AC_DEFINE(HAVE_VA_COPY,1,[Define if system has va_copy]) + AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available]) +else + AC_CACHE_CHECK([for __va_copy],ac_cv_HAVE___VA_COPY,[ + AC_TRY_LINK([#include + va_list ap1,ap2;], [__va_copy(ap1,ap2);], + ac_cv_HAVE___VA_COPY=yes, + ac_cv_HAVE___VA_COPY=no)]) + if test x"$ac_cv_HAVE___VA_COPY" = x"yes"; then + AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available]) + fi fi AC_CHECK_FUNCS(vsnprintf snprintf asprintf vasprintf) @@ -586,7 +572,7 @@ AC_TRY_COMPILE([#include ], AC_DEFINE(NEED_GETTIMEOFDAY,1,[Define if gettimeofday is needed]))) dnl Checks for library functions. -AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul) +AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul floor) AC_MSG_CHECKING(return type of socket size) AC_TRY_COMPILE([#include @@ -612,56 +598,108 @@ dnl #### Process table test AC_PATH_PROG(PATH_TO_PS,ps) AC_MSG_CHECKING(for ps syntax) + +dnl Now using the pst3/kmem hack for solaris systems to avoid truncation +AM_CONDITIONAL(WANT_PST3, false) +if test "$ac_cv_uname_s" = "SunOS"; then + # + # this is a very, very ugly hack, to hardcode the location for plugins + # + if test "$libexecdir" = '${exec_prefix}/libexec'; then + if test "$exec_prefix" = "NONE"; then + if test "$prefix" = "NONE"; then + pst3="$ac_default_prefix/libexec/pst3" + else + pst3="$prefix/libexec/pst3" + fi + else + pst3="$exec_prefix/libexec/pst3" + fi + else + pst3="$libexecdir/pst3" + fi + ac_cv_ps_command="$pst3" + ac_cv_ps_format="%s %d %d %d %d %f %s %n" + ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_cols=8 + AC_MSG_RESULT([using nagios-plugins internal ps for solaris]) + AM_CONDITIONAL(WANT_PST3, true) + +dnl Some gnu/linux systems (debian for one) don't like -axwo and need axwo. +dnl so test for this first... +elif ps axwo 'stat comm vsz rss user uid pid ppid args' 2>/dev/null | \ + egrep -i ["^ *STAT +[UCOMAND]+ +VSZ +RSS +USER +UID +PID +PPID +COMMAND"] > /dev/null +then + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS axwo 'stat uid pid ppid vsz rss pcpu comm args'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=9 + AC_MSG_RESULT([$ac_cv_ps_command]) + dnl For OpenBSD 3.2 & 3.3. Must come before ps -weo +dnl Should also work for FreeBSD 5.2.1 and 5.3 dnl STAT UCOMM VSZ RSS USER PPID COMMAND -if ps -axwo 'stat comm vsz rss user uid ppid args' 2>/dev/null | \ - egrep -i ["^ *STAT +UCOMM +VSZ +RSS +USER +UID +PPID +COMMAND"] > /dev/null +elif ps -axwo 'stat comm vsz rss user uid pid ppid args' 2>/dev/null | \ + egrep -i ["^ *STAT +[UCOMAND]+ +VSZ +RSS +USER +UID +PID +PPID +COMMAND"] > /dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -axwo 'stat uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -axwo 'stat uid pid ppid vsz rss pcpu comm args'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=9 + AC_MSG_RESULT([$ac_cv_ps_command]) + +dnl Some *BSDs have different format for ps. This is mainly to catch FreeBSD 4. +dnl Limitation: Only first 16 chars returned for ucomm field +dnl Must come before ps -weo +elif ps -axwo 'stat uid pid ppid vsz rss pcpu ucomm command' 2>/dev/null | \ + egrep -i ["^ *STAT +UID +PID +PPID +VSZ +RSS +%CPU +UCOMM +COMMAND"] > /dev/null +then + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -axwo 'stat uid pid ppid vsz rss pcpu ucomm command'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) dnl STAT UCOMM VSZ RSS USER UID PPID COMMAND -elif ps -weo 'stat comm vsz rss user uid ppid args' 2>/dev/null | \ - egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null +elif ps -weo 'stat comm vsz rss user uid pid ppid etime args' 2>/dev/null | \ + egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[ID]+ +P[PID]+ +[ELAPSD]+ +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procetime,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid pid ppid vsz rss pcpu etime comm args'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %s %n" + ac_cv_ps_cols=10 AC_MSG_RESULT([$ac_cv_ps_command]) dnl FreeBSD -elif ps waxco 'state command vsz rss uid user ppid' 2>/dev/null | \ - egrep -i ["^STAT +COMMAND +VSZ +RSS +UID +USER +PPID"] >/dev/null +elif ps waxco 'state command vsz rss uid user pid ppid' 2>/dev/null | \ + egrep -i ["^STAT +COMMAND +VSZ +RSS +UID +USER +PID +PPID"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS waxco 'state uid ppid vsz rss pcpu command command'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS waxco 'state uid pid ppid vsz rss pcpu command command'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) dnl BSD-like mode in RH 6.1 -elif ps waxno 'state comm vsz rss uid user ppid args' 2>/dev/null | \ - egrep -i ["^S +COMMAND +VSZ +RSS +UID +USER +PPID +[RGSCOMDNA]+"] >/dev/null +elif ps waxno 'state comm vsz rss uid user pid ppid args' 2>/dev/null | \ + egrep -i ["^S +COMMAND +VSZ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS waxno 'state uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS waxno 'state uid pid ppid vsz rss pcpu comm args'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) dnl SunOS 4.1.3: dnl F UID PID PPID CP PRI NI SZ RSS WCHAN STAT TT TIME COMMAND -elif ps -laxnwww 2>/dev/null | \ +dnl Need the head -1 otherwise test will work because arguments are found +elif ps -laxnwww 2>/dev/null | head -1 | \ egrep -i ["^ *F(LAGS)? +UID +PID +PPID +CP +PRI +NI +(SZ)|(VSZ)|(SIZE) +RSS +WCHAN +STAT? +TTY? +TIME +COMMAND"] >/dev/null then - ac_cv_ps_varlist="[&procuid,&procppid,&procvsz,&procrss,procstat,&pos,procprog]" + ac_cv_ps_varlist="[&procuid,&procpid,&procppid,&procvsz,&procrss,procstat,&pos,procprog]" ac_cv_ps_command="$PATH_TO_PS -laxnwww" - ac_cv_ps_format="%*s %d %*s %d %*s %*s %*s %d %d %*s %s %*s %*s %n%s" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_format="%*s %d %d %d %*s %*s %*s %d %d %*s %s %*s %*s %n%s" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) dnl Debian Linux / procps v1.2.9: @@ -671,94 +709,112 @@ dnl elif ps laxnwww 2>/dev/null | \ egrep -i ["^ *F(LAGS)? +UID +PID +PPID +PRI +NI +(VSZ)|(SIZE) +RSS +WCHAN +STAT? TTY +TIME +COMMAND"] >/dev/null then - ac_cv_ps_varlist="[&procuid,&procppid,procstat,&procvsz,&procrss,&pos,procprog]" + ac_cv_ps_varlist="[&procuid,&procpid,&procppid,procstat,&procvsz,&procrss,&pos,procprog]" ac_cv_ps_command="$PATH_TO_PS laxnwww" - ac_cv_ps_format="%*s %d %*s %d %*s %*s %d %d %*s %s %*s %*s %n%s" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_format="%*s %d %d %d %*s %*s %d %d %*s %s %*s %*s %n%s" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) dnl OpenBSD (needs to come early because -exo appears to work, but does not give all procs) -elif ps -axo 'stat comm vsz rss user uid ppid args' 2>/dev/null | \ - egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null +elif ps -axo 'stat comm vsz rss user uid pid ppid args' 2>/dev/null | \ + egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -axo 'stat uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -axo 'stat uid pid ppid vsz rss pcpu comm args'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) -dnl AIX 4.3.3 - needs verification. This works for Tru64 - needs %*[ +] in PS_FORMAT -elif ps -ao 'stat comm vsz rss user uid ppid args' 2>/dev/null | \ - egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null +dnl Tru64 - needs %*[ +<>] in PS_FORMAT. +dnl Has /usr/bin/ps and /sbin/ps - force sbin version +dnl Can't use vsize and rssize because comes back with text (eg, 1.5M instead +dnl of 1500). Will need big changes to check_procs to support +elif /sbin/ps -eo 'stat uid pid ppid pcpu etime comm args' 2>/dev/null | \ + egrep -i ["^ *S +[UID]+ +[PID]+ +[PID]+ +[%CPU]+ +[ELAPSD]+ +[COMMAND]+ +[COMMAND]+"] > /dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -ao 'stat uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="[["%s%*[ +] %d %d %d %d %f %s %n"]]" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procpcpu,procetime,procprog,&pos]" + ac_cv_ps_command="/sbin/ps -eo 'stat uid pid ppid pcpu etime comm args'" + ac_cv_ps_format=["%s%*[ +<>] %d %d %d %f %s %s %n"] + ac_cv_ps_cols=8 AC_MSG_RESULT([$ac_cv_ps_command]) -elif ps -eo 's comm vsz rss user uid ppid args' 2>/dev/null | \ - egrep -i ["^S[TAUES]* +C[OMDNA]+ +[VSIZE]+ +U[SER]+ +U[ID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null +elif ps -eo 's comm vsz rss user uid pid ppid args' 2>/dev/null | \ + egrep -i ["^S[TAUES]* +C[OMDNA]+ +[VSIZE]+ +U[SER]+ +U[ID]+ +P[PID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -eo 's uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -eo 's uid pid ppid vsz rss pcpu comm args'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) -elif ps -Ao 's comm vsz rss uid user ppid args' 2>/dev/null | \ - egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PPID +[RGSCOMDNA]+"] >/dev/null +dnl AIX 4.3.3 and 5.1 do not have an rss field +elif ps -eo 'stat uid pid ppid vsz pcpu comm args' 2>/dev/null | \ + egrep -i ["^ *S[TAUES]* +UID +PID +PPID +VSZ +%CPU +COMMAND +COMMAND"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -Ao 's uid ppid vsz rss pcpu comm args'" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -eo 'stat uid pid ppid vsz pcpu comm args'" ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_cols=8 + AC_MSG_RESULT([$ac_cv_ps_command - with no RSS]) + +dnl Solaris 2.6 +elif ps -Ao 's comm vsz rss uid user pid ppid args' 2>/dev/null | \ + egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null +then + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -Ao 's uid pid ppid vsz rss pcpu comm args'" + # There must be no space between the %s and %n due to a wierd problem in sscanf where + # it will return %n as longer than the line length + ac_cv_ps_format="%s %d %d %d %d %d %f %s%n" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) -elif ps -Ao 'status comm vsz rss uid user ppid args' 2>/dev/null | \ - egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PPID +[RGSCOMDNA]+"] >/dev/null +elif ps -Ao 'status comm vsz rss uid user pid ppid args' 2>/dev/null | \ + egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -Ao 'status uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -Ao 'status uid pid ppid vsz rss pcpu comm args'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) -elif ps -Ao 'state comm vsz rss uid user ppid args' 2>/dev/null | \ - egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PPID +[RGSCOMDNA]+"] >/dev/null +elif ps -Ao 'state comm vsz rss uid user pid ppid args' 2>/dev/null | \ + egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -Ao 'state uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -Ao 'state uid pid ppid vsz rss pcpu comm args'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) dnl wonder who takes state instead of stat -elif ps -ao 'state command vsz rss user ppid args' 2>/dev/null | \ - egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PPID +[RGSCOMDNA]+"] >/dev/null +elif ps -ao 'state command vsz rss user pid ppid args' 2>/dev/null | \ + egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER +PID +PPID +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -ao 'state uid ppid vsz rss pcpu command args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -ao 'state uid pid ppid vsz rss pcpu command args'" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=8 AC_MSG_RESULT([$ac_cv_ps_command]) dnl IRIX 53 elif ps -el 2>/dev/null | \ egrep -i ["^ *F +S +UID +PID +PPID +C +PRI +NI +P +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&pos,procprog]" - ac_cv_ps_command="$PATH_TO_PS -el" - ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %d %d %*s %*s %*s %n%s" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&procvsz,&procrss,&pos,procprog]" + ac_cv_ps_command="$PATH_TO_PS -el (IRIX 53)" + ac_cv_ps_format="%*s %s %d %d %d %*s %*s %*s %*s %d %d %*s %*s %*s %n%s" + ac_cv_ps_cols=8 AC_MSG_RESULT([$ac_cv_ps_command]) dnl IRIX 63 elif ps -el 2>/dev/null | \ egrep -i ["^ *F +S +UID +PID +PPID +C +PRI +NI +P +ADDR +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]" - ac_cv_ps_command="$PATH_TO_PS -el" - ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&pos,procprog]" + ac_cv_ps_command="$PATH_TO_PS -el (IRIX 63)" + ac_cv_ps_format="%*s %s %d %d %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s" + ac_cv_ps_cols=6 AC_MSG_RESULT([$ac_cv_ps_command]) dnl AIX 4.1: @@ -767,18 +823,20 @@ dnl 303 A 0 0 0 120 16 -- 1c07 20 24 - 0:45 elif ps -el 2>/dev/null | \ egrep -i ["^ *F +S +UID +PID +PPID +C +PRI +NI +ADDR +SZ +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]" - ac_cv_ps_command="$PATH_TO_PS -el" - ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %n%s" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&pos,procprog]" + ac_cv_ps_command="$PATH_TO_PS -el (AIX 4.1 and HP-UX)" + ac_cv_ps_format="%*s %s %d %d %d %*s %*s %*s %*s %*s %*s %*s %*s %n%s" + ac_cv_ps_cols=6 AC_MSG_RESULT([$ac_cv_ps_command]) dnl AIX? elif ps glaxen 2>/dev/null | \ egrep -i ["^ *F +UID +PID +PPID +PRI +NI +VSZ +RSS +WCHAN +STAT +TTY +TIME +COMMAND"] >/dev/null then - ac_cv_ps_varlist="[&procuid,&procppid,&procvsz,&procrss,procstat,&pos,procprog]" + ac_cv_ps_varlist="[&procuid,&procpid,&procppid,&procvsz,&procrss,procstat,&pos,procprog]" ac_cv_ps_command="$PATH_TO_PS glaxen" - ac_cv_ps_format="%*s %d %*s %d %*s %*s %d %d %*s %s %*s %*s %n%s" + ac_cv_ps_format="%*s %d %d %d %*s %*s %d %d %*s %s %*s %*s %n%s" + ac_cv_ps_cols=8 AC_MSG_RESULT([$ac_cv_ps_command]) dnl MacOSX / Darwin @@ -786,85 +844,41 @@ dnl TODO: MacOSX has commands with spaces which will cause problems to PS_FORMAT dnl Some truncation will happen in UCOMM column dnl STAT VSZ RSS UID PPID %CPU UCOMM COMMAND dnl Ss 52756 22496 501 1 6.9 Window Manager /System/Library/CoreServices/WindowServer -daemon -elif ps wwaxo 'state vsz rss uid ppid pcpu ucomm command' 2>/dev/null | \ +elif ps wwaxo 'state vsz rss uid pid ppid pcpu ucomm command' 2>/dev/null | \ egrep -i ["^STAT +VSZ +RSS +UID +PPID +%CPU +UCOMM +COMMAND"] >/dev/null then - ac_cv_ps_command="$PATH_TO_PS wwaxo 'state vsz rss uid ppid pcpu ucomm command'" - ac_cv_ps_varlist="[procstat,&procvsz,&procrss,&procuid,&procppid,&procpcpu,procprog,&pos]" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - EXTRAS="$EXTRAS check_nagios" + ac_cv_ps_command="$PATH_TO_PS wwaxo 'state vsz rss uid pid ppid pcpu ucomm command'" + ac_cv_ps_varlist="[procstat,&procvsz,&procrss,&procuid,&procpid,&procppid,&procpcpu,procprog,&pos]" + ac_cv_ps_format="%s %d %d %d %d %d %f %s %n" + ac_cv_ps_cols=8 AC_MSG_RESULT([$ac_cv_ps_command]) dnl UnixWare elif ps -Al 2>/dev/null | \ egrep -i ["^ *F +S +UID +PID +PPID +CLS +PRI +NI +C +ADDR +SZ +WCHAN +TTY +TIME +COMD"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]" + ac_cv_ps_varlist="[procstat,&procuid,&procpid,&procppid,&pos,procprog]" ac_cv_ps_command="$PATH_TO_PS -Al" - ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s" - #if ps -Ao 'vsz comm' 2>/dev/null | \ - # egrep -i ["^ *VSZ +COMMAND"] >/dev/null - #then - # ac_cv_vsz_command="$PATH_TO_PS -Ao 'vsz comm'" - # ac_cv_vsz_format="%*s %d" - #fi + ac_cv_ps_format="%*s %s %d %d %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s" + ac_cv_ps_cols=8 AC_MSG_RESULT([$ac_cv_ps_command]) else - AC_MSG_WARN([unable to find usable ps syntax]) + AC_MSG_WARN([unable to find usable ps syntax - check_procs and check_nagios will not be compiled]) fi -AC_DEFINE_UNQUOTED(PS_VARLIST,$ac_cv_ps_varlist, - [Variable list for sscanf of 'ps' output]) -AC_DEFINE_UNQUOTED(PS_COMMAND,"$ac_cv_ps_command", - [Verbatim command to execute for ps in check_procs]) -AC_DEFINE_UNQUOTED(PS_FORMAT,"$ac_cv_ps_format", - [Format string for scanning ps output in check_procs]) - -AC_PATH_PROG(PATH_TO_DF,df) -AC_PATH_PROG(PATH_TO_BDF,bdf) - -AC_ARG_WITH(df_command, - ACX_HELP_STRING([--with-df-command=SYNTAX], - [sets syntax for df]), - with_df_command=$withval,) - -AC_MSG_CHECKING(for df syntax) -if test -n "$with_df_command" -then - AC_MSG_RESULT([$with_df_command]) - -elif df -Pk 2>/dev/null | egrep -i ["^(/dev/|[a-zA-Z]:)[a-z0-9/\\]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/\\]*"] >/dev/null -then - with_df_command="$PATH_TO_DF -Pk" - AC_MSG_RESULT([$with_df_command]) - -elif df -k 2>/dev/null | egrep -i ["^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*"] >/dev/null -then - with_df_command="$PATH_TO_DF -k" - AC_MSG_RESULT([$with_df_command]) - -elif df 2>/dev/null | egrep -i ["^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*"] >/dev/null -then - with_df_command="$PATH_TO_DF" - AC_MSG_RESULT([$with_df_command]) - -elif bdf 2>/dev/null | egrep -i ["^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*"] >/dev/null -then - with_df_command="$PATH_TO_BDF" - AC_MSG_RESULT([$with_df_command]) - -else - AC_MSG_WARN([unable to find usable df syntax]) +if test -n "$ac_cv_ps_varlist" ; then + AC_DEFINE_UNQUOTED(PS_VARLIST,$ac_cv_ps_varlist, + [Variable list for sscanf of 'ps' output]) + AC_DEFINE_UNQUOTED(PS_COMMAND,"$ac_cv_ps_command", + [Verbatim command to execute for ps in check_procs]) + AC_DEFINE_UNQUOTED(PS_FORMAT,"$ac_cv_ps_format", + [Format string for scanning ps output in check_procs]) + AC_DEFINE_UNQUOTED(PS_COLS,$ac_cv_ps_cols, + [Number of columns in ps command]) + EXTRAS="$EXTRAS check_procs check_nagios" fi -AC_DEFINE_UNQUOTED(DF_COMMAND,"$with_df_command",[path and args for df command]) - -dnl jm_AFS -jm_LIST_MOUNTED_FILESYSTEMS([list_mounted_fs=yes], [list_mounted_fs=no]) -jm_FSTYPENAME -jm_FILE_SYSTEM_USAGE([space=yes], [space=no]) - AC_PATH_PROG(PATH_TO_PING,ping) AC_PATH_PROG(PATH_TO_PING6,ping6) @@ -875,6 +889,7 @@ AC_ARG_WITH(ping_command, AC_MSG_CHECKING(for ICMP ping syntax) ac_cv_ping_packets_first=no +ac_cv_ping_has_timeout=no if test -n "$with_ping_command" then AC_MSG_RESULT([(command-line) $with_ping_command]) @@ -891,6 +906,14 @@ then ac_cv_ping_packets_first=yes AC_MSG_RESULT([$with_ping_command]) +elif $PATH_TO_PING -n -U -w 10 -c 1 127.0.0.1 2>/dev/null | \ + egrep -i "^round-trip|^rtt" >/dev/null +then + with_ping_command="$PATH_TO_PING -n -U -w %d -c %d %s" + ac_cv_ping_packets_first=yes + ac_cv_ping_has_timeout=yes + AC_MSG_RESULT([$with_ping_command]) + elif $PATH_TO_PING -n -U -c 1 127.0.0.1 2>/dev/null | \ egrep -i "^round-trip|^rtt" >/dev/null then @@ -956,6 +979,12 @@ then [Define if packet count must precede host]) fi +if test "x$ac_cv_ping_has_timeout" != "xno" +then + AC_DEFINE(PING_HAS_TIMEOUT,1, + [Define if ping has its own timeout option that should be set]) +fi + AC_ARG_WITH(ping6_command, ACX_HELP_STRING([--with-ping6-command=SYNTAX], [sets syntax for ICMPv6 ping]), @@ -981,6 +1010,14 @@ elif test "x$PATH_TO_PING6" != "x"; then ac_cv_ping6_packets_first=yes AC_MSG_RESULT([$with_ping6_command]) + elif $PATH_TO_PING6 -n -U -w 10 -c 1 ::1 2>/dev/null | \ + egrep -i "^round-trip|^rtt" >/dev/null + then + with_ping6_command="$PATH_TO_PING6 -n -U -w %d -c %d %s" + ac_cv_ping6_packets_first=yes + ac_cv_ping_has_timeout=yes + AC_MSG_RESULT([$with_ping6_command]) + elif $PATH_TO_PING6 -n -U -c 1 ::1 2>/dev/null | \ egrep -i "^round-trip|^rtt" >/dev/null then @@ -1273,23 +1310,11 @@ fi dnl SWAP info required is amount allocated/available and amount free dnl The plugin works through all the swap devices and adds up the total swap dnl available. - -dnl dunno why this does not work below - use hack (kbd) -dnl fine on linux, broken on solaris -dnl if /bin/test -e "/proc/meminfo" - AC_PATH_PROG(PATH_TO_SWAP,swap) -AC_PATH_PROG(PATH_TO_SWAPINFO,swapinfo) - -AC_MSG_CHECKING(for how to check memory) -if [cat /proc/meminfo > /dev/null 2>&1] +if (test -n "$PATH_TO_SWAP") then - AC_MSG_RESULT([found /proc/meminfo]) - AC_DEFINE(HAVE_PROC_MEMINFO,1,[Define if we have /proc/meminfo]) - AC_DEFINE_UNQUOTED(PROC_MEMINFO,"/proc/meminfo",[path to /proc/meminfo if name changes]) - EXTRAS="$EXTRAS check_swap" - -elif [$PATH_TO_SWAP -l 2>&1 >/dev/null] +AC_MSG_CHECKING([for $PATH_TO_SWAP format]) +if [$PATH_TO_SWAP -l 2>&1 >/dev/null] then ac_cv_have_swap=yes ac_cv_swap_command="$PATH_TO_SWAP -l" @@ -1297,50 +1322,159 @@ then egrep -i "^lswap +path +pri +swaplo +blocks +free +maxswap" \ >/dev/null] then - ac_cv_swap_format=[" %*d %*s %*d,%*d %*d %*d %d %d"] + ac_cv_swap_format=[" %*d %*s %*d,%*d %*d %*d %f %f"] ac_cv_swap_conv=2048 AC_MSG_RESULT([using IRIX format swap]) - elif [$PATH_TO_SWAP -l 2>/dev/null | egrep -i "^swapfile +dev +swaplo +blocks +free" >/dev/null] - then - ac_cv_swap_format=["%*s %*[0-9,-] %*d %d %d"] - ac_cv_swap_conv=2048 - AC_MSG_RESULT([using Solaris format swap]) - elif [$PATH_TO_SWAP -l 2>/dev/null | egrep -i "^path +dev +swaplo +blocks +free" >/dev/null] then - ac_cv_swap_format=["%*s %*[0-9,-] %*d %d %d"] + ac_cv_swap_format=["%*s %*[0-9,-] %*d %f %f"] ac_cv_swap_conv=2048 AC_MSG_RESULT([using Unixware format swap]) - + else + dnl if we don't know what format swap's output is + dnl we might as well pretend we didn't see it + ac_cv_have_swap="" + ac_cv_swap_command="" fi - EXTRAS="$EXTRAS check_swap" +fi +dnl end if for PATH_TO_SWAP +fi -elif [$PATH_TO_SWAPINFO -k 2>&1 | egrep -i "^Device" >/dev/null] +AC_PATH_PROG(PATH_TO_SWAPINFO,swapinfo) +if (test -n "$PATH_TO_SWAPINFO") +then +AC_MSG_CHECKING([for $PATH_TO_SWAPINFO format]) +if [$PATH_TO_SWAPINFO -k 2>&1 | egrep -i "^Device" >/dev/null] then ac_cv_have_swap=yes ac_cv_swap_command="$PATH_TO_SWAPINFO -k" if [$PATH_TO_SWAPINFO -k 2>/dev/null | egrep -i "^Device +1K-blocks +Used +Avail" >/dev/null] then - ac_cv_swap_format=["%*s %d %*d %d"] + ac_cv_swap_format=["%*s %f %*d %f"] ac_cv_swap_conv=1024 AC_MSG_RESULT([using FreeBSD format swapinfo]) fi - EXTRAS="$EXTRAS check_swap" elif [$PATH_TO_SWAPINFO -dfM 2>/dev/null | egrep -i "^TYPE +AVAIL +USED +FREE" >/dev/null] then ac_cv_have_swap=yes ac_cv_swap_command="$PATH_TO_SWAPINFO -dfM", - ac_cv_swap_format=["%*s %d %*d %d"] + ac_cv_swap_format=["%*s %f %*d %f"] ac_cv_swap_conv=1024 AC_MSG_RESULT([using HP-UX format swapinfo]) fi +dnl end if for PATH_TO_SWAPINFO +fi + +AC_PATH_PROG(PATH_TO_LSPS,lsps) +if (test -n "$PATH_TO_LSPS") +then +AC_MSG_CHECKING([for $PATH_TO_LSPS format]) +if [$PATH_TO_LSPS -a 2>/dev/null | egrep -i "^Page Space" > /dev/null] +then + ac_cv_have_swap=yes + ac_cv_swap_command="$PATH_TO_LSPS -a" + ac_cv_swap_format=["%*s %*s %*s %f%*s %f %*s"] + ac_cv_swap_conv=1 + AC_MSG_RESULT([using AIX lsps]) +fi +dnl end if for PATH_TO_SWAPINFO +fi + +dnl +dnl test for swapctl system call, both the 2-arg and 3-arg variants +dnl fwict, the 2-arg is an SVR4 standard, whereas the 3-arg is shared +dnl in the various BSD's +dnl + +AC_CHECK_HEADERS([sys/stat.h sys/param.h]) +AC_CHECK_HEADERS([sys/swap.h], [], [], [ +#ifdef HAVE_SYS_PARAM_H +#include +#endif +]) +AC_CHECK_DECLS([swapctl],,,[ + #include + #include + #include + #include + #include + ]) +AC_CHECK_TYPES([swaptbl_t, swapent_t],,,[ + #include + #include + #include + #include + ]) +AC_CHECK_MEMBERS([struct swapent.se_nblks],,,[ + #include + #include + #include + #include + #include + ]) + +if test "$ac_cv_have_decl_swapctl" = "yes"; +then + EXTRAS="$EXTRAS check_swap" + AC_MSG_CHECKING([for 2-arg (SVR4) swapctl]) + if test "$ac_cv_type_swaptbl_t" = "yes" -a \ + "$ac_cv_type_swapent_t" = "yes"; + then + AC_MSG_RESULT([yes]) + ac_cv_check_swap_swapctl_svr4="1"; + AC_DEFINE([CHECK_SWAP_SWAPCTL_SVR4],1, + [Define if 2-argument SVR4 swapctl exists]) + else + AC_MSG_RESULT([no]) + AC_MSG_CHECKING([for 3-arg (*BSD) swapctl]) + if test "$ac_cv_member_struct_swapent_se_nblks" = "yes"; + then + AC_MSG_RESULT([yes]) + AC_DEFINE([CHECK_SWAP_SWAPCTL_BSD],1, + [Define if 3-argument BSD swapctl exists]) + else + AC_MSG_RESULT([no]) + fi + fi + AC_MSG_CHECKING([for whether swapctl uses blocks or pages]) + if test "$ac_cv_check_swap_swapctl_svr4" = "1"; + then + dnl + dnl the SVR4 spec returns values in pages + dnl + AC_MSG_RESULT([page]) + AC_CHECK_DECLS([sysconf]) + AC_MSG_CHECKING([for system page size]) + if test "$ac_cv_have_decl_sysconf" = "yes"; + then + AC_MSG_RESULT([determined by sysconf(3)]) + ac_cv_swap_conv="(1048576/sysconf(_SC_PAGESIZE))" + else + AC_MSG_WARN([don't know. guessing 4096k]) + ac_cv_swap_conv=256 + fi + else + dnl + dnl the BSD spec returns values in blocks + dnl + AC_MSG_RESULT([blocks (assuming 512b)]) + ac_cv_swap_conv=2048 + fi + AC_DEFINE_UNQUOTED(SWAP_CONVERSION,$ac_cv_swap_conv, + [Conversion factor to MB]) +fi +dnl +dnl end tests for the swapctl system calls +dnl + if test "x$ac_cv_have_swap" != "x" then AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found]) + EXTRAS="$EXTRAS check_swap" fi if test "x$ac_cv_swap_command" != "x" then @@ -1352,6 +1486,20 @@ then [Conversion factor to MB]) fi +dnl dunno why this does not work below - use hack (kbd) +dnl fine on linux, broken on solaris +dnl if /bin/test -e "/proc/meminfo" +AC_MSG_CHECKING([for /proc/meminfo]) +if [cat /proc/meminfo > /dev/null 2>&1] +then + AC_MSG_RESULT([found /proc/meminfo]) + AC_DEFINE(HAVE_PROC_MEMINFO,1,[Define if we have /proc/meminfo]) + AC_DEFINE_UNQUOTED(PROC_MEMINFO,"/proc/meminfo",[path to /proc/meminfo if name changes]) + EXTRAS="$EXTRAS check_swap" +else + AC_MSG_RESULT([no]) +fi + AC_PATH_PROG(PATH_TO_DIG,dig) AC_DEFINE_UNQUOTED(PATH_TO_DIG,"$PATH_TO_DIG",[Path to dig command, if present]) if test -n "$PATH_TO_DIG"; then @@ -1378,22 +1526,73 @@ AC_TRY_COMPILE([#ifdef __STDC__ [AC_MSG_RESULT(yes)], [NEED_VA_LIST=-DNEED_VA_LIST AC_SUBST(NEED_VA_LIST) AC_MSG_RESULT(no)]) +case $host in + *bsd*) + AC_DEFINE(__bsd__,1,[bsd specific code in check_dhcp.c]) + ;; + *linux*) + AC_DEFINE(__linux__,1,[sun specific code in check_dhcp.c]) + ;; + *sun* | solaris*) + AC_DEFINE(__sun__,1,[sun specific code in check_dhcp.c]) + ;; + *hpux*) + AC_DEFINE(__hpux__,1,[hpux specific code in check_dhcp.c]) + ;; +esac + AC_SUBST(EXTRAS) AC_SUBST(EXTRA_NETOBJS) AC_SUBST(DEPLIBS) -AM_GNU_GETTEXT_VERSION(0.11.4) -AM_GNU_GETTEXT - -AC_OUTPUT(Makefile lib/Makefile plugins/Makefile plugins-scripts/Makefile plugins-scripts/subst plugins-scripts/utils.pm plugins-scripts/utils.sh command.cfg test.pl pkg/solaris/pkginfo intl/Makefile po/Makefile.in ) +AM_GNU_GETTEXT([no-libtool], [need-ngettext]) +AM_GNU_GETTEXT_VERSION(0.11.5) + +dnl Check for Redhat spopen problem +dnl Wierd problem where ECHILD is returned from a wait call in error +dnl Only appears to affect nslookup and dig calls. Only affects redhat around +dnl 2.6.9-11 (okay in 2.6.9-5). Redhat investigating root cause +dnl We patch plugins/popen.c +if echo $ac_cv_uname_r | egrep "\.EL$" >/dev/null 2>&1 ; then + AC_MSG_CHECKING(for redhat spopen problem) + ( cd config_test && make && make test ) > /dev/null 2>&1 + if test $? -eq 0 ; then + AC_MSG_RESULT(okay) + else + AC_MSG_RESULT(error) + AC_DEFINE(REDHAT_SPOPEN_ERROR, 1, "Problem on redhat with spopen") + fi +fi +dnl External libraries - see ACKNOWLEDGEMENTS +np_COREUTILS +np_CURL + +AC_OUTPUT( + Makefile + lib/Makefile + m4/Makefile + plugins/Makefile + plugins-root/Makefile + plugins-scripts/Makefile + plugins-scripts/subst + plugins-scripts/utils.pm + plugins-scripts/utils.sh + command.cfg + test.pl + pkg/solaris/pkginfo + intl/Makefile + po/Makefile.in +) + +ACX_FEATURE([with],[perl]) ACX_FEATURE([with],[cgiurl]) ACX_FEATURE([with],[nagios-user]) ACX_FEATURE([with],[nagios-group]) ACX_FEATURE([with],[trusted-path]) -ACX_FEATURE([with],[df-command]) ACX_FEATURE([with],[ping-command]) ACX_FEATURE([with],[ping6-command]) ACX_FEATURE([with],[lwres]) ACX_FEATURE([with],[ipv6]) +ACX_FEATURE([with],[openssl]) ACX_FEATURE([enable],[emulate-getaddrinfo])