]> git.ipfire.org Git - thirdparty/git.git/blobdiff - line-range.c
line-range: teach -L^:RE to search from start of file
[thirdparty/git.git] / line-range.c
index 4bae4bff212817a443f1cc6c0b124fb1bcd263b1..ede0c6c98f7b6fc1f4e85a3956f7824a81dff743 100644 (file)
@@ -173,6 +173,11 @@ static const char *parse_range_funcname(const char *arg, nth_line_fn_t nth_line_
        int reg_error;
        regex_t regexp;
 
+       if (*arg == '^') {
+               anchor = 1;
+               arg++;
+       }
+
        assert(*arg == ':');
        term = arg+1;
        while (*term && *term != ':') {
@@ -245,7 +250,7 @@ int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb,
        if (anchor > lines)
                anchor = lines + 1;
 
-       if (*arg == ':') {
+       if (*arg == ':' || (*arg == '^' && *(arg + 1) == ':')) {
                arg = parse_range_funcname(arg, nth_line_cb, cb_data, lines, anchor, begin, end, path);
                if (!arg || *arg)
                        return -1;
@@ -270,7 +275,7 @@ int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb,
 
 const char *skip_range_arg(const char *arg)
 {
-       if (*arg == ':')
+       if (*arg == ':' || (*arg == '^' && *(arg + 1) == ':'))
                return parse_range_funcname(arg, NULL, NULL, 0, 0, NULL, NULL, NULL);
 
        arg = parse_loc(arg, NULL, NULL, 0, -1, NULL);