From 331810b865cca502ac0858034032e9417dd0f8f6 Mon Sep 17 00:00:00 2001 From: Laurent Mazet Date: Sun, 9 Mar 2025 20:53:38 +0100 Subject: [PATCH] highlight found sequence --- display.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/display.c b/display.c index d4caf48..c72896c 100644 --- a/display.c +++ b/display.c @@ -539,16 +539,10 @@ void errorwindow (char *msg, window_t *win) int _find (char **lines, int nblines, int skip, char *search) { int len = strlen (search); - int i, j, k; + int i, j; for (i = skip; i < nblines; i++) { for (j = 0; lines[i][j] != 0; j++) { - int count = 0; - for (k = 0; k < len; k++) { - if (lines[i][j + k] == search[k]) { - count++; - } - } - if (count == len) { + if (strncmp (lines[i] + j, search, len) == 0) { return i; } } @@ -620,16 +614,25 @@ char *filewindow (char *name, window_t *win) mvaddch (win->ysize + win->yoffset - 1, win->xsize + win->xoffset, ACS_DARROW); } + int slen = (search) ? strlen (search) : 0; for (i = 0; (i < win->ysize) && (lines[GETSKIP (skip, sskip) + i]); i++) { unsigned char *pt = (unsigned char *)(lines[GETSKIP (skip, sskip) + i]); + int highlight = 0; for (j = 0; (j < win->xsize) && (pt[j] != '\0'); j++) { + if ((slen) && (strncmp ((char *)(pt + j), search, slen) == 0)) { + highlight = slen; + } if (pt[j] == 128) { set_color (imagenta); mvaddch (win->yoffset + i, win->xoffset + j, '.'); - set_color (black); } else { + if (highlight) { + set_color (ired); + highlight--; + } mvaddch (win->yoffset + i, win->xoffset + j, (char)pt[j]); } + set_color (black); } for (; j < win->xsize; j++) { mvaddch (win->yoffset + i, win->xoffset + j, ' '); -- 2.30.2