commit 49d7c9ce53daa13daae59eedceb07d28e06e4395 Author: Nick Mathewson nickm@torproject.org Date: Thu Jun 21 12:29:34 2018 -0400
Move more compiler-compatibility stuff into compat_compiler.h --- src/common/compat.h | 48 -------------------------------------------- src/include.am | 1 + src/lib/cc/compat_compiler.h | 48 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 48 deletions(-)
diff --git a/src/common/compat.h b/src/common/compat.h index 0cc257fc9..654f10390 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -78,54 +78,6 @@ size_t strlcat(char *dst, const char *src, size_t siz) ATTR_NONNULL((1,2)); size_t strlcpy(char *dst, const char *src, size_t siz) ATTR_NONNULL((1,2)); #endif
-#ifdef _MSC_VER -/** Casts the uint64_t value in <b>a</b> to the right type for an argument - * to printf. */ -#define U64_PRINTF_ARG(a) (a) -/** Casts the uint64_t* value in <b>a</b> to the right type for an argument - * to scanf. */ -#define U64_SCANF_ARG(a) (a) -/** Expands to a literal uint64_t-typed constant for the value <b>n</b>. */ -#define U64_LITERAL(n) (n ## ui64) -#define I64_PRINTF_ARG(a) (a) -#define I64_SCANF_ARG(a) (a) -#define I64_LITERAL(n) (n ## i64) -#else /* !(defined(_MSC_VER)) */ -#define U64_PRINTF_ARG(a) ((long long unsigned int)(a)) -#define U64_SCANF_ARG(a) ((long long unsigned int*)(a)) -#define U64_LITERAL(n) (n ## llu) -#define I64_PRINTF_ARG(a) ((long long signed int)(a)) -#define I64_SCANF_ARG(a) ((long long signed int*)(a)) -#define I64_LITERAL(n) (n ## ll) -#endif /* defined(_MSC_VER) */ - -#if defined(__MINGW32__) || defined(__MINGW64__) -#define MINGW_ANY -#endif - -#if defined(_MSC_VER) || defined(MINGW_ANY) -/** The formatting string used to put a uint64_t value in a printf() or - * scanf() function. See also U64_PRINTF_ARG and U64_SCANF_ARG. */ -#define U64_FORMAT "%I64u" -#define I64_FORMAT "%I64d" -#else /* !(defined(_MSC_VER) || defined(MINGW_ANY)) */ -#define U64_FORMAT "%llu" -#define I64_FORMAT "%lld" -#endif /* defined(_MSC_VER) || defined(MINGW_ANY) */ - -#if (SIZEOF_INTPTR_T == SIZEOF_INT) -#define INTPTR_T_FORMAT "%d" -#define INTPTR_PRINTF_ARG(x) ((int)(x)) -#elif (SIZEOF_INTPTR_T == SIZEOF_LONG) -#define INTPTR_T_FORMAT "%ld" -#define INTPTR_PRINTF_ARG(x) ((long)(x)) -#elif (SIZEOF_INTPTR_T == 8) -#define INTPTR_T_FORMAT I64_FORMAT -#define INTPTR_PRINTF_ARG(x) I64_PRINTF_ARG(x) -#else -#error Unknown: SIZEOF_INTPTR_T -#endif /* (SIZEOF_INTPTR_T == SIZEOF_INT) || ... */ - /** Represents an mmaped file. Allocated via tor_mmap_file; freed with * tor_munmap_file. */ typedef struct tor_mmap_t { diff --git a/src/include.am b/src/include.am index 974d572e2..d4b348b4e 100644 --- a/src/include.am +++ b/src/include.am @@ -1,5 +1,6 @@ include src/ext/include.am include src/lib/err/include.am +include src/lib/cc/include.am include src/lib/ctime/include.am include src/lib/compress/include.am include src/lib/trace/include.am diff --git a/src/lib/cc/compat_compiler.h b/src/lib/cc/compat_compiler.h index a9a326616..31e84bcc5 100644 --- a/src/lib/cc/compat_compiler.h +++ b/src/lib/cc/compat_compiler.h @@ -194,4 +194,52 @@ #define OP_EQ == #define OP_NE !=
+#ifdef _MSC_VER +/** Casts the uint64_t value in <b>a</b> to the right type for an argument + * to printf. */ +#define U64_PRINTF_ARG(a) (a) +/** Casts the uint64_t* value in <b>a</b> to the right type for an argument + * to scanf. */ +#define U64_SCANF_ARG(a) (a) +/** Expands to a literal uint64_t-typed constant for the value <b>n</b>. */ +#define U64_LITERAL(n) (n ## ui64) +#define I64_PRINTF_ARG(a) (a) +#define I64_SCANF_ARG(a) (a) +#define I64_LITERAL(n) (n ## i64) +#else /* !(defined(_MSC_VER)) */ +#define U64_PRINTF_ARG(a) ((long long unsigned int)(a)) +#define U64_SCANF_ARG(a) ((long long unsigned int*)(a)) +#define U64_LITERAL(n) (n ## llu) +#define I64_PRINTF_ARG(a) ((long long signed int)(a)) +#define I64_SCANF_ARG(a) ((long long signed int*)(a)) +#define I64_LITERAL(n) (n ## ll) +#endif /* defined(_MSC_VER) */ + +#if defined(__MINGW32__) || defined(__MINGW64__) +#define MINGW_ANY +#endif + +#if defined(_MSC_VER) || defined(MINGW_ANY) +/** The formatting string used to put a uint64_t value in a printf() or + * scanf() function. See also U64_PRINTF_ARG and U64_SCANF_ARG. */ +#define U64_FORMAT "%I64u" +#define I64_FORMAT "%I64d" +#else /* !(defined(_MSC_VER) || defined(MINGW_ANY)) */ +#define U64_FORMAT "%llu" +#define I64_FORMAT "%lld" +#endif /* defined(_MSC_VER) || defined(MINGW_ANY) */ + +#if (SIZEOF_INTPTR_T == SIZEOF_INT) +#define INTPTR_T_FORMAT "%d" +#define INTPTR_PRINTF_ARG(x) ((int)(x)) +#elif (SIZEOF_INTPTR_T == SIZEOF_LONG) +#define INTPTR_T_FORMAT "%ld" +#define INTPTR_PRINTF_ARG(x) ((long)(x)) +#elif (SIZEOF_INTPTR_T == 8) +#define INTPTR_T_FORMAT I64_FORMAT +#define INTPTR_PRINTF_ARG(x) I64_PRINTF_ARG(x) +#else +#error Unknown: SIZEOF_INTPTR_T +#endif /* (SIZEOF_INTPTR_T == SIZEOF_INT) || ... */ + #endif /* !defined(TOR_COMPAT_H) */
tor-commits@lists.torproject.org