Skip to content

Commit 42ecad4

Browse files
committed
cmd_search.c: Refactor out context coloring
1 parent 309f574 commit 42ecad4

File tree

1 file changed

+22
-24
lines changed

1 file changed

+22
-24
lines changed

librz/core/cmd/cmd_search.c

+22-24
Original file line numberDiff line numberDiff line change
@@ -422,6 +422,23 @@ static char *getstring(char *b, int l, bool use_color) {
422422
return res;
423423
}
424424

425+
static RZ_OWN char *get_colored_context(RZ_NONNULL const char *ctx) {
426+
RzBuffer *buf = rz_buf_new_with_bytes(NULL, 0);
427+
if (!buf) {
428+
return NULL;
429+
}
430+
for (; *ctx; ctx++) {
431+
if (*ctx == '\xff') {
432+
rz_buf_append_string(buf, Color_BLUE "." Color_RESET);
433+
} else {
434+
rz_buf_append_bytes(buf, (const ut8 *)ctx, 1);
435+
}
436+
}
437+
char *ctx_color = rz_buf_to_string(buf);
438+
rz_buf_free(buf);
439+
return ctx_color;
440+
}
441+
425442
static int _cb_hit(RzSearchKeyword *kw, void *user, ut64 addr) {
426443
struct search_parameters *param = user;
427444
RzCore *core = param->core;
@@ -460,31 +477,12 @@ static int _cb_hit(RzSearchKeyword *kw, void *user, ut64 addr) {
460477
} else {
461478
wrd = rz_str_utf16_encode(buf + prectx, len);
462479
if (use_color) {
463-
char *ptr;
464-
RzBuffer *pre_color = rz_buf_new_with_bytes(NULL, 0);
465-
for (ptr = pre; *ptr; ptr++) {
466-
if (*ptr == '\xff') {
467-
rz_buf_append_string(pre_color, Color_BLUE "." Color_RESET);
468-
} else {
469-
rz_buf_append_bytes(pre_color, (const ut8 *)ptr, 1);
470-
}
471-
}
472-
RzBuffer *pos_color = rz_buf_new_with_bytes(NULL, 0);
473-
for (ptr = pos; *ptr; ptr++) {
474-
if (*ptr == '\xff') {
475-
rz_buf_append_string(pos_color, Color_BLUE "." Color_RESET);
476-
} else {
477-
rz_buf_append_bytes(pos_color, (const ut8 *)ptr, 1);
478-
}
479-
}
480-
char *pre_color_str = rz_buf_to_string(pre_color);
481-
char *pos_color_str = rz_buf_to_string(pos_color);
480+
char *pre_color = get_colored_context(pre);
481+
char *pos_color = get_colored_context(pos);
482482
s = rz_str_newf("\"%s" Color_YELLOW "%s" Color_RESET "%s\"",
483-
pre_color_str, wrd, pos_color_str);
484-
free(pre_color_str);
485-
free(pos_color_str);
486-
rz_buf_free(pre_color);
487-
rz_buf_free(pos_color);
483+
pre_color, wrd, pos_color);
484+
free(pre_color);
485+
free(pos_color);
488486
} else {
489487
s = rz_str_newf("\"%s%s%s\"", pre, wrd, pos);
490488
}

0 commit comments

Comments
 (0)