Пример #1
0
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;
}
Пример #3
0
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;
  }
}
Пример #4
0
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; }
Пример #5
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;
}
Пример #6
0
grok_t *grok_new() {
  grok_t *grok;
  grok = malloc(sizeof(grok_t));
  grok_init(grok);
  return grok;
}