const char *skip_range_arg(const char *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); if (*arg == ',') arg = parse_loc(arg+1, NULL, NULL, 0, 0, NULL); return arg; }
int parse_range_arg(const char *arg, nth_line_fn_t nth_line_cb, void *cb_data, long lines, long *begin, long *end, const char *path) { if (*arg == ':') { arg = parse_range_funcname(arg, nth_line_cb, cb_data, lines, begin, end, path); if (!arg || *arg) return -1; return 0; } arg = parse_loc(arg, nth_line_cb, cb_data, lines, 1, begin); if (*arg == ',') arg = parse_loc(arg + 1, nth_line_cb, cb_data, lines, *begin + 1, end); if (*arg) return -1; return 0; }