The reason tfjson and jsonparser were separate is because the former supported two json libs, and they could be compiled separately. Now that tfjson dropped json-glib support, the separation became pointless, so this patch merges the two together. Signed-off-by: Gergely Nagy <algernon@balabit.hu> --- configure.in | 14 ++---- modules/Makefile.am | 2 +- modules/{jsonparser => json}/Makefile.am | 26 ++++++---- .../jsonparser.h => json/json-plugin.h} | 10 ++-- modules/{jsonparser => json}/jsonparser-grammar.ym | 2 +- modules/{jsonparser => json}/jsonparser-parser.c | 2 +- modules/{jsonparser => json}/jsonparser-parser.h | 0 modules/{jsonparser => json}/jsonparser.c | 2 +- modules/{tfjson => json}/tests/Makefile.am | 4 +- modules/{tfjson => json}/tests/test_json.c | 2 +- modules/{tfjson => json}/tfjson.c | 21 +++++--- modules/jsonparser/jsonparser-plugin.c | 53 -------------------- modules/tfjson/Makefile.am | 13 ----- 13 files changed, 47 insertions(+), 104 deletions(-) rename modules/{jsonparser => json}/Makefile.am (50%) rename modules/{jsonparser/jsonparser.h => json/json-plugin.h} (83%) rename modules/{jsonparser => json}/jsonparser-grammar.ym (98%) rename modules/{jsonparser => json}/jsonparser-parser.c (98%) rename modules/{jsonparser => json}/jsonparser-parser.h (100%) rename modules/{jsonparser => json}/jsonparser.c (99%) rename modules/{tfjson => json}/tests/Makefile.am (76%) rename modules/{tfjson => json}/tests/test_json.c (93%) rename modules/{tfjson => json}/tfjson.c (87%) delete mode 100644 modules/jsonparser/jsonparser-plugin.c delete mode 100644 modules/tfjson/Makefile.am diff --git a/configure.in b/configure.in index 8991835..a23c6e8 100644 --- a/configure.in +++ b/configure.in @@ -892,9 +892,7 @@ fi if test "x$enable_json" != "xno"; then JSON_LIBS=$JSON_C_LIBS JSON_CFLAGS=$JSON_C_CFLAGS - - enable_json_parse="yes" - enable_json_format="yes" + enable_json="yes" fi if test "x$enable_systemd" = "xauto"; then @@ -1070,8 +1068,7 @@ AM_CONDITIONAL(ENABLE_SUN_STREAMS, [test "$enable_sun_streams" = "yes"]) AM_CONDITIONAL(ENABLE_PACCT, [test "$enable_pacct" = "yes"]) AM_CONDITIONAL(ENABLE_MONGODB, [test "$enable_mongodb" = "yes"]) AM_CONDITIONAL(ENABLE_SMTP, [test "$enable_smtp" = "yes"]) -AM_CONDITIONAL(ENABLE_JSON_FORMAT, [test "$enable_json_format" = "yes"]) -AM_CONDITIONAL(ENABLE_JSON_PARSE, [test "$enable_json_parse" = "yes"]) +AM_CONDITIONAL(ENABLE_JSON, [test "$enable_json" = "yes"]) AM_CONDITIONAL(WITH_LIBSYSTEMD, [test "$with_libsystemd" = "yes"]) # substitution into manual pages @@ -1147,9 +1144,8 @@ AC_OUTPUT(dist.conf modules/basicfuncs/tests/Makefile modules/cryptofuncs/Makefile modules/cryptofuncs/tests/Makefile - modules/tfjson/Makefile - modules/tfjson/tests/Makefile - modules/jsonparser/Makefile + modules/json/Makefile + modules/json/tests/Makefile scripts/Makefile scripts/update-patterndb doc/Makefile @@ -1193,6 +1189,6 @@ echo " SSL support (module) : ${enable_ssl:=no}" echo " SQL support (module) : ${enable_sql:=no}" echo " PACCT module (EXPERIMENTAL) : ${enable_pacct:=no}" echo " MongoDB destination (module): ${enable_mongodb:=no}" -echo " JSON support (module) : parser=${enable_json_parse:=no}, formatter=${enable_json_format:=no}" +echo " JSON support (module) : ${enable_json:=no}" echo " SMTP support (module) : ${enable_smtp:=no}" diff --git a/modules/Makefile.am b/modules/Makefile.am index eb9548d..8f9d63b 100644 --- a/modules/Makefile.am +++ b/modules/Makefile.am @@ -1 +1 @@ -SUBDIRS = afsocket afsql afstreams affile afprog afuser afmongodb afsmtp csvparser confgen system-source syslogformat pacctformat basicfuncs cryptofuncs dbparser tfjson jsonparser +SUBDIRS = afsocket afsql afstreams affile afprog afuser afmongodb afsmtp csvparser confgen system-source syslogformat pacctformat basicfuncs cryptofuncs dbparser json diff --git a/modules/jsonparser/Makefile.am b/modules/json/Makefile.am similarity index 50% rename from modules/jsonparser/Makefile.am rename to modules/json/Makefile.am index 0925f98..4960ca4 100644 --- a/modules/jsonparser/Makefile.am +++ b/modules/json/Makefile.am @@ -1,22 +1,26 @@ +SUBDIRS = tests + moduledir = @moduledir@ -AM_CPPFLAGS = -I$(top_srcdir)/lib -I../../lib export top_srcdir -if ENABLE_JSON_PARSE -module_LTLIBRARIES := libjsonparser.la -libjsonparser_la_SOURCES = \ - jsonparser.c jsonparser.h \ +if ENABLE_JSON +AM_CPPFLAGS = -I$(top_srcdir)/lib -I../../lib +module_LTLIBRARIES = libjson-plugin.la + +libjson_plugin_la_SOURCES = \ + tfjson.c \ + jsonparser.c \ jsonparser-grammar.y \ jsonparser-parser.c jsonparser-parser.h \ - jsonparser-plugin.c + json-plugin.h -libjsonparser_la_CPPFLAGS = $(AM_CPPFLAGS) -libjsonparser_la_CFLAGS = $(JSON_CFLAGS) -libjsonparser_la_LIBADD = $(MODULE_DEPS_LIBS) -libjsonparser_la_LDFLAGS = $(MODULE_LDFLAGS) $(JSON_LIBS) +libjson_plugin_la_CPPFLAGS = $(AM_CPPFLAGS) +libjson_plugin_la_CFLAGS = $(JSON_CFLAGS) +libjson_plugin_la_LIBADD = $(MODULE_DEPS_LIBS) $(JSON_LIBS) +libjson_plugin_la_LDFLAGS = $(MODULE_LDFLAGS) +endif BUILT_SOURCES = jsonparser-grammar.y jsonparser-grammar.c jsonparser-grammar.h EXTRA_DIST = $(BUILT_SOURCES) jsonparser-grammar.ym -endif include $(top_srcdir)/build/lex-rules.am diff --git a/modules/jsonparser/jsonparser.h b/modules/json/json-plugin.h similarity index 83% rename from modules/jsonparser/jsonparser.h rename to modules/json/json-plugin.h index 15fd27f..e8add05 100644 --- a/modules/jsonparser/jsonparser.h +++ b/modules/json/json-plugin.h @@ -1,6 +1,6 @@ /* - * Copyright (c) 2011 BalaBit IT Ltd, Budapest, Hungary - * Copyright (c) 2011 Gergely Nagy <algernon@balabit.hu> + * Copyright (c) 2011-2012 BalaBit IT Ltd, Budapest, Hungary + * Copyright (c) 2011-2012 Gergely Nagy <algernon@balabit.hu> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published @@ -20,8 +20,8 @@ * COPYING for details. */ -#ifndef JSONPARSER_H_INCLUDED -#define JSONPARSER_H_INCLUDED +#ifndef JSON_PLUGIN_H_INCLUDED +#define JSON_PLUGIN_H_INCLUDED #include "logparser.h" @@ -31,4 +31,6 @@ void log_json_parser_set_prefix(LogParser *p, const gchar *prefix); void log_json_parser_set_marker(LogParser *p, const gchar *marker); LogJSONParser *log_json_parser_new(void); +gboolean tfjson_module_init(GlobalConfig *cfg); + #endif diff --git a/modules/jsonparser/jsonparser-grammar.ym b/modules/json/jsonparser-grammar.ym similarity index 98% rename from modules/jsonparser/jsonparser-grammar.ym rename to modules/json/jsonparser-grammar.ym index cc2830a..e78b8e4 100644 --- a/modules/jsonparser/jsonparser-grammar.ym +++ b/modules/json/jsonparser-grammar.ym @@ -28,7 +28,7 @@ %code { -#include "jsonparser.h" +#include "json-plugin.h" #include "cfg-parser.h" #include "jsonparser-grammar.h" #include "syslog-names.h" diff --git a/modules/jsonparser/jsonparser-parser.c b/modules/json/jsonparser-parser.c similarity index 98% rename from modules/jsonparser/jsonparser-parser.c rename to modules/json/jsonparser-parser.c index 6a88040..e9dacaf 100644 --- a/modules/jsonparser/jsonparser-parser.c +++ b/modules/json/jsonparser-parser.c @@ -20,7 +20,7 @@ * COPYING for details. */ -#include "jsonparser.h" +#include "json-plugin.h" #include "cfg-parser.h" #include "jsonparser-grammar.h" diff --git a/modules/jsonparser/jsonparser-parser.h b/modules/json/jsonparser-parser.h similarity index 100% rename from modules/jsonparser/jsonparser-parser.h rename to modules/json/jsonparser-parser.h diff --git a/modules/jsonparser/jsonparser.c b/modules/json/jsonparser.c similarity index 99% rename from modules/jsonparser/jsonparser.c rename to modules/json/jsonparser.c index 3fb2531..21b605d 100644 --- a/modules/jsonparser/jsonparser.c +++ b/modules/json/jsonparser.c @@ -20,7 +20,7 @@ * COPYING for details. */ -#include "jsonparser.h" +#include "json-plugin.h" #include "logparser.h" #include "scratch-buffers.h" diff --git a/modules/tfjson/tests/Makefile.am b/modules/json/tests/Makefile.am similarity index 76% rename from modules/tfjson/tests/Makefile.am rename to modules/json/tests/Makefile.am index a184b69..2424a73 100644 --- a/modules/tfjson/tests/Makefile.am +++ b/modules/json/tests/Makefile.am @@ -1,5 +1,5 @@ -AM_CFLAGS = -I$(top_srcdir)/lib -I../../../lib -I$(top_srcdir)/libtest -I../../../libtest -I$(top_srcdir)/modules/tfjson -I.. -AM_LDFLAGS = -dlpreopen ../../syslogformat/libsyslogformat.la -dlpreopen ../libtfjson.la +AM_CFLAGS = -I$(top_srcdir)/lib -I../../../lib -I$(top_srcdir)/libtest -I../../../libtest -I$(top_srcdir)/modules/json -I.. +AM_LDFLAGS = -dlpreopen ../../syslogformat/libsyslogformat.la -dlpreopen ../libjson-plugin.la LDADD = $(top_builddir)/lib/libsyslog-ng.la $(top_builddir)/libtest/libsyslog-ng-test.a @TOOL_DEPS_LIBS@ check_PROGRAMS = test_json diff --git a/modules/tfjson/tests/test_json.c b/modules/json/tests/test_json.c similarity index 93% rename from modules/tfjson/tests/test_json.c rename to modules/json/tests/test_json.c index bd18203..582b264 100644 --- a/modules/tfjson/tests/test_json.c +++ b/modules/json/tests/test_json.c @@ -15,7 +15,7 @@ main(int argc G_GNUC_UNUSED, char *argv[] G_GNUC_UNUSED) { app_startup(); init_template_tests(); - plugin_load_module("tfjson", configuration, NULL); + plugin_load_module("json-plugin", configuration, NULL); test_format_json(); diff --git a/modules/tfjson/tfjson.c b/modules/json/tfjson.c similarity index 87% rename from modules/tfjson/tfjson.c rename to modules/json/tfjson.c index 8eb1d42..8716559 100644 --- a/modules/tfjson/tfjson.c +++ b/modules/json/tfjson.c @@ -128,24 +128,31 @@ tf_json_free_state(gpointer s) TEMPLATE_FUNCTION(TFJsonState, tf_json, tf_json_prepare, NULL, tf_json_call, tf_json_free_state, NULL); -static Plugin builtin_tmpl_func_plugins[] = +extern CfgParser jsonparser_parser; + +static Plugin json_plugins[] = { + { + .type = LL_CONTEXT_PARSER, + .name = "json-parser", + .parser = &jsonparser_parser, + }, TEMPLATE_FUNCTION_PLUGIN(tf_json, "format_json"), }; gboolean -tfjson_module_init(GlobalConfig *cfg, CfgArgs *args) +json_module_init(GlobalConfig *cfg, CfgArgs *args) { - plugin_register(cfg, builtin_tmpl_func_plugins, G_N_ELEMENTS(builtin_tmpl_func_plugins)); + plugin_register(cfg, json_plugins, G_N_ELEMENTS(json_plugins)); return TRUE; } const ModuleInfo module_info = { - .canonical_name = "tfjson", + .canonical_name = "json", .version = VERSION, - .description = "The tfjson module provides a JSON formatting template function for syslog-ng.", + .description = "The json module provides JSON parsing & formatting support for syslog-ng.", .core_revision = SOURCE_REVISION, - .plugins = builtin_tmpl_func_plugins, - .plugins_len = G_N_ELEMENTS(builtin_tmpl_func_plugins), + .plugins = json_plugins, + .plugins_len = G_N_ELEMENTS(json_plugins), }; diff --git a/modules/jsonparser/jsonparser-plugin.c b/modules/jsonparser/jsonparser-plugin.c deleted file mode 100644 index 15c4c91..0000000 --- a/modules/jsonparser/jsonparser-plugin.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2011 BalaBit IT Ltd, Budapest, Hungary - * Copyright (c) 2011 Gergely Nagy <algernon@balabit.hu> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 as published - * by the Free Software Foundation, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * As an additional exemption you are allowed to compile & link against the - * OpenSSL libraries as published by the OpenSSL project. See the file - * COPYING for details. - */ - -#include "cfg-parser.h" -#include "plugin.h" -#include "jsonparser.h" - -extern CfgParser jsonparser_parser; - -static Plugin jsonparser_plugins[] = -{ - { - .type = LL_CONTEXT_PARSER, - .name = "json-parser", - .parser = &jsonparser_parser, - }, -}; - -gboolean -jsonparser_module_init(GlobalConfig *cfg, CfgArgs *args) -{ - plugin_register(cfg, jsonparser_plugins, G_N_ELEMENTS(jsonparser_plugins)); - return TRUE; -} - -const ModuleInfo module_info = -{ - .canonical_name = "jsonparser", - .version = VERSION, - .description = "The jsonparser module provides JSON parsing support for syslog-ng.", - .core_revision = SOURCE_REVISION, - .plugins = jsonparser_plugins, - .plugins_len = G_N_ELEMENTS(jsonparser_plugins), -}; diff --git a/modules/tfjson/Makefile.am b/modules/tfjson/Makefile.am deleted file mode 100644 index eecbf70..0000000 --- a/modules/tfjson/Makefile.am +++ /dev/null @@ -1,13 +0,0 @@ -SUBDIRS = tests - -moduledir = @moduledir@ -export top_srcdir - -if ENABLE_JSON_FORMAT -AM_CPPFLAGS = -I$(top_srcdir)/lib -I../../lib $(JSON_CFLAGS) -module_LTLIBRARIES = libtfjson.la - -libtfjson_la_SOURCES = tfjson.c -libtfjson_la_LIBADD = $(MODULE_DEPS_LIBS) $(JSON_LIBS) -libtfjson_la_LDFLAGS = $(MODULE_LDFLAGS) -endif -- 1.7.10.4