pt = getwindow ("Search", win, 12, MAXLEN, search);
free (search);
search = pt;
- sskip = find (lines, len, skip, search);
+ sskip = find (lines, len, skip, search, 0);
break;
case 'h':
helpwindow (_help, (win->xsize - strmaxlen (_help, '\n')) / 2, 3 * win->yoffset);
break;
case 'n':
if (search) {
- sskip = find (lines, len, GETSKIP (skip, sskip) + 1, search);
+ sskip = find (lines, len, GETSKIP (skip, sskip) + 1, search, 0);
if (sskip == -1) {
- sskip = find (lines, len, 0, search);
+ sskip = find (lines, len, 0, search, 0);
}
}
break;
return lines;
}
-int find (char **lines, int nblines, int skip, char *search)
+int find (char **lines, int nblines, int skip, char *search, int dir)
{
int len = strlen (search);
int i, j;
- for (i = skip; i < nblines; i++) {
+ for (i = skip; (dir) ? (i >= 0) : (i < nblines); i += (dir) ? -1 : 1) {
for (j = 0; lines[i][j] != 0; j++) {
if (strncmp (lines[i] + j, search, len) == 0) {
return i;
for (j = 0; j < list->nb; j++) {
_list[j] = (list->tab + j)->name;
}
- skip = find (_list, list->nb, skip, search);
+ skip = find (_list, list->nb, skip, search, (offset < 0));
if (skip != -1) {
*x = skip / height;
*y = skip % height;
char **splithexalines (char *buffer, int length, int width);
-int find (char **lines, int nblines, int skip, char *search);
+int find (char **lines, int nblines, int skip, char *search, int dir);
void jumpto (list_t *list, int nbcols, int pageheight, char *search, int *x, int *y, int *page, int offset);