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>
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
+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)
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
.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)
int register_built_in_parsers(void);
int register_built_in_parsers(void);
-int onewire_parser(char *rrd_data, const char **parser_data);
-
#include "debug.h"
#include "string.h"
#include "utils.h"
#include "debug.h"
#include "string.h"
#include "utils.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;
-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;
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,
+};