From bab721cb1cad87e01b3c240821be47755bdc4bac Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Sun, 4 Sep 2011 17:09:36 +0200 Subject: [PATCH] setup_once.h cleanup and sync --- config-win32.h | 16 ++++++++++++++++ setup_once.h | 37 +++++++++++++++++++++++-------------- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/config-win32.h b/config-win32.h index 48ce512f..1245ba2a 100644 --- a/config-win32.h +++ b/config-win32.h @@ -365,5 +365,21 @@ #define HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID 1 #endif +/* ---------------------------------------------------------------- */ +/* Win CE */ +/* ---------------------------------------------------------------- */ + +/* FIXME: A proper config-win32ce.h should be created to hold these */ + +/* + * System error codes for Windows CE + */ + +#if defined(_WIN32_WCE) && !defined(HAVE_ERRNO_H) +# define ENOENT ERROR_FILE_NOT_FOUND +# define ESRCH ERROR_PATH_NOT_FOUND +# define ENOMEM ERROR_NOT_ENOUGH_MEMORY +# define ENOSPC ERROR_INVALID_PARAMETER +#endif #endif /* HEADER_CARES_CONFIG_WIN32_H */ diff --git a/setup_once.h b/setup_once.h index a333f54a..48cb9b2b 100644 --- a/setup_once.h +++ b/setup_once.h @@ -299,6 +299,27 @@ struct timeval { #endif +/* + * Macro WHILE_FALSE may be used to build single-iteration do-while loops, + * avoiding compiler warnings. Mostly intended for other macro definitions. + */ + +#define WHILE_FALSE while(0) + +#if defined(_MSC_VER) && !defined(__POCC__) +# undef WHILE_FALSE +# if (_MSC_VER < 1500) +# define WHILE_FALSE while(1, 0) +# else +# define WHILE_FALSE \ +__pragma(warning(push)) \ +__pragma(warning(disable:4127)) \ +while(0) \ +__pragma(warning(pop)) +# endif +#endif + + /* * Typedef to 'int' if sig_atomic_t is not an available 'typedefed' type. */ @@ -336,7 +357,7 @@ typedef int sig_atomic_t; #ifdef DEBUGBUILD #define DEBUGF(x) x #else -#define DEBUGF(x) do { } while (0) +#define DEBUGF(x) do { } WHILE_FALSE #endif @@ -347,7 +368,7 @@ typedef int sig_atomic_t; #if defined(DEBUGBUILD) && defined(HAVE_ASSERT_H) #define DEBUGASSERT(x) assert(x) #else -#define DEBUGASSERT(x) do { } while (0) +#define DEBUGASSERT(x) do { } WHILE_FALSE #endif @@ -459,18 +480,6 @@ typedef int sig_atomic_t; #endif -/* - * System error codes for Windows CE - */ - -#if defined(WIN32) && !defined(HAVE_ERRNO_H) -#define ENOENT ERROR_FILE_NOT_FOUND -#define ESRCH ERROR_PATH_NOT_FOUND -#define ENOMEM ERROR_NOT_ENOUGH_MEMORY -#define ENOSPC ERROR_INVALID_PARAMETER -#endif - - /* * Actually use __32_getpwuid() on 64-bit VMS builds for getpwuid() */