Code

added timeout alarm
[nagiosplug.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 include(`aclocal.m4')
3 include(`getloadavg.m4')
4 AC_REVISION ($Revision$)
5 AC_INIT(Helper.pm)
6 VER=1.3.0
7 REL=beta2
8 AC_SUBST(VER)
9 AC_SUBST(REL)
10 PACKAGE_VERSION="${VER}-${REL}"
11 AC_SUBST(PACKAGE_VERSION)
12 PACKAGE_RELEASE="${REL}"
13 AC_SUBST(PACKAGE_RELEASE)
14 AM_INIT_AUTOMAKE(nagios-plugins,${PACKAGE_VERSION})
15 AM_CONFIG_HEADER(plugins/config.h plugins/common.h plugins/version.h plugins/netutils.h plugins/utils.h plugins/popen.h)
17 AC_PREFIX_DEFAULT(/usr/local/nagios)
19 dnl Figure out how to invoke "install" and what install options to use.
21 AC_PROG_INSTALL
22 AC_SUBST(INSTALL)
24 AC_PROG_CC
25 AC_PROG_MAKE_SET
26 AC_PROG_AWK
28 AC_FUNC_GETLOADAVG(plugins)
29 ifdef([AC_FUNC_STRTOD],[AC_FUNC_STRTOD],[AM_FUNC_STRTOD])
30 dnl AM_WITH_REGEX
31 AC_PROG_RANLIB
33 AC_PATH_PROG(ACLOCAL,aclocal)
34 AC_PATH_PROG(AUTOMAKE,automake)
35 AC_PATH_PROG(AUTOCONF,autoconf)
36 AC_PATH_PROG(AUTOHEADER,autoheader)
38 PLUGIN_TEST=`echo $srcdir/plugins/t/*.t|sed -e 's,\.*/plugins/,,g'`
39 AC_SUBST(PLUGIN_TEST)dnl
41 SCRIPT_TEST=`echo $srcdir/plugins-scripts/t/*.t|sed -e 's,\.*/plugins-scripts/,,g'`
42 AC_SUBST(SCRIPT_TEST)dnl
44 WARRANTY="The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n"
45 AC_SUBST(WARRANTY)
47 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"
48 AC_SUBST(SUPPORT)
50 dnl CGIURL has changed for Nagios with 1.0 beta
51 AC_ARG_WITH(cgiurl,--with-cgiurl=<dir> sets URL for cgi programs,cgiurl=$withval,cgiurl=/nagios/cgi-bin)
52 CGIURL="$cgiurl"
53 AC_DEFINE_UNQUOTED(CGIURL,"$CGIURL",[URL of CGI programs])
55 AC_ARG_WITH(nagios_user,--with-nagios-user=<user> sets user name to run nagios,nagios_usr=$withval,nagios_usr=nagios)
56 AC_ARG_WITH(nagios_group,--with-nagios-group=<group> sets group name to run nagios,nagios_grp=$withval,nagios_grp=nagios)
57 AC_SUBST(nagios_usr)
58 AC_SUBST(nagios_grp)
59 INSTALL_OPTS="-o $nagios_usr -g $nagios_grp"
60 AC_SUBST(INSTALL_OPTS)
62 AC_ARG_WITH(trusted_path,--with-trusted-path=/bin:/sbin:/usr/bin:/usr/sbin sets trusted path for executables called by scripts,trusted_path=$withval,trusted_path=/bin:/sbin:/usr/bin:/usr/sbin)
63 AC_SUBST(trusted_path)
65 EXTRAS=
66 dnl PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/etc:/usr/local/bin:/usr/local/sbin:$PATH
68 LDFLAGS="$LDFLAGS -L."
70 dnl Checks for programs.
71 AC_PATH_PROG(PYTHON,python)
72 AC_PATH_PROG(PERL,perl)
73 AC_PATH_PROG(SH,sh)
75 AC_PATH_PROG(HOSTNAME,hostname)
76 AC_PATH_PROG(BASENAME,basename)
79 dnl
80 dnl Checks for libraries.
81 dnl
83 AC_CHECK_LIB(dce,main,SOCKETLIBS="$SOCKETLIBS -ldce")
84 AC_CHECK_LIB(nsl,main,SOCKETLIBS="$SOCKETLIBS -lnsl")
85 AC_CHECK_LIB(socket,socket,SOCKETLIBS="$SOCKETLIBS -lsocket")
86 AC_CHECK_LIB(resolv,main,SOCKETLIBS="$SOCKETLIBS -lresolv")
87 AC_SUBST(SOCKETLIBS)
89 dnl Check for PostgreSQL libraries
90 _SAVEDLIBS="$LIBS"
91 _SAVEDCPPFLAGS="$CPPFLAGS"
92 AC_ARG_WITH(pgsql,--with-pgsql=<dir> sets path to pgsql installation,[PGSQL=$withval])
93 AC_CHECK_LIB(crypt,main)
94 if test "$ac_cv_lib_crypt_main" = "yes"; then
95   if test -n "$PGSQL"; then
96     LIBS="$LIBS -L$PGSQL/lib"
97     CPPFLAGS="$CPPFLAGS -I$PGSQL/include"
98   fi
99   AC_CHECK_LIB(pq,PQsetdbLogin,,,-lcrypt)
100   if test "$ac_cv_lib_pq_PQsetdbLogin" = "yes"; then
101     AC_CHECK_HEADERS(pgsql/libpq-fe.h)
102     AC_CHECK_HEADERS(postgresql/libpq-fe.h)
103     AC_CHECK_HEADERS(libpq-fe.h)
104     if test  "$ac_cv_header_pgsql_libpq_fe_h" = "yes"; then
105       PGLIBS="-lpq -lcrypt"
106       PGINCLUDE="-I/usr/include/pgsql"
107     elif test  "$ac_cv_header_postgresql_libpq_fe_h" = "yes"; then
108       PGLIBS="-L$PGSQL/lib -lpq -lcrypt"
109       PGINCLUDE="-I/usr/include/postgresql"
110     elif test  "$ac_cv_header_libpq_fe_h" = "yes"; then
111       PGLIBS="-L$PGSQL/lib -lpq -lcrypt"
112       PGINCLUDE="-I$PGSQL/include"
113     fi
114     if test -z "$PGINCLUDE"; then
115       AC_MSG_WARN([Skipping PostgreSQL plugin (check_pgsql)])
116       AC_MSG_WARN([install PostgreSQL headers to compile this plugin (see REQUIREMENTS).])
117     else
118       AC_SUBST(PGLIBS)
119       AC_SUBST(PGINCLUDE)
120       EXTRAS="$EXTRAS check_pgsql"
121     fi
122   else
123     AC_MSG_WARN([Skipping PostgreSQL plugin (check_pgsql)])
124     AC_MSG_WARN([LIBS="$LIBS" CPPFLAGS="$CPPFLAGS"])
125     AC_MSG_WARN([install PostgreSQL libs to compile this plugin (see REQUIREMENTS).])
126   fi
127 else
128   AC_MSG_WARN([Skipping PostgreSQL plugin (check_pgsql)])
129   AC_MSG_WARN([install lib crypt and PostgreSQL libs to compile this plugin (see REQUIREMENTS).])
130 fi
131 LIBS="$_SAVEDLIBS"
132 CPPFLAGS="$_SAVEDCPPFLAGS"
134 dnl Check for radius libraries
135 _SAVEDLIBS="$LIBS"
136 AC_CHECK_LIB(radiusclient,rc_read_config)
137 if test "$ac_cv_lib_radiusclient_rc_read_config" = "yes"; then
138   EXTRAS="$EXTRAS check_radius"
139         RADIUSLIBS="-lradiusclient"
140   AC_SUBST(RADIUSLIBS)
141 else
142   AC_MSG_WARN([Skipping radius plugin])
143   AC_MSG_WARN([install radius libs to compile this plugin (see REQUIREMENTS).])
144 fi
145 LIBS="$_SAVEDLIBS"
147 dnl Check for LDAP libraries
148 _SAVEDLIBS="$LIBS"
149 AC_CHECK_LIB(ldap,main,,,-llber)
150 if test "$ac_cv_lib_ldap_main" = "yes"; then
151   LDAPLIBS="-lldap -llber"\
152   LDAPINCLUDE="-I/usr/include/ldap"
153   AC_SUBST(LDAPLIBS)
154   AC_SUBST(LDAPINCLUDE)
155   EXTRAS="$EXTRAS check_ldap"
156 else
157   AC_MSG_WARN([Skipping LDAP plugin])
158   AC_MSG_WARN([install LDAP libs to compile this plugin (see REQUIREMENTS).])
159 fi
160 LIBS="$_SAVEDLIBS"
163 dnl Check for mysql libraries
164 _SAVEDLIBS="$LIBS"
165 _SAVEDCPPFLAGS="$CPPFLAGS"
166 AC_ARG_WITH(mysql,--with-mysql=<dir> sets path to mysql installation (assumes lib/mysql and include subdirs),[MYSQL=$withval])
167 if test -n "$MYSQL"; then
168   MYSQLLIBDIR=$MYSQL/lib/mysql
169   CPPFLAGS="-I$MYSQL/include"
170   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L$MYSQLLIBDIR ",,-L$MYSQLLIBDIR -lz)
171   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
172 elif test -f /usr/lib/libmysqlclient.so; then
173   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz",,-lz)
174   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
175 elif test -f /usr/lib/libmysqlclient.a; then
176   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz",,-lz)
177   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
178 elif test -f /usr/lib/mysql/libmysqlclient.so; then
179   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql -lz)
180   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql)
181 elif test -f /usr/lib/mysql/libmysqlclient.a; then
182   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql -lz)
183   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql)
184 fi
185 if test "$ac_cv_lib_mysqlclient_mysql_init" = "yes" -o "$ac_cv_lib_mysqlclient_mysql_close" = "yes"; then
186   AC_CHECK_HEADERS(mysql/mysql.h mysql/errmsg.h, MYSQLINCLUDE="-I$MYSQL/include" )
187   if test "$ac_cv_header_mysql_mysql_h" = "yes" -a "$ac_cv_header_mysql_errmsg_h" = "yes"; then
188     EXTRAS="$EXTRAS check_mysql"
189     AC_SUBST(MYSQLINCLUDE)
190     AC_SUBST(MYSQLLIBS)
191     AC_SUBST(check_mysql_LDFLAGS)
192   else
193     AC_MSG_WARN([Skipping mysql plugin])
194     AC_MSG_WARN([install mysql client headers to compile this plugin (see REQUIREMENTS).])
195   fi
196 else
197   AC_MSG_WARN([Skipping mysql plugin])
198   AC_MSG_WARN([install mysql client libs to compile this plugin (see REQUIREMENTS).])
199 fi
200 CPPFLAGS="$_SAVEDCPPFLAGS"
201 LIBS="$_SAVEDLIBS"
203 dnl Check for OpenSSL location
204 AC_PATH_PROG(OPENSSL,openssl)
205 if test "$OPENSSL" = "/usr/bin/openssl"; then
206   OPENSSL=/usr
207 elif test "$OPENSSL" = "/usr/sbin/openssl"; then
208   OPENSSL=/usr
209 elif test "$OPENSSL" = "/opt/bin/openssl"; then
210   OPENSSL=/opt
211 elif test "$OPENSSL" = "/opt/openssl/bin/openssl"; then
212   OPENSSL=/opt/openssl
213 elif test "$OPENSSL" = "/usr/slocal/bin/openssl"; then
214   OPENSSL=/usr/slocal
215 elif test "$OPENSSL" = "/usr/local/bin/openssl"; then
216   OPENSSL=/usr/local
217 elif test "$OPENSSL" = "/usr/local/ssl/bin/openssl"; then
218   OPENSSL=/usr/local/ssl
219 fi
220 AC_ARG_WITH(openssl,--with-openssl=<dir> sets path to openssl installation,[OPENSSL=$withval])
222 AC_CHECK_HEADERS(krb5.h,FOUNDINCLUDE=yes,FOUNDINCLUDE=no)
223 if test "$FOUNDINCLUDE" = "no"; then
224   _SAVEDCPPFLAGS="$CPPFLAGS"
225   CPPFLAGS="$_SAVEDCPPFLAGS -I/usr/kerberos/include"
226   unset ac_cv_header_krb5_h
227   AC_CHECK_HEADERS(krb5.h,
228                    KRB5INCLUDE="-I/usr/kerberos/include"
229                    FOUNDINCLUDE=yes,
230                    FOUNDINCLUDE=no)
231 fi
232 AC_SUBST(KRBINCLUDE)
233 if test "$FOUNDINCLUDE" = "no"; then
234   CPPFLAGS="$_SAVEDCPPFLAGS"
235 fi
237 dnl Check for OpenSSL header files
238 unset FOUNDINCLUDE
239 _SAVEDCPPFLAGS="$CPPFLAGS"
240 CPPFLAGS="$CPPFLAGS -I$OPENSSL/include"
241 AC_CHECK_HEADERS(openssl/ssl.h openssl/x509.h openssl/rsa.h openssl/pem.h openssl/crypto.h openssl/err.h,
242                  SSLINCLUDE="-I$OPENSSL/include"
243                  FOUNDINCLUDE=yes,
244                  FOUNDINCLUDE=no)
245 if test "$FOUNDINCLUDE" = "no"; then
246   AC_CHECK_HEADERS(ssl.h x509.h rsa.h pem.h crypto.h err.h,
247                    SSLINCLUDE="-I$OPENSSL/include"
248                    FOUNDINCLUDE=yes,
249                    FOUNDINCLUDE=no)
250 fi
251 AC_SUBST(SSLINCLUDE)
252 if test "$FOUNDINCLUDE" = "no"; then
253   CPPFLAGS="$_SAVEDCPPFLAGS"
254 fi
256 dnl Check for crypto lib
257 _SAVEDLIBS="$LIBS"
258 AC_CHECK_LIB(crypto,CRYPTO_lock,,,-L$OPENSSL/lib)
259 if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then
260   dnl Check for SSL lib
261   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)
262 fi
263 LIBS="$_SAVEDLIBS"
265 dnl test headers and libs to decide whether check_http should use SSL
266 if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then
267   if test "$ac_cv_lib_ssl_main" = "yes"; then
268     if test "$FOUNDINCLUDE" = "yes"; then
269       AC_SUBST(SSLLIBS)
270       AC_DEFINE(HAVE_SSL,1,[Define if SSL libraries are found])
271     fi
272   fi
273 fi
274 CPPFLAGS="$_SAVEDCPPFLAGS"
276 dnl
277 dnl Checks for header files.
278 dnl
280 AC_HEADER_STDC
281 AC_HEADER_TIME
282 AC_HEADER_SYS_WAIT
283 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)
284 AC_CHECK_HEADERS(stdarg.h sys/unistd.h unistd.h ctype.h sys/wait.h stdlib.h)
286 dnl Checks for typedefs, structures, and compiler characteristics.
287 AC_C_CONST
288 AC_STRUCT_TM
289 AC_TYPE_PID_T
290 AC_TYPE_SIZE_T
291 AC_TYPE_SIGNAL
293 AC_CHECK_SIZEOF(int,cross)
294 AC_CHECK_SIZEOF(long,cross)
295 AC_CHECK_SIZEOF(short,cross)
297 AC_CACHE_CHECK([for long long],ac_cv_have_longlong,[
298 AC_TRY_RUN([#include <stdio.h>
299 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
300 ac_cv_have_longlong=yes,ac_cv_have_longlong=no,ac_cv_have_longlong=cross)])
301 if test x"$ac_cv_have_longlong" = x"yes"; then
302     AC_DEFINE(HAVE_LONGLONG,1,[Define if system has long long type])
303 fi
306 # Check if the compiler supports the LL prefix on long long integers.
307 # AIX needs this.
309 AC_CACHE_CHECK([for LL suffix on long long integers],ac_cv_compiler_supports_ll, [
310     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
311         ac_cv_compiler_supports_ll=yes,ac_cv_compiler_supports_ll=no)])
312 if test x"$ac_cv_compiler_supports_ll" = x"yes"; then
313    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Define if compiler support long long])
314 fi
316 AC_CACHE_CHECK([for __va_copy],ac_cv_HAVE_VA_COPY,[
317 AC_TRY_LINK([#include <stdarg.h>
318 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
319 ac_cv_HAVE_VA_COPY=yes,ac_cv_HAVE_VA_COPY=no)])
320 if test x"$ac_cv_HAVE_VA_COPY" = x"yes"; then
321     AC_DEFINE(HAVE_VA_COPY,1,[Define if system has va_copy])
322 fi
324 AC_CACHE_CHECK([for C99 vsnprintf],ac_cv_HAVE_C99_VSNPRINTF,[
325 AC_TRY_RUN([
326 #include <sys/types.h>
327 #include <stdarg.h>
328 void foo(const char *format, ...) { 
329        va_list ap;
330        int len;
331        char buf[5];
333        va_start(ap, format);
334        len = vsnprintf(buf, 0, format, ap);
335        va_end(ap);
336        if (len != 5) exit(1);
338        va_start(ap, format);
339        len = vsnprintf(0, 0, format, ap);
340        va_end(ap);
341        if (len != 5) exit(1);
343        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
345        exit(0);
347 main() { foo("hello"); }
348 ],
349 ac_cv_HAVE_C99_VSNPRINTF=yes,ac_cv_HAVE_C99_VSNPRINTF=no,ac_cv_HAVE_C99_VSNPRINTF=cross)])
350 if test x"$ac_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
351     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Define if system has C99 compatible vsnprintf])
352 fi
354 #AC_HAVE_DECL(asprintf, [#include <stdio.h>])
355 #AC_HAVE_DECL(vasprintf, [#include <stdio.h>])
356 #AC_HAVE_DECL(vsnprintf, [#include <stdio.h>])
357 #AC_HAVE_DECL(snprintf, [#include <stdio.h>])
359 AC_CHECK_FUNC(snprintf,
360               AC_DEFINE(HAVE_SNPRINTF,1,[Define if snprintf is present]),
361               LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a")
362 AC_CHECK_FUNC(vsnprintf,
363               AC_DEFINE(HAVE_VSNPRINTF,1,[Define if vsnprintf is present]),
364               LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a")
365 AC_CHECK_FUNC(vasprintf,
366               AC_DEFINE(HAVE_VASPRINTF,1,[Define if vasprintf is present]),
367               LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a")
368 AC_CHECK_FUNC(asprintf,
369               AC_DEFINE(HAVE_ASPRINTF,1,[Define if asprintf is present]),
370               LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a")
372 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
373   LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a"
374 fi
376 AC_TRY_COMPILE([#include <sys/time.h>],
377                [struct timeval *tv;
378                 struct timezone *tz;],
379                AC_DEFINE(HAVE_STRUCT_TIMEVAL,1,[Define if we have a timeval structure])
380                AC_TRY_COMPILE([#include <sys/time.h>],
381                               [struct timeval *tv;
382                                struct timezone *tz;
383                                gettimeofday(tv, tz);],
384                               AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define if gettimeofday is found]),
385                               AC_DEFINE(NEED_GETTIMEOFDAY,1,[Define if gettimeofday is needed])))
387 dnl Checks for library functions.
388 AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul)
390 AC_MSG_CHECKING(for type of socket size)
391 AC_TRY_COMPILE([#include <stdlib.h>
392                 #include <sys/types.h>
393                 #include <sys/socket.h>],
394                [int a = send(1, (const void *) buffer, (size_t *) 0, (int *) 0);],
395                [AC_DEFINE(SOCKET_SIZE_TYPE, size_t, [Define type of socket size])
396                 AC_MSG_RESULT(size_t)],
397                [AC_DEFINE(SOCKET_SIZE_TYPE, int, [Define type of socket size])
398                 AC_MSG_RESULT(int)])
400 if test -f "/proc/loadavg"
401 then
402   AC_DEFINE(HAVE_PROC_LOADAVG,1,[Define if /proc/loadavg or similar exists])
403   AC_DEFINE_UNQUOTED(PROC_LOADAVG,"/proc/loadavg",[Location of /proc/loadavg])
404 fi
406 AC_PATH_PROG(PATH_TO_PS,ps)
407 dnl  STAT UCOMM              VSZ   RSS USER       UID  PPID COMMAND
408 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]
409 then
410         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
411         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
412         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -weo 'stat user ppid args'",[Verbatim command to execute for ps in check_netsaint])
413         EXTRAS="$EXTRAS check_nagios"
414         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -weo 'stat uid ppid comm args'",[Verbatim command to execute for ps in check_procs])
415         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
416         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -weo 'vsz comm'",[Verbatim command to execute for ps in check_vsz])
417         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[Format string for scanning ps output in check_vsz])
418         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -weo 'rss comm'",[Verbatim command to execute for ps in check_rss])
419         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[Format string for scanning ps output in check_rss])
420   echo "      ps syntax... $PATH_TO_PS -weo 'stat comm vsz rss user ppid args'"
421 dnl FreeBSD
422 elif [ps waxco 'state command vsz rss uid user ppid' 2>/dev/null | egrep -i "^STAT +COMMAND +VSZ +RSS +UID +USER +PPID" >/dev/null]
423 then
424         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
425         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
426         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxo 'state uid ppid command'",[])
427         EXTRAS="$EXTRAS check_nagios"
428         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxco 'state uid ppid command command'",[])
429         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
430         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxco 'vsz command'",[])
431         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
432         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxco 'rss command'",[])
433         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
434         echo "      ps syntax... $PATH_TO_PS -Ao 'state command vsz rss'"
435 dnl BSD-like mode in RH 6.1
436 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]
437 then
438         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
439         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
440         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxno 'state user ppid comm'",[])
441         EXTRAS="$EXTRAS check_nagios"
442         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxno 'state uid ppid comm args'",[])
443         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
444         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxno 'vsz comm'",[])
445         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
446         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxno 'rss comm'",[])
447         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
448         echo "      ps syntax... $PATH_TO_PS -waxco 'state comm vsz rss'"
449 dnl SunOS 4.1.3:
450 dnl  F  UID  PID  PPID  CP  PRI  NI  SZ  RSS  WCHAN  STAT  TT  TIME  COMMAND
451 dnl
452 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]
453 then
454         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
455         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS laxnwww",[])
456         EXTRAS="$EXTRAS check_nagios"
457         AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog],[])
458         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -laxnwww",[])
459         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])
460         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS laxnwww",[])
461         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d",[])
462         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS laxnwww",[])
463         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %d",[])
464         echo "      ps syntax... $PATH_TO_PS laxnwww"
465 dnl Debian Linux / procps v1.2.9:
466 dnl  FLAGS   UID   PID  PPID PRI  NI   SIZE   RSS WCHAN       STA TTY TIME COMMAND
467 dnl    100     0     1     0   0   0    776    76  c0131c8c   S  ffff  0:11 init [2]
468 dnl
469 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]
470 then
471         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
472         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS laxnwww",[])
473         EXTRAS="$EXTRAS check_nagios"
474         AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog],[])
475         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS laxnwww",[])
476         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])
477         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS laxnwww",[])
478         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %d",[])
479         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS laxnwww",[])
480         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d",[])
481         echo "      ps syntax... $PATH_TO_PS laxnwww"
482 dnl OpenBSD (needs to come early because -exo appears to work, but does not give all procs)
483 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]
484 then
485         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
486         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
487         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -axo 'stat user ppid args'",[Verbatim command to execute for ps in check_netsaint])
488         EXTRAS="$EXTRAS check_nagios"
489         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -axo 'stat uid ppid comm args'",[Verbatim command to execute for ps in check_procs])
490         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
491         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -axo 'vsz comm'",[Verbatim command to execute for ps in check_vsz])
492         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[Format string for scanning ps output in check_vsz])
493         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -axo 'rss comm'",[Verbatim command to execute for ps in check_rss])
494         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[Format string for scanning ps output in check_rss])
495   echo "      ps syntax... $PATH_TO_PS -axo 'stat comm vsz rss user ppid args'"
496 dnl AIX 4.3.3 - needs verification. This works for Tru64 - needs %*[ +] in PS_FORMAT
497 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]
498 then
499         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
500         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
501         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -ao 'stat user ppid args'",[Verbatim command to execute for ps in check_netsaint])
502         EXTRAS="$EXTRAS check_nagios"
503         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -ao 'stat uid ppid comm args'")
504         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s%*[ +] %d %d %s %n",[Format string for scanning ps output in check_procs])
505         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -ao 'vsz comm'",[])
506         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
507         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -ao 'rss comm'",[])
508         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
509   echo "      ps syntax... $PATH_TO_PS -ao 'stat comm vsz rss user ppid args'"
510 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]
511 then
512         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
513         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
514         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -eo 's user ppid args'",[Verbatim command to execute for ps in check_netsaint])
515         EXTRAS="$EXTRAS check_nagios"
516         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -eo 's uid ppid comm args'")
517         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
518         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -eo 'vsz comm'",[])
519         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
520         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -eo 'rss comm'",[])
521         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
522         echo "      ps syntax... $PATH_TO_PS -eo 's  comm vsz rss user ppid args'"
523 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]
524 then
525         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
526         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
527         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 's user ppid args'",[Verbatim command to execute for ps in check_netsaint])
528         EXTRAS="$EXTRAS check_nagios"
529         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 's uid ppid comm args'",[])
530         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
531         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'",[])
532         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
533         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'",[])
534         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
535         echo "      ps syntax... $PATH_TO_PS -Ao 's comm vsz rss'"
536 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]
537 then
538         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
539         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
540         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 'status user ppid args'",[Verbatim command to execute for ps in check_netsaint])
541         EXTRAS="$EXTRAS check_nagios"
542         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 'status uid ppid comm args'",[])
543         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
544         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'",[])
545         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
546         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'",[])
547         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
548         echo "      ps syntax... $PATH_TO_PS -Ao 'status comm vsz rss'"
549 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]
550 then
551         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
552         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
553         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 'state user ppid args'",[Verbatim command to execute for ps in check_netsaint])
554         EXTRAS="$EXTRAS check_nagios"
555         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 'state uid ppid comm args'",[])
556         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
557         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'",[])
558         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
559         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'",[])
560         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
561         echo "      ps syntax... $PATH_TO_PS -Ao 'state comm vsz rss'"
562 dnl wonder who takes state instead of stat
563 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]
564 then
565         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
566         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
567         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -ao 'state user ppid args'",[])
568         EXTRAS="$EXTRAS check_nagios"
569         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -ao 'state uid ppid command args'",[])
570         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
571         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -ao 'vsz command'",[])
572         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
573         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -ao 'rss command'",[])
574         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
575         echo "      ps syntax... $PATH_TO_PS -ao 'state command vsz rss'"
576 dnl IRIX 53
577 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]
578 then
579         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
580         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog],[])
581         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el",[])
582         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])
583         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el",[])
584         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d",[])
585         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el",[])
586         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
587         echo "      ps syntax... $PATH_TO_PS -el"
588 dnl IRIX 63
589 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]
590 then
591         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
592         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog],[])
593         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el",[])
594         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])
595         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el",[])
596         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d",[])
597         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el",[])
598         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
599         echo "      ps syntax... $PATH_TO_PS -el"
600 dnl    
601 dnl AIX 4.1:
602 dnl     F S      UID   PID  PPID   C PRI NI ADDR  SZ  RSS   WCHAN    TTY  TIME CMD
603 dnl    303 A        0     0     0 120  16 -- 1c07  20   24              -  0:45 swapper
604 elif [ps -el 2>/dev/null | egrep -i "^ *F +S +UID +PID +PPID +C +PRI +NI +ADDR +SZ +WCHAN +TTY +TIME +[RGSCOMDNA]+" >/dev/null]
605 then
606         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
607         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog],[])
608         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el",[])
609         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])
610         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el",[])
611         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
612         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el",[])
613         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
614         echo "      ps syntax... $PATH_TO_PS -el"
615 dnl AIX?
616 elif [ps glaxen 2>/dev/null | egrep -i "^ *F +UID +PID +PPID +PRI +NI +VSZ +RSS +WCHAN +STAT +TTY +TIME +COMMAND" >/dev/null]
617 then
618         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
619         AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog],[])
620         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS glaxen",[])
621         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])
622         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS glaxen",[])
623         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %d",[])
624         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS glaxen",[])
625         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d",[])
626         echo "      ps syntax... $PATH_TO_PS glaxen"
627 dnl MacOSX / Darwin
628 dnl TODO: MacOSX has commands with spaces which will cause problems to PS_FORMAT
629 dnl STAT      VSZ    RSS   UID USER     PPID UCOMM            COMMAND
630 dnl Ss       1308    272     0 root        0 init             /sbin/init
631 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]
632 then
633         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
634         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
635         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxo 'state uid ppid command'",[])
636         EXTRAS="$EXTRAS check_nagios"
637         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxo 'state uid ppid ucomm command'",[])
638         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
639         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxco 'vsz command'",[])
640         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
641         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxco 'rss command'",[])
642         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
643         echo "      ps syntax... $PATH_TO_PS waxo 'state vsz rss command'"
644 else
645         echo "** Unable to find usable ps syntax"
646 fi
648 AC_ARG_WITH(df_command,--with-df-command=<syntax> sets syntax for df,DF_COMMAND=$withval)
649 if test -n "$DF_COMMAND"
650 then
651         AC_DEFINE_UNQUOTED(DF_COMMAND,"$DF_COMMAND",[path and args for df command])
652 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]
653 then
654         AC_PATH_PROG(PATH_TO_DF,df)
655         AC_MSG_RESULT("      df syntax... $PATH_TO_DF -Pk")
656         AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF -Pk",[path and args for df command])
657 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]
658 then
659         AC_PATH_PROG(PATH_TO_DF,df)
660         AC_MSG_RESULT("      df syntax... $PATH_TO_DF -k")
661         AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF -k",[path and args for df command])
662 elif [df 2>/dev/null | egrep -i "^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*" >/dev/null]
663 then
664         AC_PATH_PROG(PATH_TO_DF,df)
665         AC_MSG_RESULT("      df syntax... $PATH_TO_DF")
666         AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF",[path and args for df command])
667 elif [bdf 2>/dev/null | egrep -i "^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*" >/dev/null]
668 then
669         AC_PATH_PROG(PATH_TO_DF,bdf)
670         AC_MSG_RESULT("      df syntax... $PATH_TO_DF")
671         AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF",[path and args for df command])
672 else
673         AC_MSG_WARN("unable to find usable df syntax")
674 fi
676 AC_PATH_PROG(PATH_TO_PING,ping)
678 AC_ARG_WITH(ping_command,--with-ping-command=<syntax> sets syntax for ping,PING_COMMAND=$withval)
679 if test -n "$PING_COMMAND"
680 then
681         echo "      ping syntax... (command-line) $PING_COMMAND"
682         if test -n "$PING_PACKETS_FIRST"
683         then
684                 AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
685         fi
686 elif [ping -n -U -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
687 then
688         PING_COMMAND="$PATH_TO_PING -n -U -c %d %s"
689         AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
690         echo "      ping syntax... $PATH_TO_PING -n -U -c <count> <host>"
691 elif [ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
692 then
693         PING_COMMAND="$PATH_TO_PING -n -c %d %s"
694         AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
695         echo "      ping syntax... $PATH_TO_PING -n -c <count> <host>"
696 elif [ping -n 127.0.0.1 -c 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
697 then
698         PING_COMMAND="$PATH_TO_PING -n %s -c %d"
699         echo "      ping syntax... $PATH_TO_PING -n <host> -c <count>"
700 elif [ping 127.0.0.1 -n 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
701 then
702         PING_COMMAND="$PATH_TO_PING %s -n %d"
703         echo "      ping syntax... $PATH_TO_PING <host> -n <count>"
704 elif [ping -n -s 127.0.0.1 56 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
705 then
706         PING_COMMAND="$PATH_TO_PING -n -s %s 56 %d"
707         echo "      ping syntax... $PATH_TO_PING -n -s <host> 56 <count>"
708 elif [ping -n -h 127.0.0.1 -s 56 -c 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
709 then
710         PING_COMMAND="$PATH_TO_PING -n -h %s -s 56 -c %d"
711         echo "      ping syntax... $PATH_TO_PING -n -h <host> -s 56 -c <count>"
712 elif [ping -n -s 56 -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
713 then
714         PING_COMMAND="$PATH_TO_PING -n -s 56 -c %d %s"
715         AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
716         echo "      ping syntax... $PATH_TO_PING -n -s 56 -c <count> <host>"
717 elif [ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
718 then
719         PING_COMMAND="$PATH_TO_PING -n -c %d %s"
720         AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
721         echo "      ping syntax... $PATH_TO_PING -n -c <count> <host>"
722 else
723         AC_MSG_WARN("unable to find usable ping syntax")
724 fi
725 AC_DEFINE_UNQUOTED(PING_COMMAND,"$PING_COMMAND",[path and args for ping command])
727 AC_PATH_PROG(PATH_TO_NSLOOKUP,nslookup)
728 if test -n "$ac_cv_path_PATH_TO_NSLOOKUP"
729 then
730         AC_MSG_CHECKING("nslookup syntax")
731         if [nslookup -sil 127.0.0.1 2>&1 | grep "*** Invalid option: sil" >/dev/null]
732         then
733                 AC_MSG_RESULT("$PATH_TO_NSLOOKUP")
734                 AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$PATH_TO_NSLOOKUP",[path and args for nslookup])
735         else
736                 AC_MSG_RESULT("$PATH_TO_NSLOOKUP -sil")
737                 AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$PATH_TO_NSLOOKUP -sil",[path and args for nslookup])
738         fi
739         EXTRAS="$EXTRAS check_dns"
740 else
741         AC_MSG_WARN("nslookup command not found")
742 fi
744 AC_PATH_PROG(PATH_TO_HOST,host)
745 if test -n "$ac_cv_path_PATH_TO_HOST"
746 then
747         AC_MSG_CHECKING("host syntax")
748         if [host 127.0.0.1 2>&1 | grep -v "ommand not found" > /dev/null]
749         then
750                 AC_MSG_RESULT("$PATH_TO_HOST")
751                 AC_DEFINE_UNQUOTED(HOST_COMMAND,"$PATH_TO_HOST",[path to host binary])
752         fi
753         EXTRAS="$EXTRAS check_dns"
754 else    
755         AC_MSG_WARN("host command not found")
756 fi
758 AC_PATH_PROG(PATH_TO_UPTIME,uptime)
759 AC_DEFINE_UNQUOTED(PATH_TO_UPTIME,"$PATH_TO_UPTIME",[path to uptime binary])
761 AC_PATH_PROG(PATH_TO_RPCINFO,rpcinfo)
762 AC_DEFINE_UNQUOTED(PATH_TO_RPCINFO,"$PATH_TO_RPCINFO",[path to rpcinfo binary])
764 AC_PATH_PROG(PATH_TO_NTPDATE,ntpdate)
765 AC_PATH_PROGS(PATH_TO_NTPDC,ntpdc xntpdc)
766 AC_PATH_PROGS(PATH_TO_NTPQ,ntpq)
767 if (test -x "$PATH_TO_NTPDATE" || test -x "$PATH_TO_NTPQ")
768 then
769         AC_DEFINE_UNQUOTED(PATH_TO_NTPQ,"$PATH_TO_NTPQ",[path to ntpq binary])
770         AC_DEFINE_UNQUOTED(PATH_TO_NTPDATE,"$PATH_TO_NTPDATE",[path to ntpdate binary])
771 else
772         echo "** Install NTP programs (http://www.ntp.org) if you want to monitor time synchronization"
773 fi
775 AC_PATH_PROG(PATH_TO_LMSTAT,lmstat)
776 if test -x "$PATH_TO_LMSTAT"
777 then
778         AC_DEFINE_UNQUOTED(PATH_TO_LMSTAT,"$PATH_TO_LMSTAT",[path to lmstat])
779 else
780         echo "** Get lmstat from Globetrotter Software to monitor flexlm licenses"
781 fi
783 AC_PATH_PROG(PATH_TO_SMBCLIENT,smbclient)
784 if test -x "$PATH_TO_SMBCLIENT"
785 then
786         AC_DEFINE_UNQUOTED(PATH_TO_SMBCLIENT,"$PATH_TO_SMBCLIENT",[path to smbclient binary])
787 else
788         echo "** Get smbclient from Samba.org to monitor SMB shares"
789 fi
792 AC_PATH_PROG(PATH_TO_WHO,who)
793 if [who -q 2>/dev/null | egrep -i "^# users=[0-9]+$" >/dev/null]
794 then
795         AC_DEFINE_UNQUOTED(WHO_COMMAND,"$PATH_TO_WHO -q",[path and arguments for invoking 'who'])
796 else
797         AC_DEFINE_UNQUOTED(WHO_COMMAND,"$PATH_TO_WHO",[path and arguments for invoking 'who'])
798 fi
800 AC_PATH_PROG(PATH_TO_SNMPGET,snmpget)
801 if test -x "$PATH_TO_SNMPGET"
802 then
803         AC_DEFINE_UNQUOTED(PATH_TO_SNMPGET,"$PATH_TO_SNMPGET",[path to snmpget binary])
804         EXTRAS="$EXTRAS check_hpjd check_snmp"
805 else
806         echo "** Get snmpget from http://net-snmp.sourceforge.net to make check_hpjd and check_snmp plugins"
807 fi
809 AC_PATH_PROG(PATH_TO_SNMPGETNEXT,snmpgetnext)
810 if test -x "$PATH_TO_SNMPGETNEXT"
811 then
812         AC_DEFINE_UNQUOTED(PATH_TO_SNMPGETNEXT,"$PATH_TO_SNMPGETNEXT",[path to snmpgetnext binary])
813 fi
815 if ( $PERL -M"Net::SNMP 3.6" -e 'exit' 2>/dev/null  )
816 then
817         echo "Found Net::SNMP perl module"
818 else
819         echo "** Tried $PERL - install Net::SNMP perl module if you want to"
820         echo "        use the perl snmp plugins"
821 fi
823 AC_PATH_PROG(PATH_TO_QUAKESTAT,quakestat)
824 AC_PATH_PROG(PATH_TO_QSTAT,qstat)
825 if test -x "$PATH_TO_QUAKESTAT"
826 then
827         AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$PATH_TO_QUAKESTAT",[path to qstat/quakestat])
828         EXTRAS="$EXTRAS check_game"
829 elif test -x "$PATH_TO_QSTAT"
830 then
831         AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$PATH_TO_QSTAT",[path to qstat/quakestat])
832         EXTRAS="$EXTRAS check_game"
833 else
834         echo "** Get qstat from http://www.activesw.com/people/steve/qstat.html in order to make check_game plugin"
835 fi
837 AC_PATH_PROG(PATH_TO_FPING,fping)
838 if test -x "$PATH_TO_FPING"
839 then
840         AC_DEFINE_UNQUOTED(PATH_TO_FPING,"$PATH_TO_FPING",[path to fping])
841         EXTRAS="$EXTRAS check_fping"
842 else
843         echo "** Get fping from http://www.fping.com in order to make check_fping plugin"
844 fi
846 AC_PATH_PROG(PATH_TO_SSH,ssh)
847 if test -x "$PATH_TO_SSH"
848 then
849         AC_DEFINE_UNQUOTED(SSH_COMMAND,"$PATH_TO_SSH",[path to ssh binary])
850         EXTRAS="$EXTRAS check_by_ssh"
851 else
852         echo "** Get ssh in order to make check_by_ssh plugin"
853 fi
856 AC_PATH_PROG(PATH_TO_MAILQ,mailq)
857 if test -x "$PATH_TO_MAILQ"
858 then
859         AC_DEFINE_UNQUOTED(PATH_TO_MAILQ,"$PATH_TO_MAILQ",[path to mailq])
860 else
861         echo "** Could not find mailq or eqivalent"
862 fi
864 dnl dunno why this does not work below - use hack (kbd)
865 dnl fine on linux, broken on solaris
866 dnl if /bin/test -e "/proc/meminfo"
868 if [cat /proc/meminfo > /dev/null 2>&1]
869 then
870         echo "found /proc/meminfo"
871         AC_DEFINE(HAVE_PROC_MEMINFO,1,[Define if we have /proc/meminfo])
872         AC_DEFINE_UNQUOTED(PROC_MEMINFO,"/proc/meminfo",[path to /proc/meminfo if name changes])
873         EXTRAS="$EXTRAS check_swap"
874 elif [swap -l 2>&1 | egrep -i "swapfile" >/dev/null]
875 then
876         echo "found swap command"
877         AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
878         AC_PATH_PROG(PATH_TO_SWAP,swap)
879         AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$PATH_TO_SWAP -l",[Path to swap/swapinfo binary, with any args])
880         if [swap -l 2>/dev/null | egrep -i "^lswap +path +pri +swaplo +blocks +free +maxswap" >/dev/null]
881         then
882                 AC_DEFINE_UNQUOTED(SWAP_FORMAT,[" %*d %*s %*d,%*d %*d %*d %d %d"],[Format string for parsing swap output])
883                 echo "      using IRIX format"
884         elif [swap -l 2>/dev/null | egrep -i "^swapfile +dev +swaplo +blocks +free" >/dev/null]
885         then
886                 AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %*[[0-9,-]] %*d %d %d"],[Format string for parsing swap output])
887                 echo "      using Solaris format"
888         fi
889         EXTRAS="$EXTRAS check_swap"
890 elif [swapinfo -k 2>&1 | egrep -i "Device" >/dev/null]
891 then
892         echo "found swapinfo command"
893         AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
894         AC_PATH_PROG(PATH_TO_SWAP,swapinfo)
895         AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$PATH_TO_SWAP -k",[Path to swap/swapinfo binary, with any args])
896         if [swapinfo -k 2>/dev/null | egrep -i "^Device +1K-blocks +Used +Avail" >/dev/null]
897         then
898                 AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %d %*d %d"],[Format string for parsing swap output])
899                 echo "      using FreeBSD format"
900         fi
901         EXTRAS="$EXTRAS check_swap"
902 elif [swapinfo -d 2>/dev/null | egrep -i "^TYPE +AVAIL +USED +FREE" >/dev/null]
903 then
904         AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
905         AC_PATH_PROG(PATH_TO_SWAP,swapinfo)
906         AC_DEFINE_UNQUOTED(SWAP_COMMAND,"/bin/sh '$PATH_TO_SWAP -d | /bin/tail -l +2'",[Path to swap/swapinfo binary, with any args])
907         AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %d %*d %d"],[Format string for parsing swap output ])
908         echo "        using HP-UX format HP-UX"
909 fi
911 AC_PATH_PROG(PATH_TO_DIG,dig)
912 AC_DEFINE_UNQUOTED(PATH_TO_DIG,"$PATH_TO_DIG",[Path to dig command, if present])
913 if test -n "$PATH_TO_DIG"; then
914         EXTRAS="$EXTRAS check_dig"
915 fi
917 if test -f plugins/check_nt.c ; then
918   EXTRAS="$EXTRAS check_nt"
919 elif test -f ../plugins/check_nt.c ; then
920   EXTRAS="$EXTRAS check_nt"
921 fi
923 AC_TRY_COMPILE([#ifdef __STDC__
924 #include <stdio.h>
925 #include <stdlib.h>
926 #include <stdarg.h>
927 #else
928 #include <sys/types.h>
929 #include <stdio.h>
930 #include <varargs.h>
931 #endif],
932 [va_list args;],
933 [AC_MSG_RESULT(yes)],
934 [NEED_VA_LIST=-DNEED_VA_LIST AC_SUBST(NEED_VA_LIST) AC_MSG_RESULT(no)])
936 AC_SUBST(EXTRAS)
937 AC_SUBST(DEPLIBS)
939 AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"${VERSION}",[package version])
941 AC_OUTPUT(Makefile subst lib/Makefile 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)