sscanf/strtoul: parse integers robustly
[gitweb.git] / grep.h
diff --git a/grep.h b/grep.h
index 80122b05df9b6bee0f89cecf99cf4303f0833af4..d252dd25f81526d9b8663b4d3c9585d69a901397 100644 (file)
--- a/grep.h
+++ b/grep.h
@@ -3,6 +3,8 @@
 
 enum grep_pat_token {
        GREP_PATTERN,
+       GREP_PATTERN_HEAD,
+       GREP_PATTERN_BODY,
        GREP_AND,
        GREP_OPEN_PAREN,
        GREP_CLOSE_PAREN,
@@ -10,6 +12,11 @@ enum grep_pat_token {
        GREP_OR,
 };
 
+enum grep_context {
+       GREP_CONTEXT_HEAD,
+       GREP_CONTEXT_BODY,
+};
+
 struct grep_pat {
        struct grep_pat *next;
        const char *origin;
@@ -28,6 +35,7 @@ enum grep_expr_node {
 
 struct grep_expr {
        enum grep_expr_node node;
+       unsigned hit;
        union {
                struct grep_pat *atom;
                struct grep_expr *unary;
@@ -52,6 +60,7 @@ struct grep_opt {
        unsigned count:1;
        unsigned word_regexp:1;
        unsigned fixed:1;
+       unsigned all_match:1;
 #define GREP_BINARY_DEFAULT    0
 #define GREP_BINARY_NOMATCH    1
 #define GREP_BINARY_TEXT       2
@@ -66,6 +75,7 @@ struct grep_opt {
 
 extern void append_grep_pattern(struct grep_opt *opt, const char *pat, const char *origin, int no, enum grep_pat_token t);
 extern void compile_grep_patterns(struct grep_opt *opt);
+extern void free_grep_patterns(struct grep_opt *opt);
 extern int grep_buffer(struct grep_opt *opt, const char *name, char *buf, unsigned long size);
 
 #endif