summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFedja Beader <fedja@protonmail.ch>2025-04-15 21:51:30 +0000
committerFedja Beader <fedja@protonmail.ch>2025-04-15 21:51:30 +0000
commitebb8e8dfc6c0b902227c78b82819db060268eb63 (patch)
treedcc1497f50727c008dd9b9f2646e84942c785f73 /src
parent46e7eb648e9121b53c274b69ddb3301877fc480d (diff)
downloadmanaplus-ebb8e8dfc6c0b902227c78b82819db060268eb63.tar.gz
manaplus-ebb8e8dfc6c0b902227c78b82819db060268eb63.tar.bz2
manaplus-ebb8e8dfc6c0b902227c78b82819db060268eb63.tar.xz
manaplus-ebb8e8dfc6c0b902227c78b82819db060268eb63.zip
logger.h: de-duplicate __attribute__(__format__(..)) ifdefs
Squashed with: * Rename - it's member shift, not printf shift * So it seems that CILK PLUS either ignores the this argument of member functions or already considers it on its own. Besides.. is CILK PLUS even relevant today? Whatever.. Plus, deduplicate some more functions ..should this attribute be moved to its own file? * Correct indents * logger.h: de-duplicate __attribute__(__format__(..)) **** mana/plus!163
Diffstat (limited to 'src')
-rw-r--r--src/localconsts.h34
-rw-r--r--src/logger.h59
-rw-r--r--src/utils/stringutils.h13
-rw-r--r--src/utils/xml/libxml.cpp9
4 files changed, 48 insertions, 67 deletions
diff --git a/src/localconsts.h b/src/localconsts.h
index a120ed9d7..6e2122bcf 100644
--- a/src/localconsts.h
+++ b/src/localconsts.h
@@ -171,6 +171,40 @@
#define gnu_printf printf
#endif // __clang__
+/*
+ * A_FORMAT_PRINTF: Proxy for printf-like attribute tagging,
+ * All argument positions start indexed by 1
+ *
+ * isMember true if member function. The below will shift by one
+ * if required by toolchain.
+ * fmtIndex: position of format string in argument list
+ * firstArgIndex: position of first optional argument to format.
+ */
+#ifdef BAD_CILKPLUS
+#define A_FORMAT_MEMBER_SHIFT 0
+#else
+#define A_FORMAT_MEMBER_SHIFT 1
+#endif
+
+// idk how to clean this up
+#ifdef __GNUC__
+ #ifdef __OpenBSD__
+ #define A_FORMAT_PRINTF_FUNC printf
+ #else
+ #define A_FORMAT_PRINTF_FUNC gnu_printf
+ #endif
+#else
+ #define A_FORMAT_PRINTF_FUNC gnu_printf
+#endif
+
+#define A_FORMAT_PRINTF(isMember, fmtIndex, firstArgIndex) \
+ __attribute__((__format__( \
+ A_FORMAT_PRINTF_FUNC, \
+ ((fmtIndex) + ((isMember) ? A_FORMAT_MEMBER_SHIFT : 0)), \
+ ((firstArgIndex) + ((isMember) ? A_FORMAT_MEMBER_SHIFT : 0)) \
+ )))
+
+
#ifdef ADVGCC
#define const2 const
diff --git a/src/logger.h b/src/logger.h
index b8c48e429..da165189d 100644
--- a/src/logger.h
+++ b/src/logger.h
@@ -91,64 +91,23 @@ class Logger final
/**
* Enters a message in the log. The message will be timestamped.
*/
- void log(const char *const log_text, ...) A_NONNULL(2)
-#ifdef __GNUC__
-#ifdef __OpenBSD__
-
- __attribute__((__format__(printf, 2, 3)))
-#else // __OpenBSD__
-
-#ifdef BAD_CILKPLUS
- __attribute__((__format__(gnu_printf, 1, 2)))
-#else // BAD_CILKPLUS
-
- __attribute__((__format__(gnu_printf, 2, 3)))
-#endif // BAD_CILKPLUS
-
-#endif // __OpenBSD__
-#endif // __GNUC__
- ;
+ void log(const char *const log_text, ...)
+ A_NONNULL(2)
+ A_FORMAT_PRINTF(true, 1, 2);
/**
* Enters a message in the log. The message will be timestamped.
*/
- void assertLog(const char *const log_text, ...) A_NONNULL(2)
-#ifdef __GNUC__
-#ifdef __OpenBSD__
-
- __attribute__((__format__(printf, 2, 3)))
-#else // __OpenBSD__
-
-#ifdef BAD_CILKPLUS
- __attribute__((__format__(gnu_printf, 1, 2)))
-#else // BAD_CILKPLUS
-
- __attribute__((__format__(gnu_printf, 2, 3)))
-#endif // BAD_CILKPLUS
-
-#endif // __OpenBSD__
-#endif // __GNUC__
- ;
+ void assertLog(const char *const log_text, ...)
+ A_NONNULL(2)
+ A_FORMAT_PRINTF(true, 1, 2);
/**
* Enters a message in the log (thread safe).
*/
- void log_r(const char *const log_text, ...) A_NONNULL(2)
-#ifdef __GNUC__
-#ifdef __OpenBSD__
- __attribute__((__format__(printf, 2, 3)))
-#else // __OpenBSD__
-
-#ifdef BAD_CILKPLUS
- __attribute__((__format__(gnu_printf, 1, 2)))
-#else // BAD_CILKPLUS
-
- __attribute__((__format__(gnu_printf, 2, 3)))
-#endif // BAD_CILKPLUS
-
-#endif // __OpenBSD__
-#endif // __GNUC__
- ;
+ void log_r(const char *const log_text, ...)
+ A_NONNULL(2)
+ A_FORMAT_PRINTF(true, 1, 2);
/**
* Enters a message in the log. The message will be timestamped.
diff --git a/src/utils/stringutils.h b/src/utils/stringutils.h
index b5eca16ab..6d33c3830 100644
--- a/src/utils/stringutils.h
+++ b/src/utils/stringutils.h
@@ -100,15 +100,10 @@ const char *ipToString(const uint32_t address) A_WARN_UNUSED;
/**
* A safe version of sprintf that returns a std::string of the result.
*/
-std::string strprintf(const char *const format, ...) A_NONNULL(1) A_WARN_UNUSED
-#ifdef __GNUC__
-#ifdef __OpenBSD__
- __attribute__((__format__(printf, 1, 2)))
-#else // __OpenBSD__
- __attribute__((__format__(gnu_printf, 1, 2)))
-#endif // __OpenBSD__
-#endif // __GNUC__
-;
+std::string strprintf(const char *const format, ...)
+ A_NONNULL(1)
+ A_WARN_UNUSED
+ A_FORMAT_PRINTF(false, 1, 2);
/**
* Removes colors from a string
diff --git a/src/utils/xml/libxml.cpp b/src/utils/xml/libxml.cpp
index cc49a6012..97d2db58c 100644
--- a/src/utils/xml/libxml.cpp
+++ b/src/utils/xml/libxml.cpp
@@ -44,14 +44,7 @@ namespace
} // namespace
static void xmlErrorLogger(void *ctx A_UNUSED, const char *msg A_UNUSED, ...)
-#ifdef __GNUC__
-#ifdef __OpenBSD__
- __attribute__((__format__(printf, 2, 3)))
-#else // __OpenBSD__
- __attribute__((__format__(gnu_printf, 2, 3)))
-#endif // __OpenBSD__
-#endif // __GNUC__
-;
+ A_FORMAT_PRINTF(false, 2, 3);
static void xmlErrorLogger(void *ctx A_UNUSED, const char *msg, ...)
{