]> git.itanic.dy.fi Git - rrdd/commitdiff
onewire_parser: Convert to a plugin
authorTimo Kokkonen <timo.t.kokkonen@iki.fi>
Mon, 19 Nov 2012 20:12:09 +0000 (22:12 +0200)
committerTimo Kokkonen <timo.t.kokkonen@iki.fi>
Mon, 19 Nov 2012 20:12:09 +0000 (22:12 +0200)
Onewire parser is the only piece of code here that depends on libownet
and requires linking against it. This is cumbersome whenever we wish
to build rrdd and we are not interested in having support for onewire
at all.

Converting the parser to a plugin solves the issue: We can now build
main rrdd without libownet dependency. Even if we have built the
onewire parser, we don't need to load it unless we are actually using
it.

Signed-off-by: Timo Kokkonen <timo.t.kokkonen@iki.fi>
Makefile
built_in_parsers.c
built_in_parsers.h
onewire_parser.c

index 677e88e18b8f862d29d955f094bc2576b16bb521..0f3d347531f2af895f60b81fa4866fb4c606b02c 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,9 +3,11 @@ LD=ld
 CFLAGS=-Wall -O2 -g -fPIC
 
 RRDD_OBJS= main.o process.o rrdtool.o parser.o built_in_parsers.o string.o \
 CFLAGS=-Wall -O2 -g -fPIC
 
 RRDD_OBJS= main.o process.o rrdtool.o parser.o built_in_parsers.o string.o \
-               debug.o config.o onewire_parser.o plugin_manager.o
+               debug.o config.o plugin_manager.o
 
 
-ALL_OBJS = $(RRDD_OBJS)
+ONEWIRE_PARSER_OBJS = onewire_parser.o
+
+ALL_OBJS = $(RRDD_OBJS) $(ONEWIRE_PLUGIN_OBJS)
 ALL_DEBS = $(patsubst %.o,.%.o.d,$(ALL_OBJS))
 
 ifeq ($(V),1)
 ALL_DEBS = $(patsubst %.o,.%.o.d,$(ALL_OBJS))
 
 ifeq ($(V),1)
@@ -21,7 +23,10 @@ endif
 all: rrdd
 
 rrdd: $(RRDD_OBJS)
 all: rrdd
 
 rrdd: $(RRDD_OBJS)
-       $(QUIET_LINK)$(CC) -o rrdd $(RRDD_OBJS) -lconfig -lownet -ldl -rdynamic
+       $(QUIET_LINK)$(CC) -o rrdd $(RRDD_OBJS) -lconfig -ldl -rdynamic
+
+onewire_parser.so: $(ONEWIRE_PARSER_OBJS)
+       $(QUIET_LINK)$(CC) $(CFLAGS) -lownet -shared -fPIC $< -o $@
 
 clean:
        rm -vf rrdd *~ *.o .*.d *.so
 
 clean:
        rm -vf rrdd *~ *.o .*.d *.so
index f3a8c79fa57e60d84cde259097986c6eb75c20ff..5ee045b3db09f7037fd89bc385f8a0ccf1ea18ff 100644 (file)
@@ -306,10 +306,6 @@ static struct parser_info built_in_parsers[] = {
                .name = "netstats",
                .parse = netstats_parser,
        },
                .name = "netstats",
                .parse = netstats_parser,
        },
-       {
-               .name = "onewire",
-               .parse = onewire_parser,
-       },
 };
 
 int register_built_in_parsers(void)
 };
 
 int register_built_in_parsers(void)
index 76b3a98bf0bde8f9feade8d9ba7580ce0e39e1f2..17022893772a85ae4facc767205b07896a869fbf 100644 (file)
@@ -3,6 +3,4 @@
 
 int register_built_in_parsers(void);
 
 
 int register_built_in_parsers(void);
 
-int onewire_parser(char *rrd_data, const char **parser_data);
-
 #endif
 #endif
index f878b0949fd6f20f8cba0b83de9a935be7521f1f..287fec147c67278c4c822df33f27316e631ba36a 100644 (file)
@@ -5,8 +5,9 @@
 #include "debug.h"
 #include "string.h"
 #include "utils.h"
 #include "debug.h"
 #include "string.h"
 #include "utils.h"
+#include "plugin.h"
 
 
-int parse_opts(const char *str, char *ow_path, size_t pathlen, double *offset)
+static int parse_opts(const char *str, char *ow_path, size_t pathlen, double *offset)
 {
        char *endptr;
        const char *start_str = str;
 {
        char *endptr;
        const char *start_str = str;
@@ -44,7 +45,7 @@ int parse_opts(const char *str, char *ow_path, size_t pathlen, double *offset)
        return 0;
 }
 
        return 0;
 }
 
-int onewire_parser(char *rrd_data, const char **parser_data)
+static int onewire_parser(char *rrd_data, const char **parser_data)
 {
        OWNET_HANDLE h;
        const char *server_addr;
 {
        OWNET_HANDLE h;
        const char *server_addr;
@@ -125,3 +126,18 @@ next:
        OWNET_finish();
        return 0;
 }
        OWNET_finish();
        return 0;
 }
+
+static struct parser_info onewire_parser_info = {
+       .name = "onewire",
+       .parse = onewire_parser,
+};
+
+static int init_onewire_parser(void)
+{
+       return register_parser(&onewire_parser_info);
+}
+
+struct plugin_info plugin_info = {
+       .name = "onewire_parser",
+       .init = init_onewire_parser,
+};