]> git.itanic.dy.fi Git - rrdd/blob - parser.c
Parsers: Implement framework for registering and querying parsers
[rrdd] / parser.c
1 #include <string.h>
2
3 #include "parser.h"
4 #include "debug.h"
5
6 static struct parser_info *parser_list;
7
8 int register_parser(struct parser_info *info)
9 {
10         struct parser_info *parser;
11
12         if (!info->name) {
13                 pr_err("Unable to register parser without a name\n");
14                 return -1;
15         }
16
17         pr_info("Registering parser %s\n", info->name);
18
19         if (!parser_list) {
20                 parser_list = info;
21                 return 0;
22         }
23
24         for (parser = parser_list; parser->next; parser = parser->next)
25                 ;
26
27         parser->next = info;
28         info->next = NULL;
29
30         return 0;
31 }
32
33 struct parser_info *str_to_parser(const char *str)
34 {
35         struct parser_info *parser;
36
37         for (parser = parser_list; parser; parser = parser->next) {
38                 if (!strcmp(str, parser->name))
39                         return parser;
40         }
41
42         return NULL;
43 }