mirror of
https://github.com/radareorg/radare2.git
synced 2025-02-05 21:17:07 +00:00
Fix : after [] in grep
This commit is contained in:
parent
778c7722f6
commit
1b5079c14a
@ -67,7 +67,7 @@ R_API void r_cons_grep_help(void) {
|
|||||||
static void parse_grep_expression(const char *str) {
|
static void parse_grep_expression(const char *str) {
|
||||||
static char buf[R_CONS_GREP_BUFSIZE];
|
static char buf[R_CONS_GREP_BUFSIZE];
|
||||||
int wlen, len, is_range, num_is_parsed, fail = 0;
|
int wlen, len, is_range, num_is_parsed, fail = 0;
|
||||||
char *ptr, *optr, *ptr2, *ptr3;
|
char *ptr, *optr, *ptr2, *ptr3, *end_ptr = NULL, last;
|
||||||
ut64 range_begin, range_end;
|
ut64 range_begin, range_end;
|
||||||
|
|
||||||
if (!str || !*str) {
|
if (!str || !*str) {
|
||||||
@ -198,13 +198,16 @@ while_end:
|
|||||||
range_begin = range_end = -1;
|
range_begin = range_end = -1;
|
||||||
|
|
||||||
if (ptr2 && ptr3) {
|
if (ptr2 && ptr3) {
|
||||||
ptr2[0] = '\0';
|
end_ptr = ptr2;
|
||||||
|
last = ptr3[1];
|
||||||
|
ptr3[1] = '\0';
|
||||||
ptr2++;
|
ptr2++;
|
||||||
for (; ptr2 <= ptr3; ++ptr2) {
|
for (; ptr2 <= ptr3; ++ptr2) {
|
||||||
if (fail) {
|
if (fail) {
|
||||||
ZERO_FILL (grep->tokens);
|
ZERO_FILL (grep->tokens);
|
||||||
grep->tokens_used = 0;
|
grep->tokens_used = 0;
|
||||||
fail = 0;
|
fail = 0;
|
||||||
|
eprintf ("Fail :( \n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (*ptr2) {
|
switch (*ptr2) {
|
||||||
@ -247,12 +250,13 @@ while_end:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ptr3[1] = last;
|
||||||
}
|
}
|
||||||
|
|
||||||
ptr2 = strchr_ns (ptr, ':'); // line number
|
ptr2 = strchr_ns (ptr, ':'); // line number
|
||||||
grep->range_line = 2; // there is not :
|
grep->range_line = 2; // there is not :
|
||||||
if (ptr2 && ptr2[1] != ':' && ptr2[1]) {
|
if (ptr2 && ptr2[1] != ':' && ptr2[1]) {
|
||||||
*ptr2 = '\0';
|
end_ptr = end_ptr ? R_MIN (end_ptr, ptr2) : ptr2;
|
||||||
char *p, *token = ptr + 1;
|
char *p, *token = ptr + 1;
|
||||||
p = strstr (token, "..");
|
p = strstr (token, "..");
|
||||||
if (!p) {
|
if (!p) {
|
||||||
@ -273,6 +277,18 @@ while_end:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (end_ptr) {
|
||||||
|
*end_ptr = '\0';
|
||||||
|
eprintf ("line:%d, rangeline:%d, from_line:%d, l_line:%d\n", grep->line, grep->range_line, grep->f_line, grep->l_line);
|
||||||
|
eprintf ("columns :");
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < R_CONS_GREP_TOKENS; i++) {
|
||||||
|
if (grep->tokens[i]) {
|
||||||
|
eprintf ("%d", i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eprintf("\n");
|
||||||
|
}
|
||||||
free (grep->str);
|
free (grep->str);
|
||||||
if (*ptr) {
|
if (*ptr) {
|
||||||
grep->str = (char *) strdup (ptr);
|
grep->str = (char *) strdup (ptr);
|
||||||
@ -714,12 +730,7 @@ R_API int r_cons_grep_line(char *buf, int len) {
|
|||||||
use_tok = true;
|
use_tok = true;
|
||||||
}
|
}
|
||||||
} else if (grep->range_line == 1) {
|
} else if (grep->range_line == 1) {
|
||||||
if (grep->f_line == cons->lines) {
|
use_tok = R_BETWEEN (grep->f_line, cons->lines, grep->l_line);
|
||||||
use_tok = true;
|
|
||||||
}
|
|
||||||
if (grep->l_line == cons->lines) {
|
|
||||||
use_tok = false;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
use_tok = true;
|
use_tok = true;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user