Code

Added reference to the official NSClient web site
[nagiosplug.git] / configure.in
index e7af90180fe1670cd6c7c6d060600b0413ce81b1..919461c7a51e5ade8950bdca57d9e4e958f9c36b 100644 (file)
@@ -1,10 +1,17 @@
 dnl Process this file with autoconf to produce a configure script.
 include(`aclocal.m4')
+include(`getloadavg.m4')
 AC_REVISION ($Revision$)
-AC_INIT(package.def)
-VERSION=`cat $srcdir/package.def|sed -e 's/PACKAGE_RELEASE= *"//;s/"//'`
-PACKAGE=nagios-plugins
-dnl AM_INIT_AUTOMAKE(nagios-plugins,$VERSION)
+AC_INIT(Helper.pm)
+VER=1.3.0
+REL=beta2
+AC_SUBST(VER)
+AC_SUBST(REL)
+PACKAGE_VERSION="${VER}-${REL}"
+AC_SUBST(PACKAGE_VERSION)
+PACKAGE_RELEASE="${REL}"
+AC_SUBST(PACKAGE_RELEASE)
+AM_INIT_AUTOMAKE(nagios-plugins,${PACKAGE_VERSION})
 AM_CONFIG_HEADER(plugins/config.h plugins/common.h plugins/version.h plugins/netutils.h plugins/utils.h plugins/popen.h)
 
 AC_PREFIX_DEFAULT(/usr/local/nagios)
@@ -14,6 +21,13 @@ dnl Figure out how to invoke "install" and what install options to use.
 AC_PROG_INSTALL
 AC_SUBST(INSTALL)
 
+AC_PROG_CC
+AC_PROG_MAKE_SET
+AC_PROG_AWK
+
+AC_FUNC_GETLOADAVG(plugins)
+ifdef([AC_FUNC_STRTOD],[AC_FUNC_STRTOD],[AM_FUNC_STRTOD])
+dnl AM_WITH_REGEX
 AC_PROG_RANLIB
 
 AC_PATH_PROG(ACLOCAL,aclocal)
@@ -33,13 +47,10 @@ AC_SUBST(WARRANTY)
 SUPPORT="Send email to nagios-users@lists.sourceforge.net if you have questions\nregarding use of this software. To submit patches or suggest improvements,\nsend email to nagiosplug-devel@lists.sourceforge.net\n"
 AC_SUBST(SUPPORT)
 
-AC_ARG_PROGRAM
-
-dnl AC_ARG_WITH(nonposix_state_defs,--with-nonposix-state-defs uses POSIXLY incorrect states for netsaint < 0.0.7b2,,AC_DEFINE(POSIX_STATE_DEFS))
-
-AC_ARG_WITH(cgiurl,--with-cgiurl=<dir> sets URL for cgi programs,cgiurl=$withval,cgiurl=/cgi-bin/nagios)
+dnl CGIURL has changed for Nagios with 1.0 beta
+AC_ARG_WITH(cgiurl,--with-cgiurl=<dir> sets URL for cgi programs,cgiurl=$withval,cgiurl=/nagios/cgi-bin)
 CGIURL="$cgiurl"
-AC_DEFINE_UNQUOTED(CGIURL,"$CGIURL")
+AC_DEFINE_UNQUOTED(CGIURL,"$CGIURL",[URL of CGI programs])
 
 AC_ARG_WITH(nagios_user,--with-nagios-user=<user> sets user name to run nagios,nagios_usr=$withval,nagios_usr=nagios)
 AC_ARG_WITH(nagios_group,--with-nagios-group=<group> sets group name to run nagios,nagios_grp=$withval,nagios_grp=nagios)
@@ -52,15 +63,11 @@ AC_ARG_WITH(trusted_path,--with-trusted-path=/bin:/sbin:/usr/bin:/usr/sbin sets
 AC_SUBST(trusted_path)
 
 EXTRAS=
-PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/etc:/usr/local/bin:/usr/local/sbin:$PATH
+dnl PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/etc:/usr/local/bin:/usr/local/sbin:$PATH
 
 LDFLAGS="$LDFLAGS -L."
 
 dnl Checks for programs.
-AC_PROG_CC
-AC_PROG_MAKE_SET
-AC_PROG_AWK
-
 AC_PATH_PROG(PYTHON,python)
 AC_PATH_PROG(PERL,perl)
 AC_PATH_PROG(SH,sh)
@@ -73,8 +80,6 @@ dnl
 dnl Checks for libraries.
 dnl
 
-AC_FUNC_GETLOADAVG
-
 AC_CHECK_LIB(dce,main,SOCKETLIBS="$SOCKETLIBS -ldce")
 AC_CHECK_LIB(nsl,main,SOCKETLIBS="$SOCKETLIBS -lnsl")
 AC_CHECK_LIB(socket,socket,SOCKETLIBS="$SOCKETLIBS -lsocket")
@@ -154,13 +159,16 @@ else
 fi
 LIBS="$_SAVEDLIBS"
 
+
 dnl Check for mysql libraries
 _SAVEDLIBS="$LIBS"
 _SAVEDCPPFLAGS="$CPPFLAGS"
-CPPFLAGS="-I/usr/include"
-AC_ARG_WITH(mysqllibdir,--with-mysqllibdir=<dir> sets path to mysql libraries,[MYSQLLIBDIR=$withval])
-if test -n "$MYSQLLIBS"; then
-  AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L$MYSQLLIBDIR",,-L$MYSQLLIBDIR -lz)
+AC_ARG_WITH(mysql,--with-mysql=<dir> sets path to mysql installation (assumes lib/mysql and include subdirs),[MYSQL=$withval])
+if test -n "$MYSQL"; then
+  MYSQLLIBDIR=$MYSQL/lib/mysql
+  CPPFLAGS="-I$MYSQL/include"
+  AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L$MYSQLLIBDIR ",,-L$MYSQLLIBDIR -lz)
+  AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
 elif test -f /usr/lib/libmysqlclient.so; then
   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz",,-lz)
   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
@@ -175,9 +183,10 @@ elif test -f /usr/lib/mysql/libmysqlclient.a; then
   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql)
 fi
 if test "$ac_cv_lib_mysqlclient_mysql_init" = "yes" -o "$ac_cv_lib_mysqlclient_mysql_close" = "yes"; then
-  AC_CHECK_HEADERS(mysql/mysql.h mysql/errmsg.h)
+  AC_CHECK_HEADERS(mysql/mysql.h mysql/errmsg.h, MYSQLINCLUDE="-I$MYSQL/include" )
   if test "$ac_cv_header_mysql_mysql_h" = "yes" -a "$ac_cv_header_mysql_errmsg_h" = "yes"; then
     EXTRAS="$EXTRAS check_mysql"
+    AC_SUBST(MYSQLINCLUDE)
     AC_SUBST(MYSQLLIBS)
     AC_SUBST(check_mysql_LDFLAGS)
   else
@@ -188,8 +197,8 @@ else
   AC_MSG_WARN([Skipping mysql plugin])
   AC_MSG_WARN([install mysql client libs to compile this plugin (see Requirements).])
 fi
-LIBS="$_SAVEDLIBS"
 CPPFLAGS="$_SAVEDCPPFLAGS"
+LIBS="$_SAVEDLIBS"
 
 dnl Check for OpenSSL location
 AC_PATH_PROG(OPENSSL,openssl)
@@ -210,6 +219,19 @@ elif test "$OPENSSL" = "/usr/local/ssl/bin/openssl"; then
 fi
 AC_ARG_WITH(openssl,--with-openssl=<dir> sets path to openssl installation,[OPENSSL=$withval])
 
+AC_CHECK_HEADERS(krb5.h,FOUNDINCLUDE=yes,FOUNDINCLUDE=no)
+if test "$FOUNDINCLUDE" = "no"; then
+  _SAVEDCPPFLAGS="$CPPFLAGS"
+  CPPFLAGS="$_SAVEDCPPFLAGS -I/usr/kerberos/include"
+  unset ac_cv_header_krb5_h
+  AC_CHECK_HEADERS(krb5.h,
+                   KRB5INCLUDE="-I/usr/kerberos/include"
+                   FOUNDINCLUDE=yes,
+                   FOUNDINCLUDE=no)
+fi
+AC_SUBST(SSLINCLUDE)
+CPPFLAGS="$_SAVEDCPPFLAGS $SSLINCLUDE"
+
 dnl Check for OpenSSL header files
 _SAVEDCPPFLAGS="$CPPFLAGS"
 FOUNDINCLUDE=yes
@@ -236,7 +258,7 @@ if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then
   if test "$ac_cv_lib_ssl_main" = "yes"; then
     if test "$FOUNDINCLUDE" = "yes"; then
       AC_SUBST(SSLLIBS)
-      AC_DEFINE(HAVE_SSL)
+      AC_DEFINE(HAVE_SSL,1,[Define if SSL libraries are found])
     fi
   fi
 fi
@@ -250,6 +272,7 @@ AC_HEADER_STDC
 AC_HEADER_TIME
 AC_HEADER_SYS_WAIT
 AC_CHECK_HEADERS(signal.h strings.h string.h syslog.h unistd.h uio.h errno.h regex.h sys/types.h sys/time.h sys/socket.h sys/loadavg.h)
+AC_CHECK_HEADERS(stdarg.h sys/unistd.h unistd.h ctype.h sys/wait.h stdlib.h)
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -258,260 +281,375 @@ AC_TYPE_PID_T
 AC_TYPE_SIZE_T
 AC_TYPE_SIGNAL
 
-dnl EXTRA_LIBRARIES="libgetopt.a libsnprintf.a"
-dnl noinst_LIBRARIES="libgetopt.a libsnprintf.a"
-dnl libgetopt_a_SOURCES="getopt.c getopt1.c"
-dnl libgetopt_a_DEPENDENCIES=getopt.h
-dnl libsnprintf_a_SOURCES=snprintf.c
-dnl AC_SUBST(noinst_LIBRARIES)
-dnl AC_SUBST(libgetopt_a_SOURCES)
-dnl AC_SUBST(libgetopt_a_DEPENDENCIES)
-dnl AC_SUBST(libsnprintf_a_SOURCES)
+AC_CHECK_SIZEOF(int,cross)
+AC_CHECK_SIZEOF(long,cross)
+AC_CHECK_SIZEOF(short,cross)
 
-AC_MSG_CHECKING(for getopt_long)
-AC_TRY_COMPILE([#include <getopt.h>
-#include <stdlib.h>],
-[int option_index=0;
-static struct option *long_options;
-getopt_long(0,NULL,"+h",long_options,&option_index);],
-[AC_DEFINE(HAVE_GETOPT_H) AC_DEFINE(HAVE_GETOPT_LONG) AC_MSG_RESULT(yes)],
-[AC_DEFINE(HAVE_GETOPT_H) AC_DEFINE(HAVE_GETOPT_LONG) AC_MSG_RESULT(no) import_sources=getopt])
+AC_CACHE_CHECK([for long long],ac_cv_have_longlong,[
+AC_TRY_RUN([#include <stdio.h>
+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 <stdio.h>],[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_TRY_LINK([#include <stdarg.h>
+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])
+fi
+
+AC_CACHE_CHECK([for C99 vsnprintf],ac_cv_HAVE_C99_VSNPRINTF,[
+AC_TRY_RUN([
+#include <sys/types.h>
+#include <stdarg.h>
+void foo(const char *format, ...) { 
+       va_list ap;
+       int len;
+       char buf[5];
+
+       va_start(ap, format);
+       len = vsnprintf(buf, 0, format, ap);
+       va_end(ap);
+       if (len != 5) exit(1);
+
+       va_start(ap, format);
+       len = vsnprintf(0, 0, format, ap);
+       va_end(ap);
+       if (len != 5) exit(1);
+
+       if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
+
+       exit(0);
+}
+main() { foo("hello"); }
+],
+ac_cv_HAVE_C99_VSNPRINTF=yes,ac_cv_HAVE_C99_VSNPRINTF=no,ac_cv_HAVE_C99_VSNPRINTF=cross)])
+if test x"$ac_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
+    AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Define if system has C99 compatible vsnprintf])
+fi
 
-AC_CHECK_FUNCS(getopt_long_only,,LIBS="$LIBS -lgetopt" DEPLIBS="$DEPLIBS libgetopt.a")
+#AC_HAVE_DECL(asprintf, [#include <stdio.h>])
+#AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
+#AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
+#AC_HAVE_DECL(snprintf, [#include <stdio.h>])
+
+AC_CHECK_FUNC(snprintf,
+              AC_DEFINE(HAVE_SNPRINTF,1,[Define if snprintf is present]),
+              LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a")
+AC_CHECK_FUNC(vsnprintf,
+              AC_DEFINE(HAVE_VSNPRINTF,1,[Define if vsnprintf is present]),
+              LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a")
+AC_CHECK_FUNC(vasprintf,
+              AC_DEFINE(HAVE_VASPRINTF,1,[Define if vasprintf is present]),
+              LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a")
+AC_CHECK_FUNC(asprintf,
+              AC_DEFINE(HAVE_ASPRINTF,1,[Define if asprintf is present]),
+              LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a")
+
+if test x"$ac_cv_HAVE_SNPRINTF" = x"no" -o x"$ac_cv_HAVE_VSNPRINTF" = x"no" -o x"$ac_cv_HAVE_VASPRINTF" = x"no" -o x"$ac_cv_HAVE_ASPRINTF" = x"no"; then
+  LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a"
+fi
 
-AC_CHECK_FUNC(vsnprintf,,LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a")
+dnl We used to not do long options unless a compatible lib was found
+dnl Now we provide code and make libgetopt if native is not suitable
+AC_MSG_CHECKING(for getopt_long)
+AC_TRY_COMPILE([#include <getopt.h>
+                #include <stdlib.h>],
+               [int option_index=0;
+                static struct option *long_options;
+                getopt_long(0,NULL,"+h",long_options,&option_index);],
+               [AC_DEFINE(HAVE_GETOPT_H,1,[Define if getopt headers are found])
+                AC_DEFINE(HAVE_GETOPT_LONG,1,[Define if getopt_long is found])
+                AC_MSG_RESULT(yes)],
+               [AC_DEFINE(HAVE_GETOPT_H,1,[Define if getopt headers are found])
+                AC_DEFINE(HAVE_GETOPT_LONG,1,[Define if getopt_long is found])
+                AC_MSG_RESULT(no)
+                import_sources=getopt
+                LIBS="$LIBS -lgetopt"
+                DEPLIBS="$DEPLIBS libgetopt.a"])
+
+AC_TRY_COMPILE([#include <sys/time.h>],
+               [struct timeval *tv;
+                struct timezone *tz;],
+               AC_DEFINE(HAVE_STRUCT_TIMEVAL,1,[Define if we have a timeval structure])
+               AC_TRY_COMPILE([#include <sys/time.h>],
+                              [struct timeval *tv;
+                               struct timezone *tz;
+                               gettimeofday(tv, tz);],
+                              AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define if gettimeofday is found]),
+                              AC_DEFINE(NEED_GETTIMEOFDAY,1,[Define if gettimeofday is needed])))
 
 dnl Checks for library functions.
-AC_CHECK_FUNCS(select socket strdup strstr strtod strtol strtoul)
+AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul)
 
 AC_MSG_CHECKING(for type of socket size)
 AC_TRY_COMPILE([#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-],
-[int a = send(1, (const void *) buffer, (size_t *) 0, (int *) 0);],
-[AC_DEFINE(SOCKET_SIZE_TYPE, size_t) AC_MSG_RESULT(size_t)],
-[AC_DEFINE(SOCKET_SIZE_TYPE, int) AC_MSG_RESULT(int)])
+                #include <sys/types.h>
+                #include <sys/socket.h>],
+               [int a = send(1, (const void *) buffer, (size_t *) 0, (int *) 0);],
+               [AC_DEFINE(SOCKET_SIZE_TYPE, size_t, [Define type of socket size])
+                AC_MSG_RESULT(size_t)],
+               [AC_DEFINE(SOCKET_SIZE_TYPE, int, [Define type of socket size])
+                AC_MSG_RESULT(int)])
 
 if test -f "/proc/loadavg"
 then
-  AC_DEFINE(HAVE_PROC_LOADAVG)
-  AC_DEFINE_UNQUOTED(PROC_LOADAVG,"/proc/loadavg")
+  AC_DEFINE(HAVE_PROC_LOADAVG,1,[Define if /proc/loadavg or similar exists])
+  AC_DEFINE_UNQUOTED(PROC_LOADAVG,"/proc/loadavg",[Location of /proc/loadavg])
 fi
 
 AC_PATH_PROG(PATH_TO_PS,ps)
-dnl OpenBSD (needs to come early because -exo appears to work, but does not give all procs)
 dnl  STAT UCOMM              VSZ   RSS USER       UID  PPID COMMAND
-if [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]
+if [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]
 then
-       AC_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -axo 'stat user ppid args'")
+       AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -weo 'stat user ppid args'",[Verbatim command to execute for ps in check_netsaint])
        EXTRAS="$EXTRAS check_nagios"
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -axo 'stat uid ppid comm args'")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -axo 'vsz comm'")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -axo 'rss comm'")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s")
-  echo "      ps syntax... $PATH_TO_PS -eo 'stat comm vsz rss user ppid args'"
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -weo 'stat uid ppid comm args'",[Verbatim command to execute for ps in check_procs])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -weo 'vsz comm'",[Verbatim command to execute for ps in check_vsz])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[Format string for scanning ps output in check_vsz])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -weo 'rss comm'",[Verbatim command to execute for ps in check_rss])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[Format string for scanning ps output in check_rss])
+  echo "      ps syntax... $PATH_TO_PS -weo 'stat comm vsz rss user ppid args'"
+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]
+then
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxo 'state uid ppid command'",[])
+       EXTRAS="$EXTRAS check_nagios"
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxco 'state uid ppid command command'",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxco 'vsz command'",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxco 'rss command'",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
+       echo "      ps syntax... $PATH_TO_PS -Ao 'state command vsz rss'"
+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]
+then
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxno 'state user ppid comm'",[])
+       EXTRAS="$EXTRAS check_nagios"
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxno 'state uid ppid comm args'",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxno 'vsz comm'",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxno 'rss comm'",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
+       echo "      ps syntax... $PATH_TO_PS -waxco 'state comm vsz rss'"
+dnl SunOS 4.1.3:
+dnl  F  UID  PID  PPID  CP  PRI  NI  SZ  RSS  WCHAN  STAT  TT  TIME  COMMAND
+dnl
+elif [ps -laxnwww 2>/dev/null | egrep -i "^ *F(LAGS)? +UID +PID +PPID +CP +PRI +NI +(SZ)|(VSZ)|(SIZE) +RSS +WCHAN +STAT? +TTY? +TIME +COMMAND" >/dev/null]
+then
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS laxnwww",[])
+       EXTRAS="$EXTRAS check_nagios"
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog],[])
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -laxnwww",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %d %*s %d %*s %*s %*s %*s %*s %*s %s %*s %*s %n%s",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS laxnwww",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS laxnwww",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %d",[])
+       echo "      ps syntax... $PATH_TO_PS laxnwww"
+dnl Debian Linux / procps v1.2.9:
+dnl  FLAGS   UID   PID  PPID PRI  NI   SIZE   RSS WCHAN       STA TTY TIME COMMAND
+dnl    100     0     1     0   0   0    776    76  c0131c8c   S  ffff  0:11 init [2]
+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_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS laxnwww",[])
+       EXTRAS="$EXTRAS check_nagios"
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog],[])
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS laxnwww",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %d %*s %d %*s %*s %*s %*s %*s %s %*s %*s %n%s",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS laxnwww",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %d",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS laxnwww",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d",[])
+       echo "      ps syntax... $PATH_TO_PS laxnwww"
+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]
+then
+       AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -axo 'stat user ppid args'",[Verbatim command to execute for ps in check_netsaint])
+       EXTRAS="$EXTRAS check_nagios"
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -axo 'stat uid ppid comm args'",[Verbatim command to execute for ps in check_procs])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -axo 'vsz comm'",[Verbatim command to execute for ps in check_vsz])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[Format string for scanning ps output in check_vsz])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -axo 'rss comm'",[Verbatim command to execute for ps in check_rss])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[Format string for scanning ps output in check_rss])
+  echo "      ps syntax... $PATH_TO_PS -axo 'stat comm vsz rss user ppid args'"
+dnl AIX 4.3.3 - needs verification.
+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]
+then
+       AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -ao 'stat user ppid args'",[Verbatim command to execute for ps in check_netsaint])
+       EXTRAS="$EXTRAS check_nagios"
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -ao 'stat uid ppid comm args'")
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -ao 'vsz comm'",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -ao 'rss comm'",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
+  echo "      ps syntax... $PATH_TO_PS -ao 'stat comm vsz rss user ppid args'"
 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]
 then
-       AC_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -eo 's user ppid args'")
+       AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -eo 's user ppid args'",[Verbatim command to execute for ps in check_netsaint])
        EXTRAS="$EXTRAS check_nagios"
        AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -eo 's uid ppid comm args'")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -eo 'vsz comm'")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -eo 'rss comm'")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s")
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -eo 'vsz comm'",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -eo 'rss comm'",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
         echo "      ps syntax... $PATH_TO_PS -eo 's  comm vsz rss user ppid args'"
 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]
 then
-       AC_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 's user ppid args'")
+       AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 's user ppid args'",[Verbatim command to execute for ps in check_netsaint])
        EXTRAS="$EXTRAS check_nagios"
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 's uid ppid comm args'")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s")
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 's uid ppid comm args'",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
        echo "      ps syntax... $PATH_TO_PS -Ao 's comm vsz rss'"
 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]
 then
-       AC_DEFINE(USE_PS_VARS)
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
        AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 'status user ppid args'")
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 'status user ppid args'",[Verbatim command to execute for ps in check_netsaint])
        EXTRAS="$EXTRAS check_nagios"
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 'status uid ppid comm args'")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s")
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 'status uid ppid comm args'",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
        echo "      ps syntax... $PATH_TO_PS -Ao 'status comm vsz rss'"
 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]
 then
-       AC_DEFINE(USE_PS_VARS)
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
        AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 'state user ppid args'")
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 'state user ppid args'",[Verbatim command to execute for ps in check_netsaint])
        EXTRAS="$EXTRAS check_nagios"
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 'state uid ppid comm args'")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s")
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 'state uid ppid comm args'",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
        echo "      ps syntax... $PATH_TO_PS -Ao 'state comm vsz rss'"
+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]
 then
-       AC_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -ao 'state user ppid args'")
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -ao 'state user ppid args'",[])
        EXTRAS="$EXTRAS check_nagios"
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -ao 'state uid ppid command args'")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -ao 'vsz command'")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -ao 'rss command'")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s")
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -ao 'state uid ppid command args'",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -ao 'vsz command'",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -ao 'rss command'",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
        echo "      ps syntax... $PATH_TO_PS -ao 'state command vsz rss'"
-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]
-then
-       AC_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxo 'state uid ppid command'")
-       EXTRAS="$EXTRAS check_nagios"
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxco 'state uid ppid command command'")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxco 'vsz command'")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxco 'rss command'")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s")
-       echo "      ps syntax... $PATH_TO_PS -Ao 'state command vsz rss'"
-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]
-then
-       AC_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxno 'state user ppid comm'")
-       EXTRAS="$EXTRAS check_nagios"
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxno 'state uid ppid comm args'")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxno 'vsz comm'")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxno 'rss comm'")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s")
-       echo "      ps syntax... $PATH_TO_PS -waxco 'state comm vsz rss'"
 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_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog])
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d")
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog],[])
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
        echo "      ps syntax... $PATH_TO_PS -el"
 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_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog])
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d")
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog],[])
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
        echo "      ps syntax... $PATH_TO_PS -el"
-dnl SunOS 4.1.3:
-dnl  F  UID  PID  PPID  CP  PRI  NI  SZ  RSS  WCHAN  STAT  TT  TIME  COMMAND
-dnl
-elif [ps -laxnwww 2>/dev/null | egrep -i "^ *F(LAGS)? +UID +PID +PPID +CP +PRI +NI +(SZ)|(VSZ)|(SIZE) +RSS +WCHAN +STAT? +TTY? +TIME +COMMAND" >/dev/null]
-then
-       AC_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS laxnwww")
-       EXTRAS="$EXTRAS check_nagios"
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog])
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -laxnwww")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %d %*s %d %*s %*s %*s %*s %*s %*s %s %*s %*s %n%s")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS laxnwww")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS laxnwww")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %d")
-       echo "      ps syntax... $PATH_TO_PS laxnwww"
-dnl Debian Linux / procps v1.2.9:
-dnl  FLAGS   UID   PID  PPID PRI  NI   SIZE   RSS WCHAN       STA TTY TIME COMMAND
-dnl    100     0     1     0   0   0    776    76  c0131c8c   S  ffff  0:11 init [2]
-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_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS laxnwww")
-       EXTRAS="$EXTRAS check_nagios"
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog])
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS laxnwww")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %d %*s %d %*s %*s %*s %*s %*s %s %*s %*s %n%s")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS laxnwww")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %d")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS laxnwww")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d")
-       echo "      ps syntax... $PATH_TO_PS laxnwww"
 dnl    
 dnl AIX 4.1:
 dnl     F S      UID   PID  PPID   C PRI NI ADDR  SZ  RSS   WCHAN    TTY  TIME CMD
 dnl    303 A        0     0     0 120  16 -- 1c07  20   24              -  0:45 swapper
 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_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog])
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %n%s")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %d")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %d")
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog],[])
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %n%s",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
        echo "      ps syntax... $PATH_TO_PS -el"
 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_DEFINE(USE_PS_VARS)
-       AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog])
-       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS glaxen")
-       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %d %*s %d %*s %*s %*s %*s %*s %s %*s %*s %n%s")
-       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS glaxen")
-       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %d")
-       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS glaxen")
-       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d")
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog],[])
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS glaxen",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%*s %d %*s %d %*s %*s %*s %*s %*s %s %*s %*s %n%s",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS glaxen",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %d",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS glaxen",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d",[])
        echo "      ps syntax... $PATH_TO_PS glaxen"
-dnl ucb style?
-dnl elif [ps axun 2>/dev/null | egrep -i "^USER +PID +%CPU +%MEM +SIZE +RSS +TTY +STAT +START +TIME +COMMAND *$" >/dev/null]
-dnl then
-dnl    AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS axun")
-dnl    AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %*s %*s %*s %*s %*s %s %*s %*s %s")
-dnl    AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS axun")
-dnl    AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d")
-dnl    AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS axun")
-dnl    AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %d")
-dnl    echo "      ps syntax... $PATH_TO_PS axun"
-dnl ucb style?
-dnl elif [ps axun 2>/dev/null | egrep -i "^USER +PID +%CPU +%MEM +SIZE +RSS +TTY +STAT +START +TIME +COMMAND" >/dev/null]
-dnl then
-dnl    AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS axun")
-dnl    AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %*s %*s %*s %*s %*s %s %*s %*s %s")
-dnl    AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS axun")
-dnl    AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d")
-dnl    AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS axun")
-dnl    AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %d")
-dnl    echo "      ps syntax... $PATH_TO_PS axun"
+dnl MacOSX / Darwin
+dnl TODO: MacOSX has commands with spaces which will cause problems to PS_FORMAT
+dnl STAT      VSZ    RSS   UID USER     PPID UCOMM            COMMAND
+dnl Ss       1308    272     0 root        0 init             /sbin/init
+elif [ps waxo 'state vsz rss uid user ppid ucomm command' 2>/dev/null | egrep -i "^STAT +VSZ +RSS +UID +USER +PPID +UCOMM +COMMAND" >/dev/null]
+then
+       AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
+       AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
+       AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxo 'state uid ppid command'",[])
+       EXTRAS="$EXTRAS check_nagios"
+       AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxo 'state uid ppid ucomm command'",[])
+       AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
+       AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxco 'vsz command'",[])
+       AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
+       AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxco 'rss command'",[])
+       AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
+       echo "      ps syntax... $PATH_TO_PS waxo 'state vsz rss command'"
 else
        echo "** Unable to find usable ps syntax"
 fi
@@ -519,27 +657,27 @@ fi
 AC_ARG_WITH(df_command,--with-df-command=<syntax> sets syntax for df,DF_COMMAND=$withval)
 if test -n "$DF_COMMAND"
 then
-       AC_DEFINE_UNQUOTED(DF_COMMAND,"$DF_COMMAND")
+       AC_DEFINE_UNQUOTED(DF_COMMAND,"$DF_COMMAND",[path and args for 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
        AC_PATH_PROG(PATH_TO_DF,df)
        AC_MSG_RESULT("      df syntax... $PATH_TO_DF -Pk")
-       AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF -Pk")
+       AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF -Pk",[path and args for 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
        AC_PATH_PROG(PATH_TO_DF,df)
        AC_MSG_RESULT("      df syntax... $PATH_TO_DF -k")
-       AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF -k")
+       AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF -k",[path and args for 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
        AC_PATH_PROG(PATH_TO_DF,df)
        AC_MSG_RESULT("      df syntax... $PATH_TO_DF")
-       AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF")
+       AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF",[path and args for 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
        AC_PATH_PROG(PATH_TO_DF,bdf)
        AC_MSG_RESULT("      df syntax... $PATH_TO_DF")
-       AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF")
+       AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF",[path and args for df command])
 else
        AC_MSG_WARN("unable to find usable df syntax")
 fi
@@ -552,17 +690,17 @@ then
        echo "      ping syntax... (command-line) $PING_COMMAND"
        if test -n "$PING_PACKETS_FIRST"
        then
-               AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND")
+               AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
        fi
 elif [ping -n -U -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
 then
         PING_COMMAND="$PATH_TO_PING -n -U -c %d %s"
-        AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND")
+        AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
         echo "      ping syntax... $PATH_TO_PING -n -U -c <count> <host>"
 elif [ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
 then
        PING_COMMAND="$PATH_TO_PING -n -c %d %s"
-       AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND")
+       AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
        echo "      ping syntax... $PATH_TO_PING -n -c <count> <host>"
 elif [ping -n 127.0.0.1 -c 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
 then
@@ -583,17 +721,17 @@ then
 elif [ping -n -s 56 -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
 then
        PING_COMMAND="$PATH_TO_PING -n -s 56 -c %d %s"
-       AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND")
+       AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
        echo "      ping syntax... $PATH_TO_PING -n -s 56 -c <count> <host>"
 elif [ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
 then
        PING_COMMAND="$PATH_TO_PING -n -c %d %s"
-       AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND")
+       AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
        echo "      ping syntax... $PATH_TO_PING -n -c <count> <host>"
 else
        AC_MSG_WARN("unable to find usable ping syntax")
 fi
-AC_DEFINE_UNQUOTED(PING_COMMAND,"$PING_COMMAND")
+AC_DEFINE_UNQUOTED(PING_COMMAND,"$PING_COMMAND",[path and args for ping command])
 
 AC_PATH_PROG(PATH_TO_NSLOOKUP,nslookup)
 if test -n "$ac_cv_path_PATH_TO_NSLOOKUP"
@@ -602,74 +740,135 @@ then
        if [nslookup -sil 127.0.0.1 2>&1 | grep "*** Invalid option: sil" >/dev/null]
        then
                AC_MSG_RESULT("$PATH_TO_NSLOOKUP")
-               AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$PATH_TO_NSLOOKUP")
+               AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$PATH_TO_NSLOOKUP",[path and args for nslookup])
        else
                AC_MSG_RESULT("$PATH_TO_NSLOOKUP -sil")
-               AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$PATH_TO_NSLOOKUP -sil")
+               AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$PATH_TO_NSLOOKUP -sil",[path and args for nslookup])
        fi
        EXTRAS="$EXTRAS check_dns"
 else
        AC_MSG_WARN("nslookup command not found")
 fi
 
+AC_PATH_PROG(PATH_TO_HOST,host)
+if test -n "$ac_cv_path_PATH_TO_HOST"
+then
+       AC_MSG_CHECKING("host syntax")
+       if [host 127.0.0.1 2>&1 | grep -v "ommand not found" > /dev/null]
+       then
+               AC_MSG_RESULT("$PATH_TO_HOST")
+               AC_DEFINE_UNQUOTED(HOST_COMMAND,"$PATH_TO_HOST",[path to host binary])
+       fi
+       EXTRAS="$EXTRAS check_dns"
+else   
+       AC_MSG_WARN("host command not found")
+fi
+
 AC_PATH_PROG(PATH_TO_UPTIME,uptime)
-AC_DEFINE_UNQUOTED(PATH_TO_UPTIME,"$PATH_TO_UPTIME")
+AC_DEFINE_UNQUOTED(PATH_TO_UPTIME,"$PATH_TO_UPTIME",[path to uptime binary])
+
+AC_PATH_PROG(PATH_TO_RPCINFO,rpcinfo)
+AC_DEFINE_UNQUOTED(PATH_TO_RPCINFO,"$PATH_TO_RPCINFO",[path to rpcinfo binary])
+
+AC_PATH_PROG(PATH_TO_NTPDATE,ntpdate)
+AC_PATH_PROGS(PATH_TO_NTPDC,ntpdc xntpdc)
+if (test -x "$PATH_TO_NTPDATE" || test -x "$PATH_TO_NTPDC")
+then
+       AC_DEFINE_UNQUOTED(PATH_TO_NTPDC,"$PATH_TO_NTPDC",[path to ntpdc binary])
+       AC_DEFINE_UNQUOTED(PATH_TO_NTPDATE,"$PATH_TO_NTPDATE",[path to ntpdate binary])
+else
+       echo "** Install NTP programs (http://www.ntp.org) if you want to monitor time synchronization"
+fi
+
+AC_PATH_PROG(PATH_TO_LMSTAT,lmstat)
+if test -x "$PATH_TO_LMSTAT"
+then
+       AC_DEFINE_UNQUOTED(PATH_TO_LMSTAT,"$PATH_TO_LMSTAT",[path to lmstat])
+else
+       echo "** Get lmstat from Globetrotter Software to monitor flexlm licenses"
+fi
+
+AC_PATH_PROG(PATH_TO_SMBCLIENT,smbclient)
+if test -x "$PATH_TO_SMBCLIENT"
+then
+       AC_DEFINE_UNQUOTED(PATH_TO_SMBCLIENT,"$PATH_TO_SMBCLIENT",[path to smbclient binary])
+else
+       echo "** Get smbclient from Samba.org to monitor SMB shares"
+fi
+
 
 AC_PATH_PROG(PATH_TO_WHO,who)
 if [who -q 2>/dev/null | egrep -i "^# users=[0-9]+$" >/dev/null]
 then
-       AC_DEFINE_UNQUOTED(WHO_COMMAND,"$PATH_TO_WHO -q")
+       AC_DEFINE_UNQUOTED(WHO_COMMAND,"$PATH_TO_WHO -q",[path and arguments for invoking 'who'])
 else
-       AC_DEFINE_UNQUOTED(WHO_COMMAND,"$PATH_TO_WHO")
+       AC_DEFINE_UNQUOTED(WHO_COMMAND,"$PATH_TO_WHO",[path and arguments for invoking 'who'])
 fi
 
 AC_PATH_PROG(PATH_TO_SNMPGET,snmpget)
-if test -f "$PATH_TO_SNMPGET"
+if test -x "$PATH_TO_SNMPGET"
 then
-       AC_DEFINE_UNQUOTED(PATH_TO_SNMPGET,"$PATH_TO_SNMPGET")
+       AC_DEFINE_UNQUOTED(PATH_TO_SNMPGET,"$PATH_TO_SNMPGET",[path to snmpget binary])
        EXTRAS="$EXTRAS check_hpjd check_snmp"
 else
-       echo "** Get snmpget from http://ucd-snmp.ucdavis.edu to make check_hpjd and check_snmp plugins"
+       echo "** Get snmpget from http://net-snmp.sourceforge.net to make check_hpjd and check_snmp plugins"
 fi
 
 AC_PATH_PROG(PATH_TO_SNMPGETNEXT,snmpgetnext)
-if test -f "$PATH_TO_SNMPGETNEXT"
+if test -x "$PATH_TO_SNMPGETNEXT"
+then
+       AC_DEFINE_UNQUOTED(PATH_TO_SNMPGETNEXT,"$PATH_TO_SNMPGETNEXT",[path to snmpgetnext binary])
+fi
+
+if ( $PERL -M"Net::SNMP 3.6" -e 'exit' 2>/dev/null  )
 then
-       AC_DEFINE_UNQUOTED(PATH_TO_SNMPGETNEXT,"$PATH_TO_SNMPGETNEXT")
+       echo "Found Net::SNMP perl module"
+else
+       echo "** Tried $PERL - install Net::SNMP perl module if you want to"
+       echo "        use the perl snmp plugins"
 fi
 
 AC_PATH_PROG(PATH_TO_QUAKESTAT,quakestat)
 AC_PATH_PROG(PATH_TO_QSTAT,qstat)
-if test -n "$PATH_TO_QUAKESTAT"
+if test -x "$PATH_TO_QUAKESTAT"
 then
-       AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$PATH_TO_QUAKESTAT")
+       AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$PATH_TO_QUAKESTAT",[path to qstat/quakestat])
        EXTRAS="$EXTRAS check_game"
-elif test -n "$PATH_TO_QSTAT"
+elif test -x "$PATH_TO_QSTAT"
 then
-       AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$PATH_TO_QSTAT")
+       AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$PATH_TO_QSTAT",[path to qstat/quakestat])
        EXTRAS="$EXTRAS check_game"
 else
        echo "** Get qstat from http://www.activesw.com/people/steve/qstat.html in order to make check_game plugin"
 fi
 
 AC_PATH_PROG(PATH_TO_FPING,fping)
-if test -n "$PATH_TO_FPING"
+if test -x "$PATH_TO_FPING"
 then
-       AC_DEFINE_UNQUOTED(PATH_TO_FPING,"$PATH_TO_FPING")
+       AC_DEFINE_UNQUOTED(PATH_TO_FPING,"$PATH_TO_FPING",[path to fping])
        EXTRAS="$EXTRAS check_fping"
 else
-       echo "** Get fping from http://www.stanford.edu/~schemers/docs/fping/fping.html in order to make check_fping plugin"
+       echo "** Get fping from http://www.fping.com in order to make check_fping plugin"
 fi
 
 AC_PATH_PROG(PATH_TO_SSH,ssh)
-if test -f "$PATH_TO_SSH"
+if test -x "$PATH_TO_SSH"
 then
-       AC_DEFINE_UNQUOTED(SSH_COMMAND,"$PATH_TO_SSH")
+       AC_DEFINE_UNQUOTED(SSH_COMMAND,"$PATH_TO_SSH",[path to ssh binary])
        EXTRAS="$EXTRAS check_by_ssh"
 else
        echo "** Get ssh in order to make check_by_ssh plugin"
 fi
 
+
+AC_PATH_PROG(PATH_TO_MAILQ,mailq)
+if test -x "$PATH_TO_MAILQ"
+then
+       AC_DEFINE_UNQUOTED(PATH_TO_MAILQ,"$PATH_TO_MAILQ",[path to mailq])
+else
+       echo "** Could not find mailq or eqivalent"
+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"
@@ -677,41 +876,48 @@ dnl if /bin/test -e "/proc/meminfo"
 if [cat /proc/meminfo > /dev/null 2>&1]
 then
        echo "found /proc/meminfo"
-       AC_DEFINE(HAVE_PROC_MEMINFO)
-       AC_DEFINE_UNQUOTED(PROC_MEMINFO,"/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 [swap -l 2>&1 | egrep -i "swapfile" >/dev/null]
 then
        echo "found swap command"
-       AC_DEFINE(HAVE_SWAP)
+       AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
        AC_PATH_PROG(PATH_TO_SWAP,swap)
-       AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$PATH_TO_SWAP -l")
+       AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$PATH_TO_SWAP -l",[Path to swap/swapinfo binary, with any args])
        if [swap -l 2>/dev/null | egrep -i "^lswap +path +pri +swaplo +blocks +free +maxswap" >/dev/null]
        then
-               AC_DEFINE_UNQUOTED(SWAP_FORMAT,[" %*d %*s %*d,%*d %*d %*d %d %d"])
+               AC_DEFINE_UNQUOTED(SWAP_FORMAT,[" %*d %*s %*d,%*d %*d %*d %d %d"],[Format string for parsing swap output])
                echo "      using IRIX format"
        elif [swap -l 2>/dev/null | egrep -i "^swapfile +dev +swaplo +blocks +free" >/dev/null]
        then
-               AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %*[[0-9,-]] %*d %d %d"])
+               AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %*[[0-9,-]] %*d %d %d"],[Format string for parsing swap output])
                echo "      using Solaris format"
        fi
        EXTRAS="$EXTRAS check_swap"
 elif [swapinfo -k 2>&1 | egrep -i "Device" >/dev/null]
 then
        echo "found swapinfo command"
-       AC_DEFINE(HAVE_SWAP)
+       AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
        AC_PATH_PROG(PATH_TO_SWAP,swapinfo)
-       AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$PATH_TO_SWAP -k")
+       AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$PATH_TO_SWAP -k",[Path to swap/swapinfo binary, with any args])
        if [swapinfo -k 2>/dev/null | egrep -i "^Device +1K-blocks +Used +Avail" >/dev/null]
        then
-               AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %d %*d %d"])
+               AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %d %*d %d"],[Format string for parsing swap output])
                echo "      using FreeBSD format"
        fi
        EXTRAS="$EXTRAS check_swap"
+elif [swapinfo -d 2>/dev/null | egrep -i "^TYPE +AVAIL +USED +FREE" >/dev/null]
+then
+       AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
+       AC_PATH_PROG(PATH_TO_SWAP,swapinfo)
+       AC_DEFINE_UNQUOTED(SWAP_COMMAND,"/bin/sh '$PATH_TO_SWAP -d | /bin/tail -l +2'",[Path to swap/swapinfo binary, with any args])
+       AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %d %*d %d"],[Format string for parsing swap output ])
+       echo "        using HP-UX format HP-UX"
 fi
 
 AC_PATH_PROG(PATH_TO_DIG,dig)
-AC_DEFINE_UNQUOTED(PATH_TO_DIG,"$PATH_TO_DIG")
+AC_DEFINE_UNQUOTED(PATH_TO_DIG,"$PATH_TO_DIG",[Path to dig command, if present])
 if test -n "$PATH_TO_DIG"; then
        EXTRAS="$EXTRAS check_dig"
 fi
@@ -722,7 +928,6 @@ elif test -f ../plugins/check_nt.c ; then
   EXTRAS="$EXTRAS check_nt"
 fi
 
-dnl AC_EGREP_HEADER (PATTERN, HEADER-FILE, ACTION-IF-FOUND [,          ACTION-IF-NOT-FOUND])
 AC_TRY_COMPILE([#ifdef __STDC__
 #include <stdio.h>
 #include <stdlib.h>
@@ -739,10 +944,6 @@ AC_TRY_COMPILE([#ifdef __STDC__
 AC_SUBST(EXTRAS)
 AC_SUBST(DEPLIBS)
 
-AC_SUBST(PACKAGE)
-AC_SUBST(VERSION)
-AC_DEFINE_UNQUOTED(PACKAGE,"${PACKAGE}")
-AC_DEFINE_UNQUOTED(VERSION,"${VERSION}")
-AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"${VERSION}")
+AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"${VERSION}",[package version])
 
 AC_OUTPUT(Makefile subst plugins/Makefile plugins-scripts/Makefile plugins-scripts/subst plugins-scripts/utils.pm plugins-scripts/utils.sh command.cfg test.pl,echo timestamp > plugins/stamp-h1;echo timestamp > plugins/stamp-h2;echo timestamp > plugins/stamp-h3;echo timestamp > plugins/stamp-h4;echo timestamp > plugins/stamp-h5;echo timestamp > plugins/stamp-h6;PATH=.:..:$PATH subst.sh command.cfg)