From 1c4dd10d70ba9ed6dead6cc56cd0f572627cf619 Mon Sep 17 00:00:00 2001 From: Karl DeBisschop Date: Fri, 8 Nov 2002 07:20:05 +0000 Subject: patches required to build on solaris with asprintf and gettimeofday git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@174 f882894a-f735-0410-b71e-b25c423dba1c diff --git a/acconfig.h b/acconfig.h index 55fb9a2..b283039 100644 --- a/acconfig.h +++ b/acconfig.h @@ -1,15 +1,20 @@ #undef CGIURL #undef COMPILER_SUPPORTS_LL #undef DF_COMMAND +#undef HAVE_ASPRINTF #undef HAVE_C99_VSNPRINTF #undef HAVE_GETOPT_H #undef HAVE_GETOPT_LONG +#undef HAVE_GETTIMEOFDAY #undef HAVE_LONGLONG #undef HAVE_PROC_LOADAVG #undef HAVE_PROC_MEMINFO #undef HAVE_SSL +#undef HAVE_SNPRINTF #undef HAVE_SWAP #undef HAVE_VA_COPY +#undef HAVE_VASPRINTF +#undef HAVE_VSNPRINTF #undef NSLOOKUP_COMMAND #undef HOST_COMMAND #undef PACKAGE_VERSION diff --git a/configure.in b/configure.in index d759405..bdd4013 100644 --- a/configure.in +++ b/configure.in @@ -12,17 +12,6 @@ AM_CONFIG_HEADER(plugins/config.h plugins/common.h plugins/version.h plugins/net AC_PREFIX_DEFAULT(/usr/local/nagios) -#AC_DEFUN(AC_HAVE_DECL, -#[ -# AC_CACHE_CHECK([for $1 declaration],ac_cv_have_$1_decl,[ -# AC_TRY_COMPILE([$2],[int i = (int)$1], -# ac_cv_have_$1_decl=yes,ac_cv_have_$1_decl=no)]) -# if test x"$ac_cv_have_$1_decl" = x"yes"; then -# AC_DEFINE([HAVE_]translit([$1], [a-z], [A-Z])[_DECL],1,[Whether $1() is available]) -# fi -#]) - - dnl Figure out how to invoke "install" and what install options to use. AC_PROG_INSTALL @@ -338,6 +327,28 @@ if test x"$ac_cv_HAVE_C99_VSNPRINTF" = x"yes"; then AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Define if system has C99 compatible vsnprintf]) fi +#AC_HAVE_DECL(asprintf, [#include ]) +#AC_HAVE_DECL(vasprintf, [#include ]) +#AC_HAVE_DECL(vsnprintf, [#include ]) +#AC_HAVE_DECL(snprintf, [#include ]) + +AC_CHECK_FUNC(snprintf, + AC_DEFINE(HAVE_SNPRINTF,1,[Define if snprintf is present]), + LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a") +AC_CHECK_FUNC(vsnprintf, + AC_DEFINE(HAVE_VSNPRINTF,1,[Define if vsnprintf is present]), + LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a") +AC_CHECK_FUNC(vasprintf, + AC_DEFINE(HAVE_VASPRINTF,1,[Define if vasprintf is present]), + LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a") +AC_CHECK_FUNC(asprintf, + AC_DEFINE(HAVE_ASPRINTF,1,[Define if asprintf is present]), + LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a") + +if test x"$ac_cv_HAVE_SNPRINTF" = x"no" -o x"$ac_cv_HAVE_VSNPRINTF" = x"no" -o x"$ac_cv_HAVE_VASPRINTF" = x"no" -o x"$ac_cv_HAVE_ASPRINTF" = x"no"; then + LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a" +fi + dnl We used to not do long options unless a compatible lib was found dnl Now we provide code and make libgetopt if native is not suitable AC_MSG_CHECKING(for getopt_long) @@ -356,23 +367,16 @@ AC_TRY_COMPILE([#include AC_CHECK_FUNCS(getopt_long_only,,LIBS="$LIBS -lgetopt" DEPLIBS="$DEPLIBS libgetopt.a") -#AC_HAVE_DECL(asprintf, [#include ]) -#AC_HAVE_DECL(vasprintf, [#include ]) -#AC_HAVE_DECL(vsnprintf, [#include ]) -#AC_HAVE_DECL(snprintf, [#include ]) - -AC_CHECK_FUNC(snprintf,AC_DEFINE(HAVE_SNPRINTF,1,[Define if snprintf is present])) -AC_CHECK_FUNC(vsnprintf,AC_DEFINE(HAVE_VSNPRINTF,1,[Define if vsnprintf is present])) -AC_CHECK_FUNC(vasprintf,AC_DEFINE(HAVE_VASPRINTF,1,[Define if vasprintf is present])) -AC_CHECK_FUNC(asprintf,AC_DEFINE(HAVE_ASPRINTF,1,[Define if asprintf is present])) - -if test x"$ac_cv_HAVE_SNPRINTF" = x"no" -o x"$ac_cv_HAVE_VSNPRINTF" = x"no" -o x"$ac_cv_HAVE_VASPRINTF" = x"no" -o x"$ac_cv_HAVE_ASPRINTF" = x"no"; then - LIBS="$LIBS -lsnprintf" DEPLIBS="$DEPLIBS libsnprintf.a" -fi +AC_TRY_COMPILE([#include ], + [struct timeval *foo;], + [AC_DEFINE(HAVE_STRUCT_TIMEVAL,1,[Define if we have a timeval structure])]) +AC_TRY_COMPILE([#include ], + [gettimeofday(NULL, NULL);], + AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define if gettimeofday is found])) dnl Checks for library functions. -AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul gettimeofday) +AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul) AC_MSG_CHECKING(for type of socket size) AC_TRY_COMPILE([#include diff --git a/plugins/common.h.in b/plugins/common.h.in index 7281702..535ae4a 100644 --- a/plugins/common.h.in +++ b/plugins/common.h.in @@ -87,6 +87,22 @@ # define strtoul(a,b,c) (unsigned long)atol((a)) #endif +#ifndef HAVE_ASPRINTF +int asprintf(char **strp, const char *fmt, ...); +#endif + +#ifndef HAVE_VASPRINTF +/* int vasprintf(char **strp, const char *fmt, va_list ap); */ +#endif + +#ifndef HAVE_SNPRINTF +int snprintf(char *str, size_t size, const char *format, ...); +#endif + +#ifndef HAVE_VSNPRINTF +int vsnprintf(char *str, size_t size, const char *format, va_list ap); +#endif + /* * * Standard Values diff --git a/plugins/utils.c b/plugins/utils.c index a4519f2..bf1d204 100644 --- a/plugins/utils.c +++ b/plugins/utils.c @@ -44,6 +44,8 @@ int is_percentage (char *); int is_option (char *str); +double delta_time (struct timeval tv); + void strip (char *); char *strscpy (char *dest, const char *src); char *strscat (char *dest, const char *src); @@ -315,13 +317,21 @@ is_option (char *str) +#ifndef HAVE_GETTIMEOFDAY +int +gettimeofday (struct timeval *tv, struct timezone *tz) +{ + tv->tv_usec = 0; + tv->tv_sec = (long) time ((time_t) 0); +} +#endif + + double delta_time (struct timeval tv) { struct timeval now; - struct timezone tz; - double et; gettimeofday (&now, NULL); return ((double)(now.tv_sec - tv.tv_sec) + (double)(now.tv_usec - tv.tv_usec) / (double)1000000); @@ -366,8 +376,6 @@ strip (char *buffer) char * strscpy (char *dest, const char *src) { - size_t len; - if (src == NULL) return NULL; diff --git a/plugins/utils.h.in b/plugins/utils.h.in index d88d0cb..2b668f3 100644 --- a/plugins/utils.h.in +++ b/plugins/utils.h.in @@ -46,16 +46,15 @@ int is_percentage (char *); int is_option (char *); /* generalized timer that will do milliseconds if available */ -#ifndef HAVE_GETTIMEOFDAY +#ifndef HAVE_STRUCT_TIMEVAL struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; +#endif -#define gettimeofday (tvp,tz) {\ - tvp->tv_usec=0;\ - tvp->tv_sec=(long)time();\ -} +#ifndef HAVE_GETTIMEOFDAY +int gettimeofday(struct timeval *tv, struct timezone *tz); #endif double delta_time (struct timeval tv); -- cgit v0.10-9-g596f