summaryrefslogtreecommitdiff
path: root/grep.h
diff options
context:
space:
mode:
authorLibravatar Michał Kiedrowicz <michal.kiedrowicz@gmail.com>2011-05-09 23:52:05 +0200
committerLibravatar Junio C Hamano <gitster@pobox.com>2011-05-09 16:29:33 -0700
commit63e7e9d8b6483fed555ebed1c79a4820b2ba2558 (patch)
tree6970e3b85e6870c8fc75eb5704e44c92b1872438 /grep.h
parentgrep: Extract compile_regexp_failed() from compile_regexp() (diff)
downloadtgif-63e7e9d8b6483fed555ebed1c79a4820b2ba2558.tar.xz
git-grep: Learn PCRE
This patch teaches git-grep the --perl-regexp/-P options (naming borrowed from GNU grep) in order to allow specifying PCRE regexes on the command line. PCRE has a number of features which make them more handy to use than POSIX regexes, like consistent escaping rules, extended character classes, ungreedy matching etc. git isn't build with PCRE support automatically. USE_LIBPCRE environment variable must be enabled (like `make USE_LIBPCRE=YesPlease`). Signed-off-by: Michał Kiedrowicz <michal.kiedrowicz@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'grep.h')
-rw-r--r--grep.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/grep.h b/grep.h
index 06621fe663..cd055cdfa8 100644
--- a/grep.h
+++ b/grep.h
@@ -1,6 +1,12 @@
#ifndef GREP_H
#define GREP_H
#include "color.h"
+#ifdef USE_LIBPCRE
+#include <pcre.h>
+#else
+typedef int pcre;
+typedef int pcre_extra;
+#endif
enum grep_pat_token {
GREP_PATTERN,
@@ -33,6 +39,8 @@ struct grep_pat {
size_t patternlen;
enum grep_header_field field;
regex_t regexp;
+ pcre *pcre_regexp;
+ pcre_extra *pcre_extra_info;
unsigned fixed:1;
unsigned ignore_case:1;
unsigned word_regexp:1;
@@ -83,6 +91,7 @@ struct grep_opt {
#define GREP_BINARY_TEXT 2
int binary;
int extended;
+ int pcre;
int relative;
int pathname;
int null_following_name;