]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
parser-helper: Make parser_helper_log a function
authorTobias Brunner <tobias@strongswan.org>
Wed, 14 May 2014 15:19:41 +0000 (17:19 +0200)
committerTobias Brunner <tobias@strongswan.org>
Thu, 15 May 2014 09:28:10 +0000 (11:28 +0200)
src/libstrongswan/utils/parser_helper.c
src/libstrongswan/utils/parser_helper.h

index 5093166651192d275fed64e25ccd6c1d38088749..403cca92ba1ba671f70c08734c73547b30113ab9 100644 (file)
@@ -15,6 +15,7 @@
 
 #include <limits.h>
 #include <ctype.h>
+#include <stdarg.h>
 
 #include "parser_helper.h"
 
@@ -196,6 +197,32 @@ METHOD(parser_helper_t, destroy, void,
        free(this);
 }
 
+/**
+ * Described in header
+ */
+void parser_helper_log(int level, parser_helper_t *ctx, char *fmt, ...)
+{
+       parser_helper_file_t *file;
+       char msg[8192];
+       va_list args;
+       int line;
+
+       va_start(args, fmt);
+       vsnprintf(msg, sizeof(msg), fmt, args);
+       va_end(args);
+
+       file = ctx->file_current(ctx);
+       line = ctx->get_lineno ? ctx->get_lineno(ctx->scanner) : 0;
+       if (file)
+       {
+               dbg(DBG_CFG, level, "%s:%d: %s", file->name, line, msg);
+       }
+       else
+       {
+               dbg(DBG_CFG, level, "%s", msg);
+       }
+}
+
 /**
  * Described in header
  */
index 741582d2c59a15a98d5d8022605d8d2c1fa2ca7b..6a2c26c8e105c192550cd013e16bec9041e66ebe 100644 (file)
@@ -148,15 +148,7 @@ struct parser_helper_file_t {
  * @param fmt          error message format
  * @param ...          additional arguments
  */
-#define parser_helper_log(level, ctx, fmt, ...) ({ \
-       parser_helper_file_t *_file = (ctx)->file_current(ctx); \
-       int _line = (ctx)->get_lineno ? (ctx)->get_lineno((ctx)->scanner) : 0; \
-       if (_file) {\
-               DBG##level(DBG_CFG, "%s:%d: " fmt, _file->name, _line, ##__VA_ARGS__); \
-       } else { \
-               DBG##level(DBG_CFG, fmt, ##__VA_ARGS__); \
-       } \
-})
+void parser_helper_log(int level, parser_helper_t *ctx, char *fmt, ...);
 
 #define PARSER_DBG1(ctx, fmt, ...) parser_helper_log(1, ctx, fmt, ##__VA_ARGS__)
 #define PARSER_DBG2(ctx, fmt, ...) parser_helper_log(2, ctx, fmt, ##__VA_ARGS__)