const int buffer_size = 1024;
const int nb_lines_max = 100000;
-void refresh_screen(int *screen_line, int *line, int nb_lines, char **lines, char *regexp, int noblink) {
+int refresh_screen(int *screen_line, int *line, int nb_lines, char **lines, char *regexp, int noblink) {
char buffer[buffer_size];
int maxx = getmaxx(stdscr);
int nb_printed_lines = 1, last_printer_line = -1;
int y = 0;
+ int current_line = -1;
while(nb_printed_lines < maxy && y < nb_lines) {
if(strstr(lines[y], regexp) &&
attron(COLOR_PAIR(2));
printw(buffer);
attroff(COLOR_PAIR(2));
+ current_line = y;
} else {
printw(buffer);
}
attroff(COLOR_PAIR(1));
refresh(); // After doing something on the display, we refresh it
+
+ return current_line;
}
int main(int argc, char **argv) {
refresh_screen(&screen_line, &line, nb_lines, lines, regexp, noblink);
+ int current_line = -1;
+
do {
key = getch();
line++;
}
- refresh_screen(&screen_line, &line, nb_lines, lines, regexp, noblink);
+ current_line = refresh_screen(&screen_line, &line, nb_lines, lines, regexp, noblink);
} while(key != '\n' && key != KEY_ENTER && key != '\a');
echo();
curs_set(1);
endwin();
+ ofstream out("/tmp/selector.out");
+ out << lines[current_line] << endl;
+ out.flush();
+
for(int l = 0; l < nb_lines; l++) {
delete[] lines[l];
}