Code

cc9f96cc0fd1abd7d65c359f11bb4351e57ade61
[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 dnl We used to not do long options unless a compatible lib was found
377 dnl Now we provide code and make libgetopt if native is not suitable
378 AC_MSG_CHECKING(for getopt_long)
379 AC_TRY_COMPILE([#include <getopt.h>
380                 #include <stdlib.h>],
381                [int option_index=0;
382                 static struct option *long_options;
383                 getopt_long(0,NULL,"+h",long_options,&option_index);],
384                [AC_DEFINE(HAVE_GETOPT_H,1,[Define if getopt headers are found])
385                 AC_DEFINE(HAVE_GETOPT_LONG,1,[Define if getopt_long is found])
386                 AC_MSG_RESULT(yes)],
387                [AC_DEFINE(HAVE_GETOPT_H,1,[Define if getopt headers are found])
388                 AC_DEFINE(HAVE_GETOPT_LONG,1,[Define if getopt_long is found])
389                 AC_MSG_RESULT(no)
390                 import_sources=getopt
391                 LIBS="$LIBS -lgetopt"
392                 DEPLIBS="$DEPLIBS libgetopt.a"])
394 AC_TRY_COMPILE([#include <sys/time.h>],
395                [struct timeval *tv;
396                 struct timezone *tz;],
397                AC_DEFINE(HAVE_STRUCT_TIMEVAL,1,[Define if we have a timeval structure])
398                AC_TRY_COMPILE([#include <sys/time.h>],
399                               [struct timeval *tv;
400                                struct timezone *tz;
401                                gettimeofday(tv, tz);],
402                               AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define if gettimeofday is found]),
403                               AC_DEFINE(NEED_GETTIMEOFDAY,1,[Define if gettimeofday is needed])))
405 dnl Checks for library functions.
406 AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul)
408 AC_MSG_CHECKING(for type of socket size)
409 AC_TRY_COMPILE([#include <stdlib.h>
410                 #include <sys/types.h>
411                 #include <sys/socket.h>],
412                [int a = send(1, (const void *) buffer, (size_t *) 0, (int *) 0);],
413                [AC_DEFINE(SOCKET_SIZE_TYPE, size_t, [Define type of socket size])
414                 AC_MSG_RESULT(size_t)],
415                [AC_DEFINE(SOCKET_SIZE_TYPE, int, [Define type of socket size])
416                 AC_MSG_RESULT(int)])
418 if test -f "/proc/loadavg"
419 then
420   AC_DEFINE(HAVE_PROC_LOADAVG,1,[Define if /proc/loadavg or similar exists])
421   AC_DEFINE_UNQUOTED(PROC_LOADAVG,"/proc/loadavg",[Location of /proc/loadavg])
422 fi
424 AC_PATH_PROG(PATH_TO_PS,ps)
425 dnl  STAT UCOMM              VSZ   RSS USER       UID  PPID COMMAND
426 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]
427 then
428         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
429         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
430         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -weo 'stat user ppid args'",[Verbatim command to execute for ps in check_netsaint])
431         EXTRAS="$EXTRAS check_nagios"
432         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -weo 'stat uid ppid comm args'",[Verbatim command to execute for ps in check_procs])
433         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
434         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -weo 'vsz comm'",[Verbatim command to execute for ps in check_vsz])
435         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[Format string for scanning ps output in check_vsz])
436         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -weo 'rss comm'",[Verbatim command to execute for ps in check_rss])
437         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[Format string for scanning ps output in check_rss])
438   echo "      ps syntax... $PATH_TO_PS -weo 'stat comm vsz rss user ppid args'"
439 dnl FreeBSD
440 elif [ps waxco 'state command vsz rss uid user ppid' 2>/dev/null | egrep -i "^STAT +COMMAND +VSZ +RSS +UID +USER +PPID" >/dev/null]
441 then
442         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
443         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
444         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxo 'state uid ppid command'",[])
445         EXTRAS="$EXTRAS check_nagios"
446         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxco 'state uid ppid command command'",[])
447         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
448         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxco 'vsz command'",[])
449         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
450         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxco 'rss command'",[])
451         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
452         echo "      ps syntax... $PATH_TO_PS -Ao 'state command vsz rss'"
453 dnl BSD-like mode in RH 6.1
454 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]
455 then
456         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
457         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
458         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxno 'state user ppid comm'",[])
459         EXTRAS="$EXTRAS check_nagios"
460         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxno 'state uid ppid comm args'",[])
461         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
462         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxno 'vsz comm'",[])
463         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
464         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxno 'rss comm'",[])
465         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
466         echo "      ps syntax... $PATH_TO_PS -waxco 'state comm vsz rss'"
467 dnl SunOS 4.1.3:
468 dnl  F  UID  PID  PPID  CP  PRI  NI  SZ  RSS  WCHAN  STAT  TT  TIME  COMMAND
469 dnl
470 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]
471 then
472         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
473         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS laxnwww",[])
474         EXTRAS="$EXTRAS check_nagios"
475         AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog],[])
476         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -laxnwww",[])
477         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])
478         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS laxnwww",[])
479         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d",[])
480         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS laxnwww",[])
481         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %d",[])
482         echo "      ps syntax... $PATH_TO_PS laxnwww"
483 dnl Debian Linux / procps v1.2.9:
484 dnl  FLAGS   UID   PID  PPID PRI  NI   SIZE   RSS WCHAN       STA TTY TIME COMMAND
485 dnl    100     0     1     0   0   0    776    76  c0131c8c   S  ffff  0:11 init [2]
486 dnl
487 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]
488 then
489         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
490         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS laxnwww",[])
491         EXTRAS="$EXTRAS check_nagios"
492         AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog],[])
493         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS laxnwww",[])
494         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])
495         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS laxnwww",[])
496         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %d",[])
497         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS laxnwww",[])
498         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d",[])
499         echo "      ps syntax... $PATH_TO_PS laxnwww"
500 dnl OpenBSD (needs to come early because -exo appears to work, but does not give all procs)
501 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]
502 then
503         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
504         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
505         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -axo 'stat user ppid args'",[Verbatim command to execute for ps in check_netsaint])
506         EXTRAS="$EXTRAS check_nagios"
507         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -axo 'stat uid ppid comm args'",[Verbatim command to execute for ps in check_procs])
508         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
509         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -axo 'vsz comm'",[Verbatim command to execute for ps in check_vsz])
510         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[Format string for scanning ps output in check_vsz])
511         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -axo 'rss comm'",[Verbatim command to execute for ps in check_rss])
512         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[Format string for scanning ps output in check_rss])
513   echo "      ps syntax... $PATH_TO_PS -axo 'stat comm vsz rss user ppid args'"
514 dnl AIX 4.3.3 - needs verification. This works for Tru64 - needs %*[ +] in PS_FORMAT
515 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]
516 then
517         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
518         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
519         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -ao 'stat user ppid args'",[Verbatim command to execute for ps in check_netsaint])
520         EXTRAS="$EXTRAS check_nagios"
521         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -ao 'stat uid ppid comm args'")
522         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s%*[ +] %d %d %s %n",[Format string for scanning ps output in check_procs])
523         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -ao 'vsz comm'",[])
524         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
525         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -ao 'rss comm'",[])
526         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
527   echo "      ps syntax... $PATH_TO_PS -ao 'stat comm vsz rss user ppid args'"
528 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]
529 then
530         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
531         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
532         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -eo 's user ppid args'",[Verbatim command to execute for ps in check_netsaint])
533         EXTRAS="$EXTRAS check_nagios"
534         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -eo 's uid ppid comm args'")
535         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
536         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -eo 'vsz comm'",[])
537         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
538         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -eo 'rss comm'",[])
539         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
540         echo "      ps syntax... $PATH_TO_PS -eo 's  comm vsz rss user ppid args'"
541 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]
542 then
543         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
544         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[Variable list for sscanf of 'ps' output])
545         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 's user ppid args'",[Verbatim command to execute for ps in check_netsaint])
546         EXTRAS="$EXTRAS check_nagios"
547         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 's uid ppid comm args'",[])
548         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
549         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'",[])
550         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
551         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'",[])
552         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
553         echo "      ps syntax... $PATH_TO_PS -Ao 's comm vsz rss'"
554 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]
555 then
556         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
557         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
558         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 'status user ppid args'",[Verbatim command to execute for ps in check_netsaint])
559         EXTRAS="$EXTRAS check_nagios"
560         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 'status uid ppid comm args'",[])
561         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
562         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'",[])
563         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
564         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'",[])
565         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
566         echo "      ps syntax... $PATH_TO_PS -Ao 'status comm vsz rss'"
567 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]
568 then
569         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
570         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos])
571         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -Ao 'state user ppid args'",[Verbatim command to execute for ps in check_netsaint])
572         EXTRAS="$EXTRAS check_nagios"
573         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -Ao 'state uid ppid comm args'",[])
574         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
575         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -Ao 'vsz comm'",[])
576         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
577         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -Ao 'rss comm'",[])
578         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
579         echo "      ps syntax... $PATH_TO_PS -Ao 'state comm vsz rss'"
580 dnl wonder who takes state instead of stat
581 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]
582 then
583         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
584         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
585         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS -ao 'state user ppid args'",[])
586         EXTRAS="$EXTRAS check_nagios"
587         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -ao 'state uid ppid command args'",[])
588         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
589         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -ao 'vsz command'",[])
590         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
591         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -ao 'rss command'",[])
592         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
593         echo "      ps syntax... $PATH_TO_PS -ao 'state command vsz rss'"
594 dnl IRIX 53
595 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]
596 then
597         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
598         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog],[])
599         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el",[])
600         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])
601         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el",[])
602         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d",[])
603         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el",[])
604         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
605         echo "      ps syntax... $PATH_TO_PS -el"
606 dnl IRIX 63
607 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]
608 then
609         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
610         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog],[])
611         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el",[])
612         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])
613         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el",[])
614         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %d",[])
615         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el",[])
616         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
617         echo "      ps syntax... $PATH_TO_PS -el"
618 dnl    
619 dnl AIX 4.1:
620 dnl     F S      UID   PID  PPID   C PRI NI ADDR  SZ  RSS   WCHAN    TTY  TIME CMD
621 dnl    303 A        0     0     0 120  16 -- 1c07  20   24              -  0:45 swapper
622 elif [ps -el 2>/dev/null | egrep -i "^ *F +S +UID +PID +PPID +C +PRI +NI +ADDR +SZ +WCHAN +TTY +TIME +[RGSCOMDNA]+" >/dev/null]
623 then
624         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
625         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,&pos,procprog],[])
626         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS -el",[])
627         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])
628         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS -el",[])
629         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
630         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS -el",[])
631         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %*s %*s %d",[])
632         echo "      ps syntax... $PATH_TO_PS -el"
633 dnl AIX?
634 elif [ps glaxen 2>/dev/null | egrep -i "^ *F +UID +PID +PPID +PRI +NI +VSZ +RSS +WCHAN +STAT +TTY +TIME +COMMAND" >/dev/null]
635 then
636         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
637         AC_DEFINE_UNQUOTED(PS_VARLIST,[&procuid,&procppid,procstat,&pos,procprog],[])
638         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS glaxen",[])
639         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])
640         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS glaxen",[])
641         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%*s %*s %*s %*s %*s %*s %d",[])
642         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS glaxen",[])
643         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%*s %*s %*s %*s %*s %*s %*s %d",[])
644         echo "      ps syntax... $PATH_TO_PS glaxen"
645 dnl MacOSX / Darwin
646 dnl TODO: MacOSX has commands with spaces which will cause problems to PS_FORMAT
647 dnl STAT      VSZ    RSS   UID USER     PPID UCOMM            COMMAND
648 dnl Ss       1308    272     0 root        0 init             /sbin/init
649 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]
650 then
651         AC_DEFINE(USE_PS_VARS,1,[Define if we use custom variable list for sscanf])
652         AC_DEFINE_UNQUOTED(PS_VARLIST,[procstat,&procuid,&procppid,procprog,&pos],[])
653         AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$PATH_TO_PS waxo 'state uid ppid command'",[])
654         EXTRAS="$EXTRAS check_nagios"
655         AC_DEFINE_UNQUOTED(PS_COMMAND,"$PATH_TO_PS waxo 'state uid ppid ucomm command'",[])
656         AC_DEFINE_UNQUOTED(PS_FORMAT,"%s %d %d %s %n",[Format string for scanning ps output in check_procs])
657         AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$PATH_TO_PS waxco 'vsz command'",[])
658         AC_DEFINE_UNQUOTED(VSZ_FORMAT,"%d %s",[])
659         AC_DEFINE_UNQUOTED(RSS_COMMAND,"$PATH_TO_PS waxco 'rss command'",[])
660         AC_DEFINE_UNQUOTED(RSS_FORMAT,"%d %s",[])
661         echo "      ps syntax... $PATH_TO_PS waxo 'state vsz rss command'"
662 else
663         echo "** Unable to find usable ps syntax"
664 fi
666 AC_ARG_WITH(df_command,--with-df-command=<syntax> sets syntax for df,DF_COMMAND=$withval)
667 if test -n "$DF_COMMAND"
668 then
669         AC_DEFINE_UNQUOTED(DF_COMMAND,"$DF_COMMAND",[path and args for df command])
670 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]
671 then
672         AC_PATH_PROG(PATH_TO_DF,df)
673         AC_MSG_RESULT("      df syntax... $PATH_TO_DF -Pk")
674         AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF -Pk",[path and args for df command])
675 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]
676 then
677         AC_PATH_PROG(PATH_TO_DF,df)
678         AC_MSG_RESULT("      df syntax... $PATH_TO_DF -k")
679         AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF -k",[path and args for df command])
680 elif [df 2>/dev/null | egrep -i "^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*" >/dev/null]
681 then
682         AC_PATH_PROG(PATH_TO_DF,df)
683         AC_MSG_RESULT("      df syntax... $PATH_TO_DF")
684         AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF",[path and args for df command])
685 elif [bdf 2>/dev/null | egrep -i "^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*" >/dev/null]
686 then
687         AC_PATH_PROG(PATH_TO_DF,bdf)
688         AC_MSG_RESULT("      df syntax... $PATH_TO_DF")
689         AC_DEFINE_UNQUOTED(DF_COMMAND,"$PATH_TO_DF",[path and args for df command])
690 else
691         AC_MSG_WARN("unable to find usable df syntax")
692 fi
694 AC_PATH_PROG(PATH_TO_PING,ping)
696 AC_ARG_WITH(ping_command,--with-ping-command=<syntax> sets syntax for ping,PING_COMMAND=$withval)
697 if test -n "$PING_COMMAND"
698 then
699         echo "      ping syntax... (command-line) $PING_COMMAND"
700         if test -n "$PING_PACKETS_FIRST"
701         then
702                 AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
703         fi
704 elif [ping -n -U -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
705 then
706         PING_COMMAND="$PATH_TO_PING -n -U -c %d %s"
707         AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
708         echo "      ping syntax... $PATH_TO_PING -n -U -c <count> <host>"
709 elif [ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
710 then
711         PING_COMMAND="$PATH_TO_PING -n -c %d %s"
712         AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
713         echo "      ping syntax... $PATH_TO_PING -n -c <count> <host>"
714 elif [ping -n 127.0.0.1 -c 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
715 then
716         PING_COMMAND="$PATH_TO_PING -n %s -c %d"
717         echo "      ping syntax... $PATH_TO_PING -n <host> -c <count>"
718 elif [ping 127.0.0.1 -n 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
719 then
720         PING_COMMAND="$PATH_TO_PING %s -n %d"
721         echo "      ping syntax... $PATH_TO_PING <host> -n <count>"
722 elif [ping -n -s 127.0.0.1 56 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
723 then
724         PING_COMMAND="$PATH_TO_PING -n -s %s 56 %d"
725         echo "      ping syntax... $PATH_TO_PING -n -s <host> 56 <count>"
726 elif [ping -n -h 127.0.0.1 -s 56 -c 1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
727 then
728         PING_COMMAND="$PATH_TO_PING -n -h %s -s 56 -c %d"
729         echo "      ping syntax... $PATH_TO_PING -n -h <host> -s 56 -c <count>"
730 elif [ping -n -s 56 -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
731 then
732         PING_COMMAND="$PATH_TO_PING -n -s 56 -c %d %s"
733         AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
734         echo "      ping syntax... $PATH_TO_PING -n -s 56 -c <count> <host>"
735 elif [ping -n -c 1 127.0.0.1 2>/dev/null | egrep -i "^round-trip|^rtt" >/dev/null]
736 then
737         PING_COMMAND="$PATH_TO_PING -n -c %d %s"
738         AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$PING_COMMAND",[Define if packet count must precede host])
739         echo "      ping syntax... $PATH_TO_PING -n -c <count> <host>"
740 else
741         AC_MSG_WARN("unable to find usable ping syntax")
742 fi
743 AC_DEFINE_UNQUOTED(PING_COMMAND,"$PING_COMMAND",[path and args for ping command])
745 AC_PATH_PROG(PATH_TO_NSLOOKUP,nslookup)
746 if test -n "$ac_cv_path_PATH_TO_NSLOOKUP"
747 then
748         AC_MSG_CHECKING("nslookup syntax")
749         if [nslookup -sil 127.0.0.1 2>&1 | grep "*** Invalid option: sil" >/dev/null]
750         then
751                 AC_MSG_RESULT("$PATH_TO_NSLOOKUP")
752                 AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$PATH_TO_NSLOOKUP",[path and args for nslookup])
753         else
754                 AC_MSG_RESULT("$PATH_TO_NSLOOKUP -sil")
755                 AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$PATH_TO_NSLOOKUP -sil",[path and args for nslookup])
756         fi
757         EXTRAS="$EXTRAS check_dns"
758 else
759         AC_MSG_WARN("nslookup command not found")
760 fi
762 AC_PATH_PROG(PATH_TO_HOST,host)
763 if test -n "$ac_cv_path_PATH_TO_HOST"
764 then
765         AC_MSG_CHECKING("host syntax")
766         if [host 127.0.0.1 2>&1 | grep -v "ommand not found" > /dev/null]
767         then
768                 AC_MSG_RESULT("$PATH_TO_HOST")
769                 AC_DEFINE_UNQUOTED(HOST_COMMAND,"$PATH_TO_HOST",[path to host binary])
770         fi
771         EXTRAS="$EXTRAS check_dns"
772 else    
773         AC_MSG_WARN("host command not found")
774 fi
776 AC_PATH_PROG(PATH_TO_UPTIME,uptime)
777 AC_DEFINE_UNQUOTED(PATH_TO_UPTIME,"$PATH_TO_UPTIME",[path to uptime binary])
779 AC_PATH_PROG(PATH_TO_RPCINFO,rpcinfo)
780 AC_DEFINE_UNQUOTED(PATH_TO_RPCINFO,"$PATH_TO_RPCINFO",[path to rpcinfo binary])
782 AC_PATH_PROG(PATH_TO_NTPDATE,ntpdate)
783 AC_PATH_PROGS(PATH_TO_NTPDC,ntpdc xntpdc)
784 AC_PATH_PROGS(PATH_TO_NTPQ,ntpq)
785 if (test -x "$PATH_TO_NTPDATE" || test -x "$PATH_TO_NTPQ")
786 then
787         AC_DEFINE_UNQUOTED(PATH_TO_NTPQ,"$PATH_TO_NTPQ",[path to ntpq binary])
788         AC_DEFINE_UNQUOTED(PATH_TO_NTPDATE,"$PATH_TO_NTPDATE",[path to ntpdate binary])
789 else
790         echo "** Install NTP programs (http://www.ntp.org) if you want to monitor time synchronization"
791 fi
793 AC_PATH_PROG(PATH_TO_LMSTAT,lmstat)
794 if test -x "$PATH_TO_LMSTAT"
795 then
796         AC_DEFINE_UNQUOTED(PATH_TO_LMSTAT,"$PATH_TO_LMSTAT",[path to lmstat])
797 else
798         echo "** Get lmstat from Globetrotter Software to monitor flexlm licenses"
799 fi
801 AC_PATH_PROG(PATH_TO_SMBCLIENT,smbclient)
802 if test -x "$PATH_TO_SMBCLIENT"
803 then
804         AC_DEFINE_UNQUOTED(PATH_TO_SMBCLIENT,"$PATH_TO_SMBCLIENT",[path to smbclient binary])
805 else
806         echo "** Get smbclient from Samba.org to monitor SMB shares"
807 fi
810 AC_PATH_PROG(PATH_TO_WHO,who)
811 if [who -q 2>/dev/null | egrep -i "^# users=[0-9]+$" >/dev/null]
812 then
813         AC_DEFINE_UNQUOTED(WHO_COMMAND,"$PATH_TO_WHO -q",[path and arguments for invoking 'who'])
814 else
815         AC_DEFINE_UNQUOTED(WHO_COMMAND,"$PATH_TO_WHO",[path and arguments for invoking 'who'])
816 fi
818 AC_PATH_PROG(PATH_TO_SNMPGET,snmpget)
819 if test -x "$PATH_TO_SNMPGET"
820 then
821         AC_DEFINE_UNQUOTED(PATH_TO_SNMPGET,"$PATH_TO_SNMPGET",[path to snmpget binary])
822         EXTRAS="$EXTRAS check_hpjd check_snmp"
823 else
824         echo "** Get snmpget from http://net-snmp.sourceforge.net to make check_hpjd and check_snmp plugins"
825 fi
827 AC_PATH_PROG(PATH_TO_SNMPGETNEXT,snmpgetnext)
828 if test -x "$PATH_TO_SNMPGETNEXT"
829 then
830         AC_DEFINE_UNQUOTED(PATH_TO_SNMPGETNEXT,"$PATH_TO_SNMPGETNEXT",[path to snmpgetnext binary])
831 fi
833 if ( $PERL -M"Net::SNMP 3.6" -e 'exit' 2>/dev/null  )
834 then
835         echo "Found Net::SNMP perl module"
836 else
837         echo "** Tried $PERL - install Net::SNMP perl module if you want to"
838         echo "        use the perl snmp plugins"
839 fi
841 AC_PATH_PROG(PATH_TO_QUAKESTAT,quakestat)
842 AC_PATH_PROG(PATH_TO_QSTAT,qstat)
843 if test -x "$PATH_TO_QUAKESTAT"
844 then
845         AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$PATH_TO_QUAKESTAT",[path to qstat/quakestat])
846         EXTRAS="$EXTRAS check_game"
847 elif test -x "$PATH_TO_QSTAT"
848 then
849         AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$PATH_TO_QSTAT",[path to qstat/quakestat])
850         EXTRAS="$EXTRAS check_game"
851 else
852         echo "** Get qstat from http://www.activesw.com/people/steve/qstat.html in order to make check_game plugin"
853 fi
855 AC_PATH_PROG(PATH_TO_FPING,fping)
856 if test -x "$PATH_TO_FPING"
857 then
858         AC_DEFINE_UNQUOTED(PATH_TO_FPING,"$PATH_TO_FPING",[path to fping])
859         EXTRAS="$EXTRAS check_fping"
860 else
861         echo "** Get fping from http://www.fping.com in order to make check_fping plugin"
862 fi
864 AC_PATH_PROG(PATH_TO_SSH,ssh)
865 if test -x "$PATH_TO_SSH"
866 then
867         AC_DEFINE_UNQUOTED(SSH_COMMAND,"$PATH_TO_SSH",[path to ssh binary])
868         EXTRAS="$EXTRAS check_by_ssh"
869 else
870         echo "** Get ssh in order to make check_by_ssh plugin"
871 fi
874 AC_PATH_PROG(PATH_TO_MAILQ,mailq)
875 if test -x "$PATH_TO_MAILQ"
876 then
877         AC_DEFINE_UNQUOTED(PATH_TO_MAILQ,"$PATH_TO_MAILQ",[path to mailq])
878 else
879         echo "** Could not find mailq or eqivalent"
880 fi
882 dnl dunno why this does not work below - use hack (kbd)
883 dnl fine on linux, broken on solaris
884 dnl if /bin/test -e "/proc/meminfo"
886 if [cat /proc/meminfo > /dev/null 2>&1]
887 then
888         echo "found /proc/meminfo"
889         AC_DEFINE(HAVE_PROC_MEMINFO,1,[Define if we have /proc/meminfo])
890         AC_DEFINE_UNQUOTED(PROC_MEMINFO,"/proc/meminfo",[path to /proc/meminfo if name changes])
891         EXTRAS="$EXTRAS check_swap"
892 elif [swap -l 2>&1 | egrep -i "swapfile" >/dev/null]
893 then
894         echo "found swap command"
895         AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
896         AC_PATH_PROG(PATH_TO_SWAP,swap)
897         AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$PATH_TO_SWAP -l",[Path to swap/swapinfo binary, with any args])
898         if [swap -l 2>/dev/null | egrep -i "^lswap +path +pri +swaplo +blocks +free +maxswap" >/dev/null]
899         then
900                 AC_DEFINE_UNQUOTED(SWAP_FORMAT,[" %*d %*s %*d,%*d %*d %*d %d %d"],[Format string for parsing swap output])
901                 echo "      using IRIX format"
902         elif [swap -l 2>/dev/null | egrep -i "^swapfile +dev +swaplo +blocks +free" >/dev/null]
903         then
904                 AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %*[[0-9,-]] %*d %d %d"],[Format string for parsing swap output])
905                 echo "      using Solaris format"
906         fi
907         EXTRAS="$EXTRAS check_swap"
908 elif [swapinfo -k 2>&1 | egrep -i "Device" >/dev/null]
909 then
910         echo "found swapinfo command"
911         AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
912         AC_PATH_PROG(PATH_TO_SWAP,swapinfo)
913         AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$PATH_TO_SWAP -k",[Path to swap/swapinfo binary, with any args])
914         if [swapinfo -k 2>/dev/null | egrep -i "^Device +1K-blocks +Used +Avail" >/dev/null]
915         then
916                 AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %d %*d %d"],[Format string for parsing swap output])
917                 echo "      using FreeBSD format"
918         fi
919         EXTRAS="$EXTRAS check_swap"
920 elif [swapinfo -d 2>/dev/null | egrep -i "^TYPE +AVAIL +USED +FREE" >/dev/null]
921 then
922         AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
923         AC_PATH_PROG(PATH_TO_SWAP,swapinfo)
924         AC_DEFINE_UNQUOTED(SWAP_COMMAND,"/bin/sh '$PATH_TO_SWAP -d | /bin/tail -l +2'",[Path to swap/swapinfo binary, with any args])
925         AC_DEFINE_UNQUOTED(SWAP_FORMAT,["%*s %d %*d %d"],[Format string for parsing swap output ])
926         echo "        using HP-UX format HP-UX"
927 fi
929 AC_PATH_PROG(PATH_TO_DIG,dig)
930 AC_DEFINE_UNQUOTED(PATH_TO_DIG,"$PATH_TO_DIG",[Path to dig command, if present])
931 if test -n "$PATH_TO_DIG"; then
932         EXTRAS="$EXTRAS check_dig"
933 fi
935 if test -f plugins/check_nt.c ; then
936   EXTRAS="$EXTRAS check_nt"
937 elif test -f ../plugins/check_nt.c ; then
938   EXTRAS="$EXTRAS check_nt"
939 fi
941 AC_TRY_COMPILE([#ifdef __STDC__
942 #include <stdio.h>
943 #include <stdlib.h>
944 #include <stdarg.h>
945 #else
946 #include <sys/types.h>
947 #include <stdio.h>
948 #include <varargs.h>
949 #endif],
950 [va_list args;],
951 [AC_MSG_RESULT(yes)],
952 [NEED_VA_LIST=-DNEED_VA_LIST AC_SUBST(NEED_VA_LIST) AC_MSG_RESULT(no)])
954 AC_SUBST(EXTRAS)
955 AC_SUBST(DEPLIBS)
957 AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"${VERSION}",[package version])
959 AC_OUTPUT(Makefile subst plugins/Makefile plugins-scripts/Makefile plugins-scripts/subst plugins-scripts/utils.pm plugins-scripts/utils.sh command.cfg test.pl,echo timestamp > plugins/stamp-h1;echo timestamp > plugins/stamp-h2;echo timestamp > plugins/stamp-h3;echo timestamp > plugins/stamp-h4;echo timestamp > plugins/stamp-h5;echo timestamp > plugins/stamp-h6;PATH=.:..:$PATH subst.sh command.cfg)