diff options
| author | Peter Wu <peter@lekensteyn.nl> | 2014-10-31 12:32:39 +0100 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2014-11-03 09:10:54 +0100 | 
| commit | aebfd4cfbfb684a27eade9180498daf47d4789c6 (patch) | |
| tree | 942c90efba6d5cbcc46e899cd4e2f02ef527d4ae /CMake | |
| parent | b2bb51f3396de4f4ef97d4c129bc42e432f8a695 (diff) | |
cmake: fix gethostby{addr,name}_r in CurlTests
This patch cleans up the automatically-generated (?) code and fixes one
case that will always fail due to syntax error.
HAVE_GETHOSTBYADDR_R_5_REENTRANT always failed because of a trailing
character ("int length;q"). Several parameter type and unused variable
warnings popped up. This causes a detection failure with -Werror.
Observe that the REENTRANT cases are exactly the same as their
non-REENTRANT cases except for a `_REENTRANT` macro definition.
Merge all these pieces and build one big main function with different
cases, but reusing variables where logical.
For the cases where the parameters where NULL, I looked at
lib/hostip4.c to get an idea of the parameters types.
void-cast variables such as 'rc' to avoid -Wuninitialized errors.
Signed-off-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'CMake')
| -rw-r--r-- | CMake/CurlTests.c | 316 | 
1 files changed, 70 insertions, 246 deletions
diff --git a/CMake/CurlTests.c b/CMake/CurlTests.c index 199871aa6..04d5e7e46 100644 --- a/CMake/CurlTests.c +++ b/CMake/CurlTests.c @@ -5,7 +5,7 @@   *                            | (__| |_| |  _ <| |___   *                             \___|\___/|_| \_\_____|   * - * Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al.   *   * This software is licensed as described in the file COPYING, which   * you should have received as part of this distribution. The terms @@ -71,264 +71,88 @@ main ()  }  #endif -#ifdef HAVE_GETHOSTBYADDR_R_5 +/* tests for gethostbyaddr_r or gethostbyname_r */ +#if defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) || \ +    defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) || \ +    defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) || \ +    defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) || \ +    defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \ +    defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) +#   define _REENTRANT +    /* no idea whether _REENTRANT is always set, just invent a new flag */ +#   define TEST_GETHOSTBYFOO_REENTRANT +#endif +#if defined(HAVE_GETHOSTBYADDR_R_5) || \ +    defined(HAVE_GETHOSTBYADDR_R_7) || \ +    defined(HAVE_GETHOSTBYADDR_R_8) || \ +    defined(HAVE_GETHOSTBYNAME_R_3) || \ +    defined(HAVE_GETHOSTBYNAME_R_5) || \ +    defined(HAVE_GETHOSTBYNAME_R_6) || \ +    defined(TEST_GETHOSTBYFOO_REENTRANT)  #include <sys/types.h>  #include <netdb.h> -int -main () -{ - -char * address; -int length; -int type; -struct hostent h; -struct hostent_data hdata; -int rc; -#ifndef gethostbyaddr_r -  (void)gethostbyaddr_r; -#endif -rc = gethostbyaddr_r(address, length, type, &h, &hdata); -  ; -  return 0; -} -#endif -#ifdef HAVE_GETHOSTBYADDR_R_5_REENTRANT -#define _REENTRANT -#include <sys/types.h> -#include <netdb.h> -int -main () -{ - -char * address; -int length;q -int type; -struct hostent h; -struct hostent_data hdata; -int rc; -#ifndef gethostbyaddr_r -  (void)gethostbyaddr_r; -#endif -rc = gethostbyaddr_r(address, length, type, &h, &hdata); -  ; -  return 0; -} -#endif -#ifdef HAVE_GETHOSTBYADDR_R_7 -#include <sys/types.h> -#include <netdb.h> -int -main () -{ - -char * address; -int length; -int type; -struct hostent h; -char buffer[8192]; -int h_errnop; -struct hostent * hp; - -#ifndef gethostbyaddr_r -  (void)gethostbyaddr_r; -#endif -hp = gethostbyaddr_r(address, length, type, &h, -                     buffer, 8192, &h_errnop); -  ; -  return 0; -} -#endif -#ifdef HAVE_GETHOSTBYADDR_R_7_REENTRANT -#define _REENTRANT -#include <sys/types.h> -#include <netdb.h> -int -main () +int main(void)  { - -char * address; -int length; -int type; -struct hostent h; -char buffer[8192]; -int h_errnop; -struct hostent * hp; - -#ifndef gethostbyaddr_r -  (void)gethostbyaddr_r; -#endif -hp = gethostbyaddr_r(address, length, type, &h, -                     buffer, 8192, &h_errnop); -  ; -  return 0; -} +  char *address = "example.com"; +  int length = 0; +  int type = 0; +  struct hostent h; +  int rc = 0; +#if defined(HAVE_GETHOSTBYADDR_R_5) || \ +    defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) || \ +    \ +    defined(HAVE_GETHOSTBYNAME_R_3) || \ +    defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) +  struct hostent_data hdata; +#elif defined(HAVE_GETHOSTBYADDR_R_7) || \ +      defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) || \ +      defined(HAVE_GETHOSTBYADDR_R_8) || \ +      defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) || \ +      \ +      defined(HAVE_GETHOSTBYNAME_R_5) || \ +      defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) || \ +      defined(HAVE_GETHOSTBYNAME_R_6) || \ +      defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) +  char buffer[8192]; +  int h_errnop; +  struct hostent *hp;  #endif -#ifdef HAVE_GETHOSTBYADDR_R_8 -#include <sys/types.h> -#include <netdb.h> -int -main () -{ - -char * address; -int length; -int type; -struct hostent h; -char buffer[8192]; -int h_errnop; -struct hostent * hp; -int rc; - -#ifndef gethostbyaddr_r -  (void)gethostbyaddr_r; -#endif -rc = gethostbyaddr_r(address, length, type, &h, -                     buffer, 8192, &hp, &h_errnop); -  ; -  return 0; -} -#endif -#ifdef HAVE_GETHOSTBYADDR_R_8_REENTRANT -#define _REENTRANT -#include <sys/types.h> -#include <netdb.h> -int -main () -{ - -char * address; -int length; -int type; -struct hostent h; -char buffer[8192]; -int h_errnop; -struct hostent * hp; -int rc;  #ifndef gethostbyaddr_r    (void)gethostbyaddr_r;  #endif -rc = gethostbyaddr_r(address, length, type, &h, -                     buffer, 8192, &hp, &h_errnop); -  ; -  return 0; -} -#endif -#ifdef HAVE_GETHOSTBYNAME_R_3 -#include <string.h> -#include <sys/types.h> -#include <netdb.h> -#undef NULL -#define NULL (void *)0 - -int -main () -{ - -struct hostent_data data; -#ifndef gethostbyname_r -  (void)gethostbyname_r; -#endif -gethostbyname_r(NULL, NULL, NULL); -  ; -  return 0; -} -#endif -#ifdef HAVE_GETHOSTBYNAME_R_3_REENTRANT -#define _REENTRANT -#include <string.h> -#include <sys/types.h> -#include <netdb.h> -#undef NULL -#define NULL (void *)0 - -int -main () -{ - -struct hostent_data data; -#ifndef gethostbyname_r -  (void)gethostbyname_r; -#endif -gethostbyname_r(NULL, NULL, NULL); -  ; -  return 0; -} -#endif -#ifdef HAVE_GETHOSTBYNAME_R_5 -#include <sys/types.h> -#include <netinet/in.h> -#include <netdb.h> -#undef NULL -#define NULL (void *)0 - -int -main () -{ -#ifndef gethostbyname_r -  (void)gethostbyname_r; -#endif -gethostbyname_r(NULL, NULL, NULL, 0, NULL); -  ; -  return 0; -} -#endif -#ifdef HAVE_GETHOSTBYNAME_R_5_REENTRANT -#define _REENTRANT -#include <sys/types.h> -#include <netdb.h> -#undef NULL -#define NULL (void *)0 -int -main () -{ - -#ifndef gethostbyname_r -  (void)gethostbyname_r; -#endif -gethostbyname_r(NULL, NULL, NULL, 0, NULL); -  ; +#if   defined(HAVE_GETHOSTBYADDR_R_5) || \ +      defined(HAVE_GETHOSTBYADDR_R_5_REENTRANT) +  rc = gethostbyaddr_r(address, length, type, &h, &hdata); +#elif defined(HAVE_GETHOSTBYADDR_R_7) || \ +      defined(HAVE_GETHOSTBYADDR_R_7_REENTRANT) +  hp = gethostbyaddr_r(address, length, type, &h, buffer, 8192, &h_errnop); +  (void)hp; +#elif defined(HAVE_GETHOSTBYADDR_R_8) || \ +      defined(HAVE_GETHOSTBYADDR_R_8_REENTRANT) +  rc = gethostbyaddr_r(address, length, type, &h, buffer, 8192, &hp, &h_errnop); +#endif + +#if   defined(HAVE_GETHOSTBYNAME_R_3) || \ +      defined(HAVE_GETHOSTBYNAME_R_3_REENTRANT) +  rc = gethostbyname_r(address, &h, &hdata); +#elif defined(HAVE_GETHOSTBYNAME_R_5) || \ +      defined(HAVE_GETHOSTBYNAME_R_5_REENTRANT) +  rc = gethostbyname_r(address, &h, buffer, 8192, 0, &h_errnop); +  (void)hp; /* not used for test */ +#elif defined(HAVE_GETHOSTBYNAME_R_6) || \ +      defined(HAVE_GETHOSTBYNAME_R_6_REENTRANT) +  rc = gethostbyname_r(address, &h, buffer, 8192, &hp, &h_errnop); +#endif + +  (void)length; +  (void)type; +  (void)rc;    return 0;  }  #endif -#ifdef HAVE_GETHOSTBYNAME_R_6 -#include <sys/types.h> -#include <netdb.h> -#undef NULL -#define NULL (void *)0 - -int -main () -{ -#ifndef gethostbyname_r -  (void)gethostbyname_r; -#endif -gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL); -  ; -  return 0; -} -#endif -#ifdef HAVE_GETHOSTBYNAME_R_6_REENTRANT -#define _REENTRANT -#include <sys/types.h> -#include <netdb.h> -#undef NULL -#define NULL (void *)0 - -int -main () -{ - -#ifndef gethostbyname_r -  (void)gethostbyname_r; -#endif -gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL); -  ; -  return 0; -} -#endif  #ifdef HAVE_SOCKLEN_T  #ifdef _WIN32  #include <ws2tcpip.h>  | 
