SET(sarg_VERSION 2)
SET(sarg_REVISION "3.2-pre2")
SET(sarg_BUILD "")
-SET(sarg_BUILDDATE "Aug-01-2011")
+SET(sarg_BUILDDATE "Aug-04-2011")
INCLUDE(AddFileDependencies)
INCLUDE(CheckIncludeFile)
INCLUDE(CheckTypeSize)
INCLUDE(CheckSymbolExists)
INCLUDE(CheckCCompilerFlag)
+INCLUDE(CheckStructHasMember)
DEFINE_PROPERTY(GLOBAL PROPERTY enable-htmldir BRIEF_DOCS "--enable-htmldir=htmldir"
FULL_DOCS "Select htmldir as the root of your WWW documents")
CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
CHECK_INCLUDE_FILE(sys/dirent.h HAVE_SYS_DIRENT_H)
CHECK_INCLUDE_FILE(dirent.h HAVE_DIRENT_H)
+CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
CHECK_INCLUDE_FILE(sys/socket.h HAVE_SYS_SOCKET_H)
CHECK_INCLUDE_FILE(netdb.h HAVE_NETDB_H)
CHECK_INCLUDE_FILE(arpa/inet.h HAVE_ARPA_INET_H)
-CHECK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
CHECK_INCLUDE_FILE(netinet/in.h HAVE_NETINET_H)
CHECK_INCLUDE_FILE(sys/stat.h HAVE_SYS_STAT_H)
CHECK_INCLUDE_FILE(ctype.h HAVE_CTYPE_H)
CHECK_FUNCTION_EXISTS(getaddrinfo HAVE_GETADDRINFO)
CHECK_FUNCTION_EXISTS(inet_aton HAVE_INET_ATON)
+CHECK_STRUCT_HAS_MEMBER("struct sockaddr_storage" ss_len sys/socket.h HAVE_SOCKADDR_SA_LEN)
+
# Find gd
CHECK_INCLUDE_FILE(gd.h HAVE_GD_H)
IF(HAVE_GD_H)
fi
AC_CHECK_HEADERS(stdio.h stdlib.h string.h strings.h sys/time.h time.h unistd.h sys/dirent.h \
- dirent.h sys/socket.h netdb.h arpa/inet.h sys/types.h netinet/in.h sys/stat.h \
+ dirent.h sys/types.h sys/socket.h netdb.h arpa/inet.h netinet/in.h sys/stat.h \
ctype.h gd.h gdfontl.h gdfontt.h gdfonts.h gdfontmb.h gdfontg.h iconv.h \
errno.h sys/resource.h sys/wait.h stdarg.h inttypes.h limits.h locale.h \
execinfo.h ldap.h math.h libintl.h libgen.h stdbool.h getopt.h)
AC_CHECK_FUNCS(getnameinfo)
AC_CHECK_FUNCS(getaddrinfo)
+dnl check for structure members
+AC_CHECK_MEMBER([struct sockaddr_storage.ss_len],[AC_DEFINE([HAVE_SOCKADDR_SA_LEN],1,[ss_len in sockaddr_storage])])
+
dnl check for the rlim_t size
AC_CHECK_SIZEOF(rlim_t,1,[#if HAVE_SYS_RESOURCE_H
#include <sys/resource.h>
#cmakedefine HAVE_GETADDRINFO
#cmakedefine HAVE_INET_ATON
+#cmakedefine HAVE_SOCKADDR_SA_LEN
+
#define RLIM_STRING "@RLIM_STRING@"
#define ICONV_CONST @ICONV_CONST@
-#define VERSION PACKAGE_VERSION" Aug-01-2011"
+#define VERSION PACKAGE_VERSION" Aug-04-2011"
#define PGM PACKAGE_NAME
#define URL "http://sarg.sourceforge.net"
{
#ifdef HAVE_GETNAMEINFO
struct sockaddr_storage sa;
+ int sockaddr_size;
char host[NI_MAXHOST];
int n1,n2,n3,n4,next=0;
int error;
struct sockaddr_in *s4=(struct sockaddr_in *)&sa;
if (inet_pton(AF_INET,ip,&s4->sin_addr)!=1) return;
sa.ss_family=AF_INET;
+ sockaddr_size=sizeof(*s4);
} else {
struct sockaddr_in6 *s6=(struct sockaddr_in6 *)&sa;
if (inet_pton(AF_INET6,ip,&s6->sin6_addr)!=1) return;
sa.ss_family=AF_INET6;
+ sockaddr_size=sizeof(*s6);
}
- error=getnameinfo((struct sockaddr *)&sa,sizeof(sa),host,sizeof(host),NULL,0,0);
+#ifdef HAVE_SOCKADDR_SA_LEN
+ sa.ss_len=sockaddr_size;
+#endif
+ error=getnameinfo((struct sockaddr *)&sa,sockaddr_size,host,sizeof(host),NULL,0,0);
if (error==EAI_AGAIN) {
/*
This is a temporary failure. According to the man page we should try again but