1 dnl Process this file with autoconf to produce a configure script.
2 AC_REVISION ($Revision$)
3 AC_INIT(Helper.pm)
4 VER=1.3.0
5 REL=1
6 AC_SUBST(VER)
7 AC_SUBST(REL)
8 PACKAGE_VERSION="${VER}"
9 AC_SUBST(PACKAGE_VERSION)
10 PACKAGE_RELEASE="${REL}"
11 AC_SUBST(PACKAGE_RELEASE)
12 AM_INIT_AUTOMAKE(nagios-plugins,${PACKAGE_VERSION})
13 AM_CONFIG_HEADER(plugins/config.h plugins/common.h plugins/version.h plugins/netutils.h plugins/utils.h plugins/popen.h)
14 AC_CANONICAL_HOST
16 AC_PREFIX_DEFAULT(/usr/local/nagios)
18 dnl Figure out how to invoke "install" and what install options to use.
20 AC_PROG_INSTALL
21 AC_SUBST(INSTALL)
23 AC_PROG_CC
24 AC_PROG_CPP
25 AC_PROG_GCC_TRADITIONAL
26 AC_PROG_RANLIB
27 AC_AIX
28 AC_MINIX
30 AC_PROG_MAKE_SET
31 AC_PROG_AWK
33 # Check for SunOS statfs brokenness wrt partitions 2GB and larger.
34 # If <sys/vfs.h> exists and struct statfs has a member named f_spare,
35 # enable the work-around code in fsusage.c.
36 AC_MSG_CHECKING([for statfs that truncates block counts])
37 AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
38 [AC_TRY_COMPILE([
39 #if !defined(sun) && !defined(__sun)
40 choke -- this is a workaround for a Sun-specific problem
41 #endif
42 #include <sys/types.h>
43 #include <sys/vfs.h>],
44 [struct statfs t; long c = *(t.f_spare);],
45 fu_cv_sys_truncating_statfs=yes,
46 fu_cv_sys_truncating_statfs=no,
47 )])
48 if test $fu_cv_sys_truncating_statfs = yes; then
49 AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS, 1,
50 [ Define if the block counts reported by statfs may be truncated to 2GB
51 and the correct values may be stored in the f_spare array.
52 (SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem.
53 SunOS 4.1.1 seems not to be affected.)])
54 fi
56 saved_srcdir=$srcdir
57 srcdir=$srcdir/lib
58 test -f $srcdir/getloadavg.c \
59 || AC_MSG_ERROR([getloadavg.c is not in $srcdir])
60 AC_FUNC_GETLOADAVG
61 srcdir=$saved_srcdir
63 ifdef([AC_FUNC_STRTOD],[AC_FUNC_STRTOD],[AM_FUNC_STRTOD])
64 dnl AM_WITH_REGEX
65 AC_PROG_RANLIB
67 AC_PATH_PROG(ACLOCAL,aclocal)
68 AC_PATH_PROG(AUTOMAKE,automake)
69 AC_PATH_PROG(AUTOCONF,autoconf)
70 AC_PATH_PROG(AUTOHEADER,autoheader)
72 PLUGIN_TEST=`echo $srcdir/plugins/t/*.t|sed -e 's,\.*/plugins/,,g'`
73 AC_SUBST(PLUGIN_TEST)dnl
75 SCRIPT_TEST=`echo $srcdir/plugins-scripts/t/*.t|sed -e 's,\.*/plugins-scripts/,,g'`
76 AC_SUBST(SCRIPT_TEST)dnl
78 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"
79 AC_SUBST(WARRANTY)
81 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"
82 AC_SUBST(SUPPORT)
84 dnl CGIURL has changed for Nagios with 1.0 beta
85 AC_ARG_WITH(cgiurl,
86 ACX_HELP_STRING([--with-cgiurl=DIR],
87 [sets URL for cgi programs]),
88 cgiurl=$withval,
89 cgiurl=/nagios/cgi-bin)
90 CGIURL="$cgiurl"
91 AC_DEFINE_UNQUOTED(CGIURL,"$CGIURL",[URL of CGI programs])
93 AC_ARG_WITH(nagios_user,
94 ACX_HELP_STRING([--with-nagios-user=USER],
95 [set user name to run nagios]),
96 nagios_usr=$withval,
97 nagios_usr=nagios)
98 AC_ARG_WITH(nagios_group,
99 ACX_HELP_STRING([--with-nagios-group=GROUP],
100 [set group name to run nagios]),
101 nagios_grp=$withval,
102 nagios_grp=nagios)
103 AC_SUBST(nagios_usr)
104 AC_SUBST(nagios_grp)
105 INSTALL_OPTS="-o $nagios_usr -g $nagios_grp"
106 AC_SUBST(INSTALL_OPTS)
108 AC_ARG_WITH(trusted_path,
109 ACX_HELP_STRING([--with-trusted-path=PATH],
110 [sets trusted path for executables called by scripts (default=/bin:/sbin:/usr/bin:/usr/sbin)]),
111 trusted_path=$withval,
112 trusted_path=/bin:/sbin:/usr/bin:/usr/sbin)
113 AC_SUBST(trusted_path)
115 EXTRAS=
116 dnl PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/etc:/usr/local/bin:/usr/local/sbin:$PATH
118 LDFLAGS="$LDFLAGS -L."
120 ac_cv_uname_m=`uname -m`
121 ac_cv_uname_s=`uname -s`
122 ac_cv_uname_r=`uname -r`
123 ac_cv_uname_v=`uname -v`
125 dnl Checks for programs.
126 AC_PATH_PROG(PYTHON,python)
127 AC_PATH_PROG(PERL,perl)
128 AC_PATH_PROG(SH,sh)
130 AC_PATH_PROG(HOSTNAME,hostname)
131 AC_PATH_PROG(BASENAME,basename)
133 dnl
134 dnl Check for miscellaneous stuff
135 dnl
137 case $host_vender-$host_os in
138 sun*)
139 AC_DEFINE(__EXTENSIONS__,1,[Sun's netdb.h needs this for getaddrinfo])
140 ;;
141 osf*)
142 AC_DEFINE(_OSF_SOURCE,1,[OSF needs this for getaddrinfo])
143 ;;
144 esac
146 dnl
147 dnl Checks for libraries.
148 dnl
150 AC_CHECK_LIB(dce,main,SOCKETLIBS="$SOCKETLIBS -ldce")
151 AC_CHECK_LIB(nsl,main,SOCKETLIBS="$SOCKETLIBS -lnsl")
152 AC_CHECK_LIB(socket,socket,SOCKETLIBS="$SOCKETLIBS -lsocket")
153 AC_CHECK_LIB(resolv,main,SOCKETLIBS="$SOCKETLIBS -lresolv")
154 AC_SUBST(SOCKETLIBS)
156 dnl Check for PostgreSQL libraries
157 _SAVEDLIBS="$LIBS"
158 _SAVEDCPPFLAGS="$CPPFLAGS"
159 AC_ARG_WITH(pgsql,
160 ACX_HELP_STRING([--with-pgsql=DIR],
161 [sets path to pgsql installation]),
162 PGSQL=$withval,)
163 AC_CHECK_LIB(crypt,main)
164 if test "$ac_cv_lib_crypt_main" = "yes"; then
165 if test -n "$PGSQL"; then
166 LDFLAGS="$LDFLAGS -L$PGSQL/lib"
167 CPPFLAGS="$CPPFLAGS -I$PGSQL/include"
168 fi
169 AC_CHECK_LIB(pq,PQsetdbLogin,,,-lcrypt)
170 if test "$ac_cv_lib_pq_PQsetdbLogin" = "yes"; then
171 AC_CHECK_HEADERS(pgsql/libpq-fe.h)
172 AC_CHECK_HEADERS(postgresql/libpq-fe.h)
173 AC_CHECK_HEADERS(libpq-fe.h)
174 if [[ -n "$PGSQL" -a "$ac_cv_header_libpq_fe_h" = "yes" ]]; then
175 PGLIBS="-L$PGSQL/lib -lpq -lcrypt"
176 PGINCLUDE="-I$PGSQL/include"
177 elif test "$ac_cv_header_pgsql_libpq_fe_h" = "yes"; then
178 PGLIBS="-lpq -lcrypt"
179 PGINCLUDE="-I/usr/include/pgsql"
180 elif test "$ac_cv_header_postgresql_libpq_fe_h" = "yes"; then
181 PGLIBS="-L$PGSQL/lib -lpq -lcrypt"
182 PGINCLUDE="-I/usr/include/postgresql"
183 elif test "$ac_cv_header_libpq_fe_h" = "yes"; then
184 PGLIBS="-L$PGSQL/lib -lpq -lcrypt"
185 PGINCLUDE="-I$PGSQL/include"
186 fi
187 if test -z "$PGINCLUDE"; then
188 AC_MSG_WARN([Skipping PostgreSQL plugin (check_pgsql)])
189 AC_MSG_WARN([install PostgreSQL headers to compile this plugin (see REQUIREMENTS).])
190 else
191 AC_SUBST(PGLIBS)
192 AC_SUBST(PGINCLUDE)
193 EXTRAS="$EXTRAS check_pgsql"
194 fi
195 else
196 AC_MSG_WARN([Skipping PostgreSQL plugin (check_pgsql)])
197 AC_MSG_WARN([LIBS="$LIBS" CPPFLAGS="$CPPFLAGS"])
198 AC_MSG_WARN([install PostgreSQL libs to compile this plugin (see REQUIREMENTS).])
199 fi
200 else
201 AC_MSG_WARN([Skipping PostgreSQL plugin (check_pgsql)])
202 AC_MSG_WARN([install lib crypt and PostgreSQL libs to compile this plugin (see REQUIREMENTS).])
203 fi
204 LIBS="$_SAVEDLIBS"
205 CPPFLAGS="$_SAVEDCPPFLAGS"
207 dnl Check for radius libraries
208 _SAVEDLIBS="$LIBS"
209 AC_CHECK_LIB(radiusclient,rc_read_config)
210 if test "$ac_cv_lib_radiusclient_rc_read_config" = "yes"; then
211 EXTRAS="$EXTRAS check_radius"
212 RADIUSLIBS="-lradiusclient"
213 AC_SUBST(RADIUSLIBS)
214 else
215 AC_MSG_WARN([Skipping radius plugin])
216 AC_MSG_WARN([install radius libs to compile this plugin (see REQUIREMENTS).])
217 fi
218 LIBS="$_SAVEDLIBS"
220 dnl Check for LDAP libraries
221 _SAVEDLIBS="$LIBS"
222 AC_CHECK_LIB(ldap,main,,,-llber)
223 if test "$ac_cv_lib_ldap_main" = "yes"; then
224 LDAPLIBS="-lldap -llber"\
225 LDAPINCLUDE="-I/usr/include/ldap"
226 AC_SUBST(LDAPLIBS)
227 AC_SUBST(LDAPINCLUDE)
228 EXTRAS="$EXTRAS check_ldap"
229 else
230 AC_MSG_WARN([Skipping LDAP plugin])
231 AC_MSG_WARN([install LDAP libs to compile this plugin (see REQUIREMENTS).])
232 fi
233 LIBS="$_SAVEDLIBS"
236 dnl Check for mysql libraries
237 _SAVEDLIBS="$LIBS"
238 _SAVEDCPPFLAGS="$CPPFLAGS"
239 AC_ARG_WITH(mysql,
240 ACX_HELP_STRING([--with-mysql=DIR],
241 [sets path to mysql installation (assumes lib/mysql and include subdirs]),
242 MYSQL=$withval,)
243 if test -n "$MYSQL"; then
244 MYSQLLIBDIR=$MYSQL/lib/mysql
245 CPPFLAGS="-I$MYSQL/include"
246 AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L$MYSQLLIBDIR ",,-L$MYSQLLIBDIR -lz)
247 AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
248 elif test -f /usr/lib/libmysqlclient.so; then
249 AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz",,-lz)
250 AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
251 elif test -f /usr/lib/libmysqlclient.a; then
252 AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz",,-lz)
253 AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
254 elif test -f /usr/lib/mysql/libmysqlclient.so; then
255 AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql -lz)
256 AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql)
257 elif test -f /usr/lib/mysql/libmysqlclient.a; then
258 AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql -lz)
259 AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql)
260 fi
261 if test "$ac_cv_lib_mysqlclient_mysql_init" = "yes" -o "$ac_cv_lib_mysqlclient_mysql_close" = "yes"; then
262 AC_CHECK_HEADERS(mysql/mysql.h mysql/errmsg.h, MYSQLINCLUDE="-I$MYSQL/include" )
263 if test "$ac_cv_header_mysql_mysql_h" = "yes" -a "$ac_cv_header_mysql_errmsg_h" = "yes"; then
264 EXTRAS="$EXTRAS check_mysql"
265 AC_SUBST(MYSQLINCLUDE)
266 AC_SUBST(MYSQLLIBS)
267 AC_SUBST(check_mysql_LDFLAGS)
268 else
269 AC_MSG_WARN([Skipping mysql plugin])
270 AC_MSG_WARN([install mysql client headers to compile this plugin (see REQUIREMENTS).])
271 fi
272 else
273 AC_MSG_WARN([Skipping mysql plugin])
274 AC_MSG_WARN([install mysql client libs to compile this plugin (see REQUIREMENTS).])
275 fi
276 CPPFLAGS="$_SAVEDCPPFLAGS"
277 LIBS="$_SAVEDLIBS"
279 dnl Check for OpenSSL location
280 AC_PATH_PROG(OPENSSL,openssl)
281 if test "$OPENSSL" = "/usr/bin/openssl"; then
282 OPENSSL=/usr
283 elif test "$OPENSSL" = "/usr/sbin/openssl"; then
284 OPENSSL=/usr
285 elif test "$OPENSSL" = "/opt/bin/openssl"; then
286 OPENSSL=/opt
287 elif test "$OPENSSL" = "/opt/openssl/bin/openssl"; then
288 OPENSSL=/opt/openssl
289 elif test "$OPENSSL" = "/usr/slocal/bin/openssl"; then
290 OPENSSL=/usr/slocal
291 elif test "$OPENSSL" = "/usr/local/bin/openssl"; then
292 OPENSSL=/usr/local
293 elif test "$OPENSSL" = "/usr/local/ssl/bin/openssl"; then
294 OPENSSL=/usr/local/ssl
295 fi
296 AC_ARG_WITH(openssl,
297 ACX_HELP_STRING([--with-openssl=DIR],
298 [sets path to openssl installation]),
299 OPENSSL=$withval,)
301 dnl #########################################################################
302 dnl Check if Posix getaddrinfo() is available. It is also possible to use
303 dnl the version from the lwres library distributed with BIND.
304 dnl #########################################################################
305 AC_ARG_ENABLE([emulate-getaddrinfo],
306 ACX_HELP_STRING([--enable-emulate-getaddrinfo],
307 [enable getaddrinfo emulation (default=no)]),
308 ,
309 enable_emulate_getaddrinfo=no)
310 AC_ARG_WITH(lwres,
311 ACX_HELP_STRING([--with-lwres=DIR],
312 [use lwres library for getaddrinfo (default=no)]),
313 ,
314 with_lwres=no)
316 dnl ## enable force to test getaddrinfo.c
317 if test x$enable_emulate_getaddrinfo = xforce ; then
318 enable_emulate_getaddrinfo=yes
319 have_getaddrinfo=no
320 else
322 have_getaddrinfo=no
323 if test x$with_lwres != xno ; then
324 if test "$with_lwres" != yes ; then
325 CPPFLAGS="-I${with_lwres}/include $CPPFLAGS"
326 LDFLAGS="-L${with_lwres}/lib $LDFLAGS"
327 fi
328 AC_CHECK_HEADERS(lwres/netdb.h, ,
329 [AC_MSG_ERROR([cannot find <lwres/netdb.h>])])
330 AC_CHECK_LIB(lwres, lwres_getaddrinfo, ,
331 [AC_MSG_ERROR([cannot find the lwres library])],
332 -lnsl -lpthread)
333 have_getaddrinfo=yes
334 fi
336 if test x$have_getaddrinfo != xyes ; then
337 AC_SEARCH_LIBS(getaddrinfo, socket resolv bind nsl c_r cr, have_getaddrinfo=yes)
338 fi
340 dnl # Special nonsense for systems that actually have getaddrinfo but
341 dnl # redefine the name to something else, e.g. OSF
342 if test x$have_getaddrinfo != xyes ; then
343 AC_MSG_CHECKING(if getaddrinfo is redefined in netdb.h)
344 AC_TRY_LINK([
345 # include <netdb.h>
346 ], [
347 struct addrinfo hints, *res;
348 int err;
350 err = getaddrinfo ("host", "service", &hints, &res);
351 ], [
352 have_getaddrinfo=yes
353 AC_MSG_RESULT(yes)
354 ], [AC_MSG_RESULT(no)])
355 fi
357 fi
359 if test x$have_getaddrinfo != xno ; then
360 if test x$enable_emulate_getaddrinfo != xno ; then
361 AC_MSG_ERROR([getaddrinfo found but emulate-getaddrinfo was enabled])
362 fi
363 AC_DEFINE(HAVE_GETADDRINFO, 1,
364 [Does system provide RFC 2553/Posix getaddrinfo?])
365 else
366 if test x$enable_emulate_getaddrinfo != xyes ; then
367 AC_MSG_ERROR([getaddrinfo not found: try --with-lwres or --enable-emulate-getaddrinfo])
368 fi
369 LIBOBJS="$LIBOBJS getaddrinfo.o"
370 fi
372 if test x"$enable_emulate_getaddrinfo" != xno ; then
373 have_resolver=no
375 dnl Try for getipnodebyname
376 AC_SEARCH_LIBS(getipnodebyname, resolv bind nsl c_r cr, have_resolver=yes)
377 if test x"$have_resolver" != xno ; then
378 AC_DEFINE(HAVE_GETIPNODEBYNAME, 1,
379 [Set when getipnodebyname is available])
380 fi
382 dnl Try for gethostbyname_r
383 if test x"$have_resolver" = xno ; then
384 AC_SEARCH_LIBS(gethostbyname_r, resolv bind nsl c_r cr,
385 [have_resolver=yes
386 ACX_WHICH_GETHOSTBYNAME_R])
387 fi
389 dnl Try for gethostbyname
390 if test x"$have_resolver" = xno ; then
391 if test x"$enable_pthreads" != xno ; then
392 AC_MSG_WARN([using threads but cannot find gethostbyname_r or getipnodebyname])
393 fi
394 AC_SEARCH_LIBS(gethostbyname, resolv bind nsl, ,
395 [AC_MSG_ERROR([cannot find gethostbyname])])
396 fi
397 LIBOBJS="$LIBOBJS gethostbyname.o"
399 AC_CACHE_CHECK([for IPv6 support], acx_cv_sys_use_ipv6, [
400 AC_TRY_COMPILE([
401 # include <netinet/in.h>
402 ], [
403 struct sockaddr_in6 sin6;
404 void *p;
406 sin6.sin6_family = AF_INET6;
407 sin6.sin6_port = 587;
408 p = &sin6.sin6_addr;
409 ], [acx_cv_sys_use_ipv6=yes], [acx_cv_sys_use_ipv6=no])
410 ])
411 if test x"$acx_cv_sys_use_ipv6" != xno ; then
412 AC_DEFINE(USE_IPV6,1,[Enable IPv6 support])
413 fi
414 fi
416 AC_CHECK_HEADERS(krb5.h,FOUNDINCLUDE=yes,FOUNDINCLUDE=no)
417 if test "$FOUNDINCLUDE" = "no"; then
418 _SAVEDCPPFLAGS="$CPPFLAGS"
419 CPPFLAGS="$_SAVEDCPPFLAGS -I/usr/kerberos/include"
420 unset ac_cv_header_krb5_h
421 AC_CHECK_HEADERS(krb5.h,
422 KRB5INCLUDE="-I/usr/kerberos/include"
423 FOUNDINCLUDE=yes,
424 FOUNDINCLUDE=no)
425 fi
426 AC_SUBST(KRBINCLUDE)
427 if test "$FOUNDINCLUDE" = "no"; then
428 CPPFLAGS="$_SAVEDCPPFLAGS"
429 fi
431 dnl Check for OpenSSL header files
432 unset FOUNDINCLUDE
433 _SAVEDCPPFLAGS="$CPPFLAGS"
434 CPPFLAGS="$CPPFLAGS -I$OPENSSL/include"
435 AC_CHECK_HEADERS(openssl/ssl.h openssl/x509.h openssl/rsa.h openssl/pem.h openssl/crypto.h openssl/err.h,
436 SSLINCLUDE="-I$OPENSSL/include"
437 FOUNDINCLUDE=yes,
438 FOUNDINCLUDE=no)
439 if test "$FOUNDINCLUDE" = "no"; then
440 AC_CHECK_HEADERS(ssl.h x509.h rsa.h pem.h crypto.h err.h,
441 SSLINCLUDE="-I$OPENSSL/include"
442 FOUNDINCLUDE=yes,
443 FOUNDINCLUDE=no)
444 fi
445 AC_SUBST(SSLINCLUDE)
446 if test "$FOUNDINCLUDE" = "no"; then
447 CPPFLAGS="$_SAVEDCPPFLAGS"
448 fi
450 dnl Check for crypto lib
451 _SAVEDLIBS="$LIBS"
452 AC_CHECK_LIB(crypto,CRYPTO_lock,,,-L$OPENSSL/lib)
453 if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then
454 dnl Check for SSL lib
455 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)
456 fi
457 LIBS="$_SAVEDLIBS"
459 dnl test headers and libs to decide whether check_http should use SSL
460 if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then
461 if test "$ac_cv_lib_ssl_main" = "yes"; then
462 if test "$FOUNDINCLUDE" = "yes"; then
463 AC_SUBST(SSLLIBS)
464 AC_DEFINE(HAVE_SSL,1,[Define if SSL libraries are found])
465 fi
466 fi
467 fi
468 CPPFLAGS="$_SAVEDCPPFLAGS"
470 dnl
471 dnl Checks for header files.
472 dnl
474 AC_HEADER_STDC
475 AC_HEADER_TIME
476 AC_HEADER_SYS_WAIT
477 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)
478 AC_CHECK_HEADERS(stdarg.h sys/unistd.h unistd.h ctype.h stdlib.h)
479 AC_CHECK_HEADERS(sys/vfs.h,
480 [AC_TRY_COMPILE([#include <sys/vfs.h>],
481 [struct statfs *buf],
482 [AC_DEFINE(HAVE_STRUCT_STATFS,1,[Define if statfs struct can be found])])])
483 AC_CHECK_HEADERS(sys/param.h sys/mount.h,
484 [AC_TRY_COMPILE([#include <sys/param.h>
485 #include <sys/mount.h>],
486 [struct statfs *buf],
487 [AC_DEFINE(HAVE_STRUCT_STATFS,1,[Define if statfs struct can be found])])])
489 dnl Checks for typedefs, structures, and compiler characteristics.
490 AC_C_CONST
491 AC_STRUCT_TM
492 AC_TYPE_PID_T
493 AC_TYPE_SIZE_T
494 AC_TYPE_SIGNAL
496 AC_CHECK_SIZEOF(int,cross)
497 AC_CHECK_SIZEOF(long,cross)
498 AC_CHECK_SIZEOF(short,cross)
500 AC_CACHE_CHECK([for long long],ac_cv_have_longlong,[
501 AC_TRY_RUN([#include <stdio.h>
502 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
503 ac_cv_have_longlong=yes,ac_cv_have_longlong=no,ac_cv_have_longlong=cross)])
504 if test x"$ac_cv_have_longlong" = x"yes"; then
505 AC_DEFINE(HAVE_LONGLONG,1,[Define if system has long long type])
506 fi
508 #
509 # Check if the compiler supports the LL prefix on long long integers.
510 # AIX needs this.
512 AC_CACHE_CHECK([for LL suffix on long long integers],ac_cv_compiler_supports_ll, [
513 AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
514 ac_cv_compiler_supports_ll=yes,ac_cv_compiler_supports_ll=no)])
515 if test x"$ac_cv_compiler_supports_ll" = x"yes"; then
516 AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Define if compiler support long long])
517 fi
519 AC_CACHE_CHECK([for __va_copy],ac_cv_HAVE_VA_COPY,[
520 AC_TRY_LINK([#include <stdarg.h>
521 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
522 ac_cv_HAVE_VA_COPY=yes,ac_cv_HAVE_VA_COPY=no)])
523 if test x"$ac_cv_HAVE_VA_COPY" = x"yes"; then
524 AC_DEFINE(HAVE_VA_COPY,1,[Define if system has va_copy])
525 fi
527 AC_CHECK_FUNCS(vsnprintf snprintf asprintf vasprintf)
528 AC_CACHE_CHECK([for C99 vsnprintf],ac_cv_HAVE_C99_VSNPRINTF,[
529 AC_TRY_RUN([
530 #include <sys/types.h>
531 #include <stdarg.h>
532 void foo(const char *format, ...) {
533 va_list ap;
534 int len;
535 char buf[5];
537 va_start(ap, format);
538 len = vsnprintf(buf, 0, format, ap);
539 va_end(ap);
540 if (len != 5) exit(1);
542 va_start(ap, format);
543 len = vsnprintf(0, 0, format, ap);
544 va_end(ap);
545 if (len != 5) exit(1);
547 if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
549 exit(0);
550 }
551 main() { foo("hello"); }
552 ],
553 ac_cv_HAVE_C99_VSNPRINTF=yes,ac_cv_HAVE_C99_VSNPRINTF=no,ac_cv_HAVE_C99_VSNPRINTF=cross)])
554 if test x"$ac_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
555 AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Define if system has C99 compatible vsnprintf])
556 fi
558 AC_TRY_COMPILE([#include <sys/time.h>],
559 [struct timeval *tv;
560 struct timezone *tz;],
561 AC_DEFINE(HAVE_STRUCT_TIMEVAL,1,[Define if we have a timeval structure])
562 AC_TRY_COMPILE([#include <sys/time.h>],
563 [struct timeval *tv;
564 struct timezone *tz;
565 gettimeofday(tv, tz);],
566 AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define if gettimeofday is found]),
567 AC_DEFINE(NEED_GETTIMEOFDAY,1,[Define if gettimeofday is needed])))
569 dnl Checks for library functions.
570 AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul)
572 AC_MSG_CHECKING(return type of socket size)
573 AC_TRY_COMPILE([#include <stdlib.h>
574 #include <sys/types.h>
575 #include <sys/socket.h>],
576 [int a = send(1, (const void *) buffer, (size_t *) 0, (int *) 0);],
577 ac_cv_socket_size_type=["size_t"]
578 AC_MSG_RESULT(size_t),
579 ac_cv_socket_size_type=["int"]
580 AC_MSG_RESULT(int))
582 AC_DEFINE_UNQUOTED(SOCKET_SIZE_TYPE, $ac_cv_socket_size_type ,
583 [Define type of socket size])
585 if test -f "/proc/loadavg"
586 then
587 AC_DEFINE(HAVE_PROC_LOADAVG,1,[Define if /proc/loadavg or similar exists])
588 AC_DEFINE_UNQUOTED(PROC_LOADAVG,"/proc/loadavg",[Location of /proc/loadavg])
589 fi
591 dnl #### Process table test
593 AC_PATH_PROG(PATH_TO_PS,ps)
594 ac_cv_use_ps_vars=no
596 AC_MSG_CHECKING(for ps syntax)
597 dnl STAT UCOMM VSZ RSS USER UID PPID COMMAND
598 if ps -weo 'stat comm vsz rss user uid ppid args' 2>/dev/null | \
599 egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ \
600 +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
601 then
602 ac_cv_use_ps_vars=yes
603 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
604 ac_cv_ps_raw_command="$PATH_TO_PS -weo 'stat user ppid args'"
605 ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid ppid comm args'"
606 ac_cv_ps_format="%s %d %d %s %n"
607 ac_cv_vsz_command="$PATH_TO_PS -weo 'vsz comm'"
608 ac_cv_vsz_format="%d %s"
609 ac_cv_rss_command="$PATH_TO_PS -weo 'rss comm'"
610 ac_cv_rss_format="%d %s"
611 EXTRAS="$EXTRAS check_nagios"
612 AC_MSG_RESULT([$ac_cv_ps_command])
614 dnl FreeBSD
615 elif ps waxco 'state command vsz rss uid user ppid' 2>/dev/null | \
616 egrep -i ["^STAT +COMMAND +VSZ +RSS +UID +USER +PPID"] >/dev/null
617 then
618 ac_cv_use_ps_vars=yes
619 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
620 ac_cv_ps_raw_command="$PATH_TO_PS waxo 'state uid ppid command'"
621 ac_cv_ps_command="$PATH_TO_PS waxco 'state uid ppid command command'"
622 ac_cv_ps_format="%s %d %d %s %n"
623 ac_cv_vsz_command="$PATH_TO_PS waxco 'vsz command'"
624 ac_cv_vsz_format="%d %s"
625 ac_cv_rss_command="$PATH_TO_PS waxco 'rss command'"
626 ac_cv_rss_format="%d %s"
627 EXTRAS="$EXTRAS check_nagios"
628 AC_MSG_RESULT([$ac_cv_ps_command])
630 dnl BSD-like mode in RH 6.1
631 elif ps waxno 'state comm vsz rss uid user ppid args' 2>/dev/null | \
632 egrep -i ["^S +COMMAND +VSZ +RSS +UID +USER +PPID +[RGSCOMDNA]+"] \
633 >/dev/null
634 then
635 ac_cv_use_ps_vars=yes
636 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
637 ac_cv_ps_raw_command="$PATH_TO_PS waxno 'state user ppid comm'"
638 ac_cv_ps_command="$PATH_TO_PS waxno 'state uid ppid comm args'"
639 ac_cv_ps_format="%s %d %d %s %n"
640 ac_cv_vsz_command="$PATH_TO_PS waxno 'vsz comm'"
641 ac_cv_vsz_format="%d %s"
642 ac_cv_rss_command="$PATH_TO_PS waxno 'rss comm'"
643 ac_cv_rss_format="%d %s"
644 EXTRAS="$EXTRAS check_nagios"
645 AC_MSG_RESULT([$ac_cv_ps_command])
647 dnl SunOS 4.1.3:
648 dnl F UID PID PPID CP PRI NI SZ RSS WCHAN STAT TT TIME COMMAND
649 elif ps -laxnwww 2>/dev/null | egrep -i ["^ *F(LAGS)? +UID +PID +PPID \
650 +CP +PRI +NI +(SZ)|(VSZ)|(SIZE) +RSS +WCHAN +STAT? +TTY? +TIME \
651 +COMMAND"] >/dev/null
652 then
653 ac_cv_use_ps_vars=yes
654 ac_cv_ps_raw_command="$PATH_TO_PS laxnwww"
655 ac_cv_ps_varlist="[&procuid,&procppid,procstat,&pos,procprog]"
656 ac_cv_ps_command="$PATH_TO_PS -laxnwww"
657 ac_cv_ps_format="%*s %d %*s %d %*s %*s %*s %*s %*s %*s %s %*s %*s %n%s"
658 ac_cv_vsz_command="$PATH_TO_PS laxnwww"
659 ac_cv_vsz_format="%*s %*s %*s %*s %*s %*s %*s %d"
660 ac_cv_rss_command="$PATH_TO_PS laxnwww"
661 ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %*s %d"
662 EXTRAS="$EXTRAS check_nagios"
663 AC_MSG_RESULT([$ac_cv_ps_command])
665 dnl Debian Linux / procps v1.2.9:
666 dnl FLAGS UID PID PPID PRI NI SIZE RSS WCHAN STA TTY TIME COMMAND
667 dnl 100 0 1 0 0 0 776 76 c0131c8c S ffff 0:11 init [2]
668 dnl
669 elif ps laxnwww 2>/dev/null | egrep -i ["^ *F(LAGS)? +UID +PID +PPID +PRI \
670 +NI +(VSZ)|(SIZE) +RSS +WCHAN +STAT? TTY +TIME +COMMAND"] >/dev/null
671 then
672 ac_cv_use_ps_vars=yes
673 ac_cv_ps_raw_command="$PATH_TO_PS laxnwww"
674 ac_cv_ps_varlist="[&procuid,&procppid,procstat,&pos,procprog]"
675 ac_cv_ps_command="$PATH_TO_PS laxnwww"
676 ac_cv_ps_format="%*s %d %*s %d %*s %*s %*s %*s %*s %s %*s %*s %n%s"
677 ac_cv_vsz_command="$PATH_TO_PS laxnwww"
678 ac_cv_vsz_format="%*s %*s %*s %*s %*s %*s %d"
679 ac_cv_rss_command="$PATH_TO_PS laxnwww"
680 ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %d"
681 EXTRAS="$EXTRAS check_nagios"
682 AC_MSG_RESULT([$ac_cv_ps_command])
684 dnl OpenBSD (needs to come early because -exo appears to work, but does not give all procs)
685 elif ps -axo 'stat comm vsz rss user uid ppid args' 2>/dev/null | \
686 egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ \
687 +U[ID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
688 then
689 ac_cv_use_ps_vars=yes
690 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
691 ac_cv_ps_raw_command="$PATH_TO_PS -axo 'stat user ppid args'"
692 ac_cv_ps_command="$PATH_TO_PS -axo 'stat uid ppid comm args'"
693 ac_cv_ps_format="%s %d %d %s %n"
694 ac_cv_vsz_command="$PATH_TO_PS -axo 'vsz comm'"
695 ac_cv_vsz_format="%d %s"
696 ac_cv_rss_command="$PATH_TO_PS -axo 'rss comm'"
697 ac_cv_rss_format="%d %s"
698 EXTRAS="$EXTRAS check_nagios"
699 AC_MSG_RESULT([$ac_cv_ps_command])
701 dnl AIX 4.3.3 - needs verification. This works for Tru64 - needs %*[ +] in PS_FORMAT
702 elif ps -ao 'stat comm vsz rss user uid ppid args' 2>/dev/null | \
703 egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ \
704 +U[ID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
705 then
706 ac_cv_use_ps_vars=yes
707 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
708 ac_cv_ps_raw_command="$PATH_TO_PS -ao 'stat user ppid args'"
709 ac_cv_ps_command="$PATH_TO_PS -ao 'stat uid ppid comm args'"
710 ac_cv_ps_format="[["%s%*[ +] %d %d %s %n"]]"
711 ac_cv_vsz_command="$PATH_TO_PS -ao 'vsz comm'"
712 ac_cv_vsz_format="%d %s"
713 ac_cv_rss_command="$PATH_TO_PS -ao 'rss comm'"
714 ac_cv_rss_format="%d %s"
715 EXTRAS="$EXTRAS check_nagios"
716 AC_MSG_RESULT([$ac_cv_ps_command])
718 elif ps -eo 's comm vsz rss user uid ppid args' 2>/dev/null | \
719 egrep -i ["^S[TAUES]* +C[OMDNA]+ +[VSIZE]+ +U[SER]+ +U[ID]+ \
720 +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
721 then
722 ac_cv_use_ps_vars=yes
723 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
724 ac_cv_ps_raw_command="$PATH_TO_PS -eo 's user ppid args'"
725 ac_cv_ps_command="$PATH_TO_PS -eo 's uid ppid comm args'"
726 ac_cv_ps_format="%s %d %d %s %n"
727 ac_cv_vsz_command="$PATH_TO_PS -eo 'vsz comm'"
728 ac_cv_vsz_format="%d %s"
729 ac_cv_rss_command="$PATH_TO_PS -eo 'rss comm'"
730 ac_cv_rss_format="%d %s"
731 EXTRAS="$EXTRAS check_nagios"
732 AC_MSG_RESULT([$ac_cv_ps_command])
734 elif ps -Ao 's comm vsz rss uid user ppid args' 2>/dev/null | \
735 egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER \
736 +PPID +[RGSCOMDNA]+"] >/dev/null
737 then
738 ac_cv_use_ps_vars=yes
739 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
740 ac_cv_ps_raw_command="$PATH_TO_PS -Ao 's user ppid args'"
741 ac_cv_ps_command="$PATH_TO_PS -Ao 's uid ppid comm args'"
742 ac_cv_ps_format="%s %d %d %s %n"
743 ac_cv_vsz_command="$PATH_TO_PS -Ao 'vsz comm'"
744 ac_cv_vsz_format="%d %s"
745 ac_cv_rss_command="$PATH_TO_PS -Ao 'rss comm'"
746 ac_cv_rss_format="%d %s"
747 EXTRAS="$EXTRAS check_nagios"
748 AC_MSG_RESULT([$ac_cv_ps_command])
750 elif ps -Ao 'status comm vsz rss uid user ppid args' 2>/dev/null | \
751 egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER \
752 +PPID +[RGSCOMDNA]+"] >/dev/null
753 then
754 ac_cv_use_ps_vars=yes
755 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
756 ac_cv_ps_raw_command="$PATH_TO_PS -Ao 'status user ppid args'"
757 ac_cv_ps_command="$PATH_TO_PS -Ao 'status uid ppid comm args'"
758 ac_cv_ps_format="%s %d %d %s %n"
759 ac_cv_vsz_command="$PATH_TO_PS -Ao 'vsz comm'"
760 ac_cv_vsz_format="%d %s"
761 ac_cv_rss_command="$PATH_TO_PS -Ao 'rss comm'"
762 ac_cv_rss_format="%d %s"
763 EXTRAS="$EXTRAS check_nagios"
764 AC_MSG_RESULT([$ac_cv_ps_command])
766 elif ps -Ao 'state comm vsz rss uid user ppid args' 2>/dev/null | \
767 egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER \
768 +PPID +[RGSCOMDNA]+"] >/dev/null
769 then
770 ac_cv_use_ps_vars=yes
771 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
772 ac_cv_ps_raw_command="$PATH_TO_PS -Ao 'state user ppid args'"
773 ac_cv_ps_command="$PATH_TO_PS -Ao 'state uid ppid comm args'"
774 ac_cv_ps_format="%s %d %d %s %n"
775 ac_cv_vsz_command="$PATH_TO_PS -Ao 'vsz comm'"
776 ac_cv_vsz_format="%d %s"
777 ac_cv_rss_command="$PATH_TO_PS -Ao 'rss comm'"
778 ac_cv_rss_format="%d %s"
779 EXTRAS="$EXTRAS check_nagios"
780 AC_MSG_RESULT([$ac_cv_ps_command])
782 dnl wonder who takes state instead of stat
783 elif ps -ao 'state command vsz rss user ppid args' 2>/dev/null | \
784 egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER \
785 +PPID +[RGSCOMDNA]+"] >/dev/null
786 then
787 ac_cv_use_ps_vars=yes
788 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
789 ac_cv_ps_raw_command="$PATH_TO_PS -ao 'state user ppid args'"
790 ac_cv_ps_command="$PATH_TO_PS -ao 'state uid ppid command args'"
791 ac_cv_ps_format="%s %d %d %s %n"
792 ac_cv_vsz_command="$PATH_TO_PS -ao 'vsz command'"
793 ac_cv_vsz_format="%d %s"
794 ac_cv_rss_command="$PATH_TO_PS -ao 'rss command'"
795 ac_cv_rss_format="%d %s"
796 EXTRAS="$EXTRAS check_nagios"
797 AC_MSG_RESULT([$ac_cv_ps_command])
799 dnl IRIX 53
800 elif ps -el 2>/dev/null | egrep -i ["^ *F +S +UID +PID +PPID +C +PRI \
801 +NI +P +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null
802 then
803 ac_cv_use_ps_vars=yes
804 ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]"
805 ac_cv_ps_command="$PATH_TO_PS -el"
806 ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s"
807 ac_cv_vsz_command="$PATH_TO_PS -el"
808 ac_cv_vsz_format="%*s %*s %*s %*s %d"
809 ac_cv_rss_command="$PATH_TO_PS -el"
810 ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d"
811 AC_MSG_RESULT([$ac_cv_ps_command])
813 dnl IRIX 63
814 elif ps -el 2>/dev/null | egrep -i ["^ *F +S +UID +PID +PPID +C +PRI \
815 +NI +P +ADDR +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null
816 then
817 ac_cv_use_ps_vars=yes
818 ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]"
819 ac_cv_ps_command="$PATH_TO_PS -el"
820 ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s"
821 ac_cv_vsz_command="$PATH_TO_PS -el"
822 ac_cv_vsz_format="%*s %*s %*s %*s %d"
823 ac_cv_rss_command="$PATH_TO_PS -el"
824 ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d"
825 AC_MSG_RESULT([$ac_cv_ps_command])
827 dnl AIX 4.1:
828 dnl F S UID PID PPID C PRI NI ADDR SZ RSS WCHAN TTY TIME CMD
829 dnl 303 A 0 0 0 120 16 -- 1c07 20 24 - 0:45 swapper
830 elif ps -el 2>/dev/null | egrep -i ["^ *F +S +UID +PID +PPID +C +PRI \
831 +NI +ADDR +SZ +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null
832 then
833 ac_cv_use_ps_vars=yes
834 ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]"
835 ac_cv_ps_command="$PATH_TO_PS -el"
836 ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %n%s"
837 ac_cv_vsz_command="$PATH_TO_PS -el"
838 ac_cv_vsz_format="%*s %*s %*s %*s %*s %*s %*s %*s %*s %d"
839 ac_cv_rss_command="$PATH_TO_PS -el"
840 ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %*s %*s %d"
841 AC_MSG_RESULT([$ac_cv_ps_command])
843 dnl AIX?
844 elif ps glaxen 2>/dev/null | egrep -i ["^ *F +UID +PID +PPID +PRI +NI \
845 +VSZ +RSS +WCHAN +STAT +TTY +TIME +COMMAND"] >/dev/null
846 then
847 ac_cv_use_ps_vars=yes
848 ac_cv_ps_varlist="[&procuid,&procppid,procstat,&pos,procprog]"
849 ac_cv_ps_command="$PATH_TO_PS glaxen"
850 ac_cv_ps_format="%*s %d %*s %d %*s %*s %*s %*s %*s %s %*s %*s %n%s"
851 ac_cv_vsz_command="$PATH_TO_PS glaxen"
852 ac_cv_vsz_format="%*s %*s %*s %*s %*s %*s %d"
853 ac_cv_rss_command="$PATH_TO_PS glaxen"
854 ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %d"
855 AC_MSG_RESULT([$ac_cv_ps_command])
857 dnl MacOSX / Darwin
858 dnl TODO: MacOSX has commands with spaces which will cause problems to PS_FORMAT
859 dnl STAT VSZ RSS UID USER PPID UCOMM COMMAND
860 dnl Ss 1308 272 0 root 0 init /sbin/init
861 elif ps waxo 'state vsz rss uid user ppid ucomm command' 2>/dev/null | \
862 egrep -i ["^STAT +VSZ +RSS +UID +USER +PPID +UCOMM +COMMAND"] >/dev/null
863 then
864 ac_cv_use_ps_vars=yes
865 ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
866 ac_cv_ps_raw_command="$PATH_TO_PS waxo 'state uid ppid command'"
867 ac_cv_ps_command="$PATH_TO_PS waxo 'state uid ppid ucomm command'"
868 ac_cv_ps_format="%s %d %d %s %n"
869 ac_cv_vsz_command="$PATH_TO_PS waxco 'vsz command'"
870 ac_cv_vsz_format="%d %s"
871 ac_cv_rss_command="$PATH_TO_PS waxco 'rss command'"
872 ac_cv_rss_format="%d %s"
873 EXTRAS="$EXTRAS check_nagios"
874 AC_MSG_RESULT([$ac_cv_ps_command])
876 dnl UnixWare
877 elif ps -Al 2>/dev/null | egrep -i ["^ *F +S +UID +PID +PPID +CLS +PRI \
878 +NI +C +ADDR +SZ +WCHAN +TTY +TIME +COMD"] >/dev/null
879 then
880 ac_cv_use_ps_vars=yes
881 ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]"
882 ac_cv_ps_command="$PATH_TO_PS -Al"
883 ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s"
884 if ps -Ao 'vsz comm' 2>/dev/null | \
885 egrep -i ["^ *VSZ +COMMAND"] >/dev/null
886 then
887 ac_cv_vsz_command="$PATH_TO_PS -Ao 'vsz comm'"
888 ac_cv_vsz_format="%*s %d"
889 fi
890 AC_MSG_RESULT([$ac_cv_ps_command])
892 else
893 AC_MSG_WARN([unable to find usable ps syntax])
894 fi
896 if test "x$ac_cv_use_ps_vars" != "xno"
897 then
898 AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
899 fi
900 AC_DEFINE_UNQUOTED(PS_VARLIST,$ac_cv_ps_varlist,
901 [Variable list for sscanf of 'ps' output])
902 AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$ac_cv_ps_raw_command",
903 [Verbatim command to execute for ps in check_netsaint])
904 AC_DEFINE_UNQUOTED(PS_COMMAND,"$ac_cv_ps_command",
905 [Verbatim command to execute for ps in check_procs])
906 AC_DEFINE_UNQUOTED(PS_FORMAT,"$ac_cv_ps_format",
907 [Format string for scanning ps output in check_procs])
908 AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$ac_cv_vsz_command",
909 [Verbatim command to execute for ps in check_vsz])
910 AC_DEFINE_UNQUOTED(VSZ_FORMAT,"$ac_cv_vsz_format",
911 [Format string for scanning ps output in check_vsz])
912 AC_DEFINE_UNQUOTED(RSS_COMMAND,"$ac_cv_rss_command",
913 [Verbatim command to execute for ps in check_rss])
914 AC_DEFINE_UNQUOTED(RSS_FORMAT,"$ac_cv_rss_format",
915 [Format string for scanning ps output in check_rss])
917 AC_PATH_PROG(PATH_TO_DF,df)
918 AC_PATH_PROG(PATH_TO_BDF,bdf)
920 AC_ARG_WITH(df_command,
921 ACX_HELP_STRING([--with-df-command=SYNTAX],
922 [sets syntax for df]),
923 ac_cv_df_command=$withval,)
925 AC_MSG_CHECKING(for df syntax)
926 if test -n "$ac_cv_df_command"
927 then
928 AC_MSG_RESULT([$ac_cv_df_command])
930 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
931 then
932 ac_cv_df_command="$PATH_TO_DF -Pk"
933 AC_MSG_RESULT([$ac_cv_df_command])
935 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
936 then
937 ac_cv_df_command="$PATH_TO_DF -k"
938 AC_MSG_RESULT([$ac_cv_df_command])
940 elif df 2>/dev/null | egrep -i ["^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*"] >/dev/null
941 then
942 ac_cv_df_command="$PATH_TO_DF"
943 AC_MSG_RESULT([$ac_cv_df_command])
945 elif bdf 2>/dev/null | egrep -i ["^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*"] >/dev/null
946 then
947 ac_cv_df_command="$PATH_TO_BDF"
948 AC_MSG_RESULT([$ac_cv_df_command])
950 else
951 AC_MSG_WARN([unable to find usable df syntax])
952 fi
954 AC_DEFINE_UNQUOTED(DF_COMMAND,"$ac_cv_df_command",[path and args for df command])
956 AC_PATH_PROG(PATH_TO_PING,ping)
957 AC_PATH_PROG(PATH_TO_PING6,ping6)
959 AC_ARG_WITH(ping_command,
960 ACX_HELP_STRING([--with-ping-command=SYNTAX],
961 [sets syntax for ICMP ping]),
962 ac_cv_ping_command=$withval,)
964 AC_MSG_CHECKING(for ping syntax)
965 if test -n "$ac_cv_ping_command"
966 then
967 AC_MSG_RESULT([(command-line) $ac_cv_ping_command])
968 if test -n "$PING_PACKETS_FIRST"
969 then
970 ac_cv_ping_packets_first=yes
971 dnl AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$ac_cv_ping_command",
972 dnl [Define if packet count must precede host])
973 fi
975 elif [[ "z$ac_cv_uname_s" = "zUnixWare" ]] && \
976 $PATH_TO_PING -n -s 127.0.0.1 56 1 2>/dev/null | \
977 egrep -i "^round-trip|^rtt" >/dev/null
978 then
979 ac_cv_ping_command="$PATH_TO_PING -n -U -c %d %s"
980 ac_cv_ping_packets_first=yes
981 AC_MSG_RESULT([$ac_cv_ping_command])
983 elif $PATH_TO_PING -n -U -c 1 127.0.0.1 2>/dev/null | \
984 egrep -i "^round-trip|^rtt" >/dev/null
985 then
986 ac_cv_ping_command="$PATH_TO_PING -n -U -c %d %s"
987 ac_cv_ping_packets_first=yes
988 AC_MSG_RESULT([$ac_cv_ping_command])
990 elif $PATH_TO_PING -n -c 1 127.0.0.1 2>/dev/null | \
991 egrep -i "^round-trip|^rtt" >/dev/null
992 then
993 ac_cv_ping_command="$PATH_TO_PING -n -c %d %s"
994 ac_cv_ping_packets_first=yes
995 AC_MSG_RESULT([$ac_cv_ping_command])
997 elif $PATH_TO_PING -n 127.0.0.1 -c 1 2>/dev/null | \
998 egrep -i "^round-trip|^rtt" >/dev/null
999 then
1000 ac_cv_ping_command="$PATH_TO_PING -n %s -c %d"
1001 AC_MSG_RESULT([$ac_cv_ping_command])
1003 elif $PATH_TO_PING 127.0.0.1 -n 1 2>/dev/null | \
1004 egrep -i "^round-trip|^rtt" >/dev/null
1005 then
1006 ac_cv_ping_command="$PATH_TO_PING %s -n %d"
1007 AC_MSG_RESULT([$ac_cv_ping_command])
1009 elif $PATH_TO_PING -n -s 127.0.0.1 56 1 2>/dev/null | \
1010 egrep -i "^round-trip|^rtt" >/dev/null
1011 then
1012 ac_cv_ping_command="$PATH_TO_PING -n -s %s 56 %d"
1013 AC_MSG_RESULT([$ac_cv_ping_command])
1015 elif $PATH_TO_PING -n -h 127.0.0.1 -s 56 -c 1 2>/dev/null | \
1016 egrep -i "^round-trip|^rtt" >/dev/null
1017 then
1018 ac_cv_ping_command="$PATH_TO_PING -n -h %s -s 56 -c %d"
1019 AC_MSG_RESULT([$ac_cv_ping_command])
1021 elif $PATH_TO_PING -n -s 56 -c 1 127.0.0.1 2>/dev/null | \
1022 egrep -i "^round-trip|^rtt" >/dev/null
1023 then
1024 ac_cv_ping_command="$PATH_TO_PING -n -s 56 -c %d %s"
1025 ac_cv_ping_packets_first=yes
1026 AC_MSG_RESULT([$ac_cv_ping_command])
1028 elif $PATH_TO_PING -n -c 1 127.0.0.1 2>/dev/null | \
1029 egrep -i "^round-trip|^rtt" >/dev/null
1030 then
1031 ac_cv_ping_command="$PATH_TO_PING -n -c %d %s"
1032 ac_cv_ping_packets_first=yes
1033 AC_MSG_RESULT([$ac_cv_ping_command])
1035 else
1036 AC_MSG_WARN([unable to find usable ping syntax])
1037 fi
1039 AC_DEFINE_UNQUOTED(PING_COMMAND,"$ac_cv_ping_command",
1040 [path and args for ICMP ping command])
1042 if test x$ac_cv_ping_packets_first != xno
1043 then
1044 AC_DEFINE(PING_PACKETS_FIRST,1,
1045 [Define if packet count must precede host])
1046 fi
1048 AC_ARG_WITH(ping6_command,
1049 ACX_HELP_STRING([--with-ping6-command=SYNTAX],
1050 [sets syntax for ICMPv6 ping]),
1051 PING6_COMMAND=$withval,)
1053 AC_PATH_PROG(PATH_TO_NSLOOKUP,nslookup)
1055 AC_MSG_CHECKING(for nslookup syntax)
1056 if test -n "$PATH_TO_NSLOOKUP"
1057 then
1058 if $PATH_TO_NSLOOKUP -sil 127.0.0.1 2>&1 | grep ["Invalid option: sil"] >/dev/null
1059 then
1060 ac_cv_nslookup_command="$PATH_TO_NSLOOKUP"
1061 AC_MSG_RESULT([$ac_cv_nslookup_command])
1063 else
1064 ac_cv_nslookup_command="$PATH_TO_NSLOOKUP -sil"
1065 AC_MSG_RESULT([$ac_cv_nslookup_command])
1067 fi
1068 EXTRAS="$EXTRAS check_dns"
1070 else
1071 AC_MSG_WARN([nslookup command not found])
1072 fi
1074 AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$ac_cv_nslookup_command",
1075 [path and args for nslookup])
1077 AC_PATH_PROG(PATH_TO_HOST,host)
1078 if test -n "$ac_cv_path_PATH_TO_HOST"
1079 then
1080 EXTRAS="$EXTRAS check_dns"
1081 fi
1083 AC_PATH_PROG(PATH_TO_UPTIME,uptime)
1084 AC_DEFINE_UNQUOTED(PATH_TO_UPTIME,"$PATH_TO_UPTIME",[path to uptime binary])
1086 AC_PATH_PROG(PATH_TO_RPCINFO,rpcinfo)
1087 AC_DEFINE_UNQUOTED(PATH_TO_RPCINFO,"$PATH_TO_RPCINFO",[path to rpcinfo binary])
1089 AC_PATH_PROG(PATH_TO_NTPDATE,ntpdate)
1090 AC_PATH_PROGS(PATH_TO_NTPDC,ntpdc xntpdc)
1091 AC_PATH_PROGS(PATH_TO_NTPQ,ntpq)
1092 if (test -x "$PATH_TO_NTPDATE" || test -x "$PATH_TO_NTPQ")
1093 then
1094 AC_DEFINE_UNQUOTED(PATH_TO_NTPQ,"$PATH_TO_NTPQ",[path to ntpq binary])
1095 AC_DEFINE_UNQUOTED(PATH_TO_NTPDATE,"$PATH_TO_NTPDATE",[path to ntpdate binary])
1096 else
1097 AC_MSG_WARN([Install NTP programs (http://www.ntp.org) if you want to monitor time synchronization])
1098 fi
1100 AC_PATH_PROG(PATH_TO_LMSTAT,lmstat)
1101 if test -x "$PATH_TO_LMSTAT"
1102 then
1103 AC_DEFINE_UNQUOTED(PATH_TO_LMSTAT,"$PATH_TO_LMSTAT",[path to lmstat])
1104 else
1105 AC_MSG_WARN([Get lmstat from Globetrotter Software to monitor flexlm licenses])
1106 fi
1108 AC_PATH_PROG(PATH_TO_SMBCLIENT,smbclient)
1109 if test -x "$PATH_TO_SMBCLIENT"
1110 then
1111 AC_DEFINE_UNQUOTED(PATH_TO_SMBCLIENT,"$PATH_TO_SMBCLIENT",[path to smbclient binary])
1112 else
1113 AC_MSG_WARN([Get smbclient from Samba.org to monitor SMB shares])
1114 fi
1117 AC_PATH_PROG(PATH_TO_WHO,who)
1119 if [$PATH_TO_WHO -q 2>/dev/null | egrep -i "^# users=[0-9]+$" >/dev/null]
1120 then
1121 ac_cv_path_to_who="$PATH_TO_WHO -q"
1122 else
1123 ac_cv_path_to_who="$PATH_TO_WHO"
1124 fi
1126 AC_DEFINE_UNQUOTED(WHO_COMMAND,"$ac_cv_path_to_who",
1127 [path and arguments for invoking 'who'])
1129 AC_PATH_PROG(PATH_TO_SNMPGET,snmpget)
1130 if test -x "$PATH_TO_SNMPGET"
1131 then
1132 AC_DEFINE_UNQUOTED(PATH_TO_SNMPGET,"$PATH_TO_SNMPGET",[path to snmpget binary])
1133 EXTRAS="$EXTRAS check_hpjd check_snmp"
1134 else
1135 AC_MSG_WARN([Get snmpget from http://net-snmp.sourceforge.net to make check_hpjd and check_snmp plugins])
1136 fi
1138 AC_PATH_PROG(PATH_TO_SNMPGETNEXT,snmpgetnext)
1139 if test -x "$PATH_TO_SNMPGETNEXT"
1140 then
1141 AC_DEFINE_UNQUOTED(PATH_TO_SNMPGETNEXT,"$PATH_TO_SNMPGETNEXT",[path to snmpgetnext binary])
1142 fi
1144 if ( $PERL -M"Net::SNMP 3.6" -e 'exit' 2>/dev/null )
1145 then
1146 AC_MSG_CHECKING(for Net::SNMP perl module)
1147 AC_MSG_RESULT([found])
1148 else
1149 AC_MSG_WARN([Tried $PERL - install Net::SNMP perl module if you want to use the perl snmp plugins])
1150 fi
1152 AC_PATH_PROG(PATH_TO_QUAKESTAT,quakestat)
1153 AC_PATH_PROG(PATH_TO_QSTAT,qstat)
1155 if test -x "$PATH_TO_QUAKESTAT"
1156 then
1157 ac_cv_path_to_qstat="$PATH_TO_QUAKESTAT"
1158 EXTRAS="$EXTRAS check_game"
1160 elif test -x "$PATH_TO_QSTAT"
1161 then
1162 ac_cv_path_to_qstat="$PATH_TO_QSTAT"
1163 EXTRAS="$EXTRAS check_game"
1164 else
1165 AC_MSG_WARN([Get qstat from http://www.activesw.com/people/steve/qstat.html in order to make check_game plugin])
1166 fi
1168 if test $ac_cv_path_to_qstat
1169 then
1170 AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$ac_cv_path_to_qstat",
1171 [path to qstat/quakestat])
1172 fi
1174 AC_PATH_PROG(PATH_TO_FPING,fping)
1175 if test -x "$PATH_TO_FPING"
1176 then
1177 AC_DEFINE_UNQUOTED(PATH_TO_FPING,"$PATH_TO_FPING",[path to fping])
1178 EXTRAS="$EXTRAS check_fping"
1179 else
1180 AC_MSG_WARN([Get fping from http://www.fping.com in order to make check_fping plugin])
1181 fi
1183 AC_PATH_PROG(PATH_TO_SSH,ssh)
1185 if test -x "$PATH_TO_SSH"
1186 then
1187 AC_DEFINE_UNQUOTED(SSH_COMMAND,"$PATH_TO_SSH",[path to ssh binary])
1188 EXTRAS="$EXTRAS check_by_ssh"
1189 else
1190 AC_MSG_WARN([Get ssh in order to make check_by_ssh plugin])
1191 fi
1194 AC_PATH_PROG(PATH_TO_MAILQ,mailq)
1195 if test -x "$PATH_TO_MAILQ"
1196 then
1197 AC_DEFINE_UNQUOTED(PATH_TO_MAILQ,"$PATH_TO_MAILQ",[path to mailq])
1198 else
1199 AC_MSG_WARN([Could not find mailq or eqivalent])
1200 fi
1202 dnl SWAP info required is amount allocated/available and amount free
1203 dnl The plugin works through all the swap devices and adds up the total swap
1204 dnl available.
1206 dnl dunno why this does not work below - use hack (kbd)
1207 dnl fine on linux, broken on solaris
1208 dnl if /bin/test -e "/proc/meminfo"
1210 AC_PATH_PROG(PATH_TO_SWAP,swap)
1211 AC_PATH_PROG(PATH_TO_SWAPINFO,swapinfo)
1213 AC_MSG_CHECKING(for how to check memory)
1214 if [cat /proc/meminfo > /dev/null 2>&1]
1215 then
1216 AC_MSG_RESULT([found /proc/meminfo])
1217 AC_DEFINE(HAVE_PROC_MEMINFO,1,[Define if we have /proc/meminfo])
1218 AC_DEFINE_UNQUOTED(PROC_MEMINFO,"/proc/meminfo",[path to /proc/meminfo if name changes])
1219 EXTRAS="$EXTRAS check_swap"
1221 elif [$PATH_TO_SWAP -l 2>&1 >/dev/null]
1222 then
1223 ac_cv_have_swap=yes
1224 ac_cv_swap_command="$PATH_TO_SWAP -l"
1225 if [$PATH_TO_SWAP -l 2>/dev/null | \
1226 egrep -i "^lswap +path +pri +swaplo +blocks +free +maxswap" \
1227 >/dev/null]
1228 then
1229 ac_cv_swap_format=[" %*d %*s %*d,%*d %*d %*d %d %d"]
1230 AC_MSG_RESULT([using IRIX format swap])
1232 elif [$PATH_TO_SWAP -l 2>/dev/null | egrep -i "^swapfile +dev +swaplo +blocks +free" >/dev/null]
1233 then
1234 ac_cv_swap_format=["%*s %*[[0-9,-]] %*d %d %d"]
1235 AC_MSG_RESULT([using Solaris format swap])
1237 elif [$PATH_TO_SWAP -l 2>/dev/null | egrep -i "^path +dev +swaplo +blocks +free" >/dev/null]
1238 then
1239 ac_cv_swap_format=["%*s %*[[0-9,-]] %*d %d %d"]
1240 AC_MSG_RESULT([using Unixware format swap])
1242 fi
1243 EXTRAS="$EXTRAS check_swap"
1245 elif [$PATH_TO_SWAPINFO -k 2>&1 | egrep -i "^Device" >/dev/null]
1246 then
1247 ac_cv_have_swap=yes
1248 ac_cv_swap_command="$PATH_TO_SWAPINFO -k"
1250 if [$PATH_TO_SWAPINFO -k 2>/dev/null | egrep -i "^Device +1K-blocks +Used +Avail" >/dev/null]
1251 then
1252 ac_cv_swap_format=["%*s %d %*d %d"]
1253 AC_MSG_RESULT([using FreeBSD format swapinfo])
1254 fi
1255 EXTRAS="$EXTRAS check_swap"
1257 elif [$PATH_TO_SWAPINFO -dfM 2>/dev/null | egrep -i "^TYPE +AVAIL +USED +FREE" >/dev/null]
1258 then
1259 ac_cv_have_swap=yes
1260 ac_cv_swap_command="$PATH_TO_SWAPINFO -dfM",
1261 ac_cv_swap_format=["%*s %d %*d %d"]
1262 AC_MSG_RESULT([using HP-UX format swapinfo])
1263 fi
1265 if test x$ac_cv_have_swap != x
1266 then
1267 AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
1268 fi
1269 AC_DEFINE_UNQUOTED(SWAP_FORMAT,"$ac_cv_swap_format",
1270 [Format string for parsing swap output])
1271 if test "x$ac_cv_swap_command" != "x"
1272 then
1273 AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$ac_cv_swap_command",
1274 [Path to swap/swapinfo binary, with any args])
1275 fi
1277 AC_PATH_PROG(PATH_TO_DIG,dig)
1278 AC_DEFINE_UNQUOTED(PATH_TO_DIG,"$PATH_TO_DIG",[Path to dig command, if present])
1279 if test -n "$PATH_TO_DIG"; then
1280 EXTRAS="$EXTRAS check_dig"
1281 fi
1283 if test -f plugins/check_nt.c ; then
1284 EXTRAS="$EXTRAS check_nt"
1285 elif test -f ../plugins/check_nt.c ; then
1286 EXTRAS="$EXTRAS check_nt"
1287 fi
1289 AC_MSG_CHECKING(for va_list)
1290 AC_TRY_COMPILE([#ifdef __STDC__
1291 #include <stdio.h>
1292 #include <stdlib.h>
1293 #include <stdarg.h>
1294 #else
1295 #include <sys/types.h>
1296 #include <stdio.h>
1297 #include <varargs.h>
1298 #endif],
1299 [va_list args;],
1300 [AC_MSG_RESULT(yes)],
1301 [NEED_VA_LIST=-DNEED_VA_LIST AC_SUBST(NEED_VA_LIST) AC_MSG_RESULT(no)])
1303 AC_SUBST(EXTRAS)
1304 AC_SUBST(DEPLIBS)
1306 AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"${VERSION}",[package version])
1308 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)