Code

first version of bob ingraham's pst3 to allow checking for longer
[nagiosplug.git] / configure.in
index 5453fe1dee87a92377eeb20c145f0d431886b945..176a8e2267bb543e203462035b45ec4e65f686f1 100644 (file)
@@ -1,7 +1,7 @@
 dnl Process this file with autoconf to produce a configure script.
 AC_REVISION ($Revision$)
 AC_PREREQ(2.58)
-AC_INIT(nagios-plugins,1.4.1)
+AC_INIT(nagios-plugins,1.4.2)
 AC_CONFIG_SRCDIR(NPTest.pm)
 AM_INIT_AUTOMAKE
 AM_CONFIG_HEADER(config.h)
@@ -598,9 +598,18 @@ 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
+if [ "$ac_cv_uname_s" = "SunOS" ]; then
+       ac_cv_ps_command="$prefix/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])
+
 dnl Some gnu/linux systems (debian for one) don't like -axwo and need axwo.
 dnl so test for this first...
-if ps axwo 'stat comm vsz rss user uid pid ppid args' 2>/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,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
@@ -698,21 +707,23 @@ then
        ac_cv_ps_cols=9
        AC_MSG_RESULT([$ac_cv_ps_command])
 
-dnl Tru64 - needs %*[ +] in PS_FORMAT
-elif ps -ao '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[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,&procpid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
-       ac_cv_ps_command="$PATH_TO_PS -ao '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_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])
 
-XXX
 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,&procpid,&procpid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
+       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
@@ -722,7 +733,7 @@ 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,&procpid,&procpid,&procvsz,&procpcpu,procprog,&pos]"
+       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"
        ac_cv_ps_cols=8
@@ -732,7 +743,7 @@ 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,&procpid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
+       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
@@ -743,7 +754,7 @@ then
 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,&procpid,&procpid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
+       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
@@ -752,7 +763,7 @@ then
 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,&procpid,&procpid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
+       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
@@ -762,7 +773,7 @@ dnl wonder who takes state instead of stat
 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,&procpid,&procpid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
+       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
@@ -772,7 +783,7 @@ 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,&procpid,&procpid,&procvsz,&procrss,&pos,procprog]"
+       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
@@ -782,7 +793,7 @@ 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,&procpid,&procpid,&pos,procprog]"
+       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
@@ -794,7 +805,7 @@ 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,&procpid,&procpid,&pos,procprog]"
+       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
@@ -804,7 +815,7 @@ 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,&procpid,&procpid,&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 %d %d %*s %*s %d %d %*s %s %*s %*s %n%s"
        ac_cv_ps_cols=8
@@ -819,7 +830,7 @@ 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 pid ppid pcpu ucomm command'"
-       ac_cv_ps_varlist="[procstat,&procvsz,&procrss,&procuid,&procpid,&procpid,&procpcpu,procprog,&pos]"
+       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])
@@ -828,12 +839,11 @@ 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,&procpid,&procpid,&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 %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])
-XXX
 
 else
        AC_MSG_WARN([unable to find usable ps syntax - check_procs and check_nagios will not be compiled])
@@ -1520,6 +1530,22 @@ AC_SUBST(DEPLIBS)
 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
@@ -1529,6 +1555,7 @@ AC_OUTPUT(
   lib/Makefile 
   m4/Makefile 
   plugins/Makefile 
+  plugins-root/Makefile
   plugins-scripts/Makefile 
   plugins-scripts/subst 
   plugins-scripts/utils.pm