Mercurial > hg > dmlib
comparison src/dmlib.h @ 2385:5ffc48a0bebe
Conditionally define DM_ATTR_PRINTF_FMT(xstart, xend) instead of using
__attribute__ ((__format__ (__printf__, (xstart), (xend)))) directly.
Wrap it in an #ifdef check for __MINGW64__ as there are some annoying
issues on that side, which we just suppress now.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 09 Jan 2020 18:51:22 +0200 |
parents | 43e39d9ec42f |
children | 835b231d8083 |
comparison
equal
deleted
inserted
replaced
2384:36edd316184a | 2385:5ffc48a0bebe |
---|---|
40 # if defined(__LP64__) || defined(_LP64) || defined(__WIN64) || defined(_WIN64) | 40 # if defined(__LP64__) || defined(_LP64) || defined(__WIN64) || defined(_WIN64) |
41 # define DM_ARCH 64 | 41 # define DM_ARCH 64 |
42 # else | 42 # else |
43 # define DM_ARCH 32 | 43 # define DM_ARCH 32 |
44 # endif | 44 # endif |
45 #endif | |
46 | |
47 | |
48 // Kludge, as MinGW64 cross-compiler does not like certain printf() format specifiers | |
49 #if defined(__MINGW64__) | |
50 # define DM_ATTR_PRINTF_FMT(xstart, xend) | |
51 #else | |
52 # define DM_ATTR_PRINTF_FMT(xstart, xend) __attribute__ ((__format__ (__printf__, (xstart), (xend)))) | |
45 #endif | 53 #endif |
46 | 54 |
47 | 55 |
48 // Do we have a valid arch? | 56 // Do we have a valid arch? |
49 // If so, set some printf specifiers | 57 // If so, set some printf specifiers |
372 void dmInitProg(char *name, char *desc, char *version, char *author, char *license); | 380 void dmInitProg(char *name, char *desc, char *version, char *author, char *license); |
373 void dmPrintBanner(FILE *outFile, const char *name, const char *usage); | 381 void dmPrintBanner(FILE *outFile, const char *name, const char *usage); |
374 | 382 |
375 void dmMsgVA(int level, const char *fmt, va_list ap); | 383 void dmMsgVA(int level, const char *fmt, va_list ap); |
376 void dmMsg(int level, const char *fmt, ...) | 384 void dmMsg(int level, const char *fmt, ...) |
377 __attribute__ ((__format__ (__printf__, 2, 3))); | 385 DM_ATTR_PRINTF_FMT(2, 3); |
378 void dmPrintVA(int level, const char *fmt, va_list ap); | 386 void dmPrintVA(int level, const char *fmt, va_list ap); |
379 void dmPrint(int level, const char *fmt, ...) | 387 void dmPrint(int level, const char *fmt, ...) |
380 __attribute__ ((__format__ (__printf__, 2, 3))); | 388 DM_ATTR_PRINTF_FMT(2, 3); |
381 | 389 |
382 int dmErrorVA(const int error, const char *fmt, va_list); | 390 int dmErrorVA(const int error, const char *fmt, va_list); |
383 int dmError(const int error, const char *fmt, ...) | 391 int dmError(const int error, const char *fmt, ...) |
384 __attribute__ ((__format__ (__printf__, 2, 3))); | 392 DM_ATTR_PRINTF_FMT(2, 3); |
385 void dmErrorMsg(const char *fmt, ...) | 393 void dmErrorMsg(const char *fmt, ...) |
386 __attribute__ ((__format__ (__printf__, 1, 2))); | 394 DM_ATTR_PRINTF_FMT(1, 2); |
387 int dmGetErrno(); | 395 int dmGetErrno(); |
388 const char *dmErrorStr(const int error); | 396 const char *dmErrorStr(const int error); |
389 | 397 |
390 #ifdef DM_DEBUG | 398 #ifdef DM_DEBUG |
391 # define dmErrorDBG dmError | 399 # define dmErrorDBG dmError |