return SC_OK;
}
+void SCLog(int x, const char *file, const char *func, const int line,
+ const char *fmt, ...)
+{
+ if (sc_log_global_log_level >= x &&
+ (sc_log_fg_filters_present == 0 ||
+ SCLogMatchFGFilterWL(file, func, line) == 1 ||
+ SCLogMatchFGFilterBL(file, func, line) == 1) &&
+ (sc_log_fd_filters_present == 0 ||
+ SCLogMatchFDFilter(func) == 1))
+ {
+ char msg[SC_LOG_MAX_LOG_MSG_LEN];
+ va_list ap;
+ va_start(ap, fmt);
+ vsnprintf(msg, sizeof(msg), fmt, ap);
+ va_end(ap);
+ SCLogMessage(x, file, line, func, SC_OK, msg);
+ }
+}
+
+void SCLogErr(int x, const char *file, const char *func, const int line,
+ const int err, const char *fmt, ...)
+{
+ if (sc_log_global_log_level >= x &&
+ (sc_log_fg_filters_present == 0 ||
+ SCLogMatchFGFilterWL(file, func, line) == 1 ||
+ SCLogMatchFGFilterBL(file, func, line) == 1) &&
+ (sc_log_fd_filters_present == 0 ||
+ SCLogMatchFDFilter(func) == 1))
+ {
+ char msg[SC_LOG_MAX_LOG_MSG_LEN];
+ va_list ap;
+ va_start(ap, fmt);
+ vsnprintf(msg, sizeof(msg), fmt, ap);
+ va_end(ap);
+ SCLogMessage(x, file, line, func, err, msg);
+ }
+}
+
/**
* \brief Returns whether debug messages are enabled to be logged or not
*
extern int sc_log_module_cleaned;
-#define SCLog(x, file, func, line, ...) \
- do { \
- if (sc_log_global_log_level >= x && \
- (sc_log_fg_filters_present == 0 || \
- SCLogMatchFGFilterWL(file, func, line) == 1 || \
- SCLogMatchFGFilterBL(file, func, line) == 1) && \
- (sc_log_fd_filters_present == 0 || \
- SCLogMatchFDFilter(func) == 1)) \
- { \
- char _sc_log_msg[SC_LOG_MAX_LOG_MSG_LEN]; \
- \
- int _sc_log_ret = snprintf(_sc_log_msg, SC_LOG_MAX_LOG_MSG_LEN, __VA_ARGS__); \
- if (_sc_log_ret == SC_LOG_MAX_LOG_MSG_LEN) \
- _sc_log_msg[SC_LOG_MAX_LOG_MSG_LEN - 1] = '\0'; \
- \
- SCLogMessage(x, file, line, func, SC_OK, _sc_log_msg); \
- } \
- } while(0)
-
-#define SCLogErr(x, file, func, line, err, ...) \
- do { \
- if (sc_log_global_log_level >= x && \
- (sc_log_fg_filters_present == 0 || \
- SCLogMatchFGFilterWL(file, func, line) == 1 || \
- SCLogMatchFGFilterBL(file, func, line) == 1) && \
- (sc_log_fd_filters_present == 0 || \
- SCLogMatchFDFilter(func) == 1)) \
- { \
- char _sc_log_msg[SC_LOG_MAX_LOG_MSG_LEN]; \
- \
- int _sc_log_ret = snprintf(_sc_log_msg, SC_LOG_MAX_LOG_MSG_LEN, __VA_ARGS__); \
- if (_sc_log_ret == SC_LOG_MAX_LOG_MSG_LEN) \
- _sc_log_msg[SC_LOG_MAX_LOG_MSG_LEN - 1] = '\0'; \
- \
- SCLogMessage(x, file, line, func, err, _sc_log_msg); \
- } \
- } while(0)
+void SCLog(int x, const char *file, const char *func, const int line,
+ const char *fmt, ...) ATTR_FMT_PRINTF(5,6);
+void SCLogErr(int x, const char *file, const char *func, const int line,
+ const int err, const char *fmt, ...) ATTR_FMT_PRINTF(6,7);
/**
* \brief Macro used to log INFORMATIONAL messages.