#include #include "parser.h" #include "debug.h" #include "plugin_manager.h" static struct parser_info *parser_list; int register_parser(struct parser_info *info) { struct parser_info *parser; if (!info->name) { pr_err("Unable to register parser without a name\n"); return -1; } pr_info("Registering parser %s\n", info->name); if (!parser_list) { parser_list = info; return 0; } for (parser = parser_list; parser->next; parser = parser->next) ; parser->next = info; info->next = NULL; return 0; } static struct parser_info *_str_to_parser(const char *str) { struct parser_info *parser; for (parser = parser_list; parser; parser = parser->next) { if (!strcmp(str, parser->name)) return parser; } return NULL; } struct parser_info *str_to_parser(const char *str) { struct parser_info *parser; int ret; parser = _str_to_parser(str); if (parser) return parser; /* No parser found? Try loading a plugin */ ret = load_parser_plugin(str); if (ret) return NULL; /* Try finding the parser again, maybe we got lucky and have it now */ return _str_to_parser(str); }