static void grok_discover_global_init() { dgrok_init = 1; grok_init(&global_discovery_req1_grok); grok_compile(&global_discovery_req1_grok, ".\\b."); grok_init(&global_discovery_req2_grok); grok_compile(&global_discovery_req2_grok, "%\\{[^}]+\\}"); }
VALUE rGrok_new(VALUE klass) { VALUE rgrok; grok_t *grok = ALLOC(grok_t); grok_init(grok); //grok->logmask = ~0; rgrok = Data_Wrap_Struct(klass, 0, rGrok_free, grok); rb_obj_call_init(rgrok, 0, 0); return rgrok; }
void grok_matchconfig_init(grok_program_t *gprog, grok_matchconf_t *gmc) { gmc->grok_list = tclistnew(); gmc->shell = NULL; gmc->reaction = NULL; gmc->shellinput = NULL; gmc->matches = 0; if (mcgrok_init == 0) { grok_init(&global_matchconfig_grok); global_matchconfig_grok.logmask = gprog->logmask; global_matchconfig_grok.logdepth = gprog->logdepth; grok_patterns_import_from_string(&global_matchconfig_grok, "PATTERN \\%\\{%{NAME}(?:%{FILTER})?}"); grok_patterns_import_from_string(&global_matchconfig_grok, "NAME @?\\w+(?::\\w+)?(?:|\\w+)*"); grok_patterns_import_from_string(&global_matchconfig_grok, "FILTER (?:\\|\\w+)+"); grok_compile(&global_matchconfig_grok, "%{PATTERN}"); mcgrok_init = 1; } }
int main(int argc, char **argv) { int opt = 0; g_prog = argv[0]; struct option options[] = { { "patterns", required_argument, NULL, 'p' }, { "help", no_argument, NULL, 'h' }, { "verbose", no_argument, NULL, 'v' }, { 0, 0, 0, 0 } }; const char *prog = argv[0]; grok_t grok; grok_init(&grok); int pattern_count = 0; while ((opt = getopt_long_only(argc, argv, "hp:v", options, NULL)) != -1) { switch (opt) { case 'h': usage(); return 0; case 'p': pattern_count++; grok_patterns_import_from_file(&grok, optarg); break; case 'v': grok.logmask =~ 0; break; default: usage(); return 1; } } if (pattern_count == 0) { fprintf(stderr, "%s: No patterns loaded.\n", prog); fprintf(stderr, "You want to specify at least one patterns file to load\n"); return 1; } argc -= optind; argv += optind; int i; FILE *fp = stdin; if (argc > 0 && strcmp(argv[0], "-")) { fp = fopen(argv[0], "r"); } char buf[4096]; grok_discover_t *gdt; gdt = grok_discover_new(&grok); char *discovery; int unused_length; while (fgets(buf, 4096, fp) != NULL) { strrchr(buf, '\n')[0] = '\0'; grok_discover(gdt, buf, &discovery, &unused_length); printf("%s\n", discovery); free(discovery); } grok_discover_free(gdt); return 0; }
void grok_clone(grok_t *dst, const grok_t *src) { grok_init(dst); dst->patterns = src->patterns; dst->logmask = src->logmask; dst->logdepth = src->logdepth + 1; }
grok_t *grok_new() { grok_t *grok; grok = malloc(sizeof(grok_t)); grok_init(grok); return grok; }