author | Lars Hjemli <hjemli@gmail.com> | 2006-12-28 01:45:28 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2006-12-28 01:45:28 (UTC) |
commit | 732d68d240b95dc428c92fc94bce9adb8912094e (patch) (side-by-side diff) | |
tree | 24c6ab907c2a8574da12e426144706ad63780868 /git.h | |
parent | e39d738c39d37cdef115c145027f3eec85a62272 (diff) | |
download | cgit-732d68d240b95dc428c92fc94bce9adb8912094e.zip cgit-732d68d240b95dc428c92fc94bce9adb8912094e.tar.gz cgit-732d68d240b95dc428c92fc94bce9adb8912094e.tar.bz2 |
Add basic log filtering
This enables case-insensitive grep on logentris using the new search box
Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r-- | git.h | 68 |
1 files changed, 67 insertions, 1 deletions
@@ -22,25 +22,25 @@ #include <fcntl.h> #include <stddef.h> #include <stdlib.h> #include <stdarg.h> #include <string.h> #include <errno.h> #include <limits.h> #include <sys/param.h> #include <netinet/in.h> #include <sys/types.h> #include <dirent.h> #include <time.h> - +#include <regex.h> /* On most systems <limits.h> would have given us this, but * not on some systems (e.g. GNU/Hurd). */ #ifndef PATH_MAX #define PATH_MAX 4096 #endif #ifdef __GNUC__ #define NORETURN __attribute__((__noreturn__)) #else #define NORETURN @@ -147,24 +147,90 @@ static inline int hashcmp(const unsigned char *sha1, const unsigned char *sha2) return memcmp(sha1, sha2, 20); } static inline void hashcpy(unsigned char *sha_dst, const unsigned char *sha_src) { memcpy(sha_dst, sha_src, 20); } static inline void hashclr(unsigned char *hash) { memset(hash, 0, 20); } +/* + * from git:grep.h + */ + +enum grep_pat_token { + GREP_PATTERN, + GREP_PATTERN_HEAD, + GREP_PATTERN_BODY, + GREP_AND, + GREP_OPEN_PAREN, + GREP_CLOSE_PAREN, + GREP_NOT, + GREP_OR, +}; + +enum grep_context { + GREP_CONTEXT_HEAD, + GREP_CONTEXT_BODY, +}; + +struct grep_pat { + struct grep_pat *next; + const char *origin; + int no; + enum grep_pat_token token; + const char *pattern; + regex_t regexp; +}; + +enum grep_expr_node { + GREP_NODE_ATOM, + GREP_NODE_NOT, + GREP_NODE_AND, + GREP_NODE_OR, +}; + +struct grep_opt { + struct grep_pat *pattern_list; + struct grep_pat **pattern_tail; + struct grep_expr *pattern_expression; + int prefix_length; + regex_t regexp; + unsigned linenum:1; + unsigned invert:1; + unsigned status_only:1; + unsigned name_only:1; + unsigned unmatch_name_only:1; + 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 + unsigned binary:2; + unsigned extended:1; + unsigned relative:1; + unsigned pathname:1; + int regflags; + unsigned pre_context; + unsigned post_context; +}; + + +extern void compile_grep_patterns(struct grep_opt *opt); +extern void free_grep_patterns(struct grep_opt *opt); /* * from git:object.h */ struct object_list { struct object *item; struct object_list *next; }; struct object_refs { |