+int buffer_size = 1024;
+int nb_lines_max = 100000;
+
+int match(char *string, char *regexp) {
+ return strstr(string, regexp) != 0;
+}
+
+void check_opt(int argc, char **argv, int n_opt, int n, const char *help) {
+ if(n_opt + n >= argc) {
+ cerr << "Missing argument for " << argv[n_opt] << ". Expecting " << help << "." << endl;
+ exit(1);
+ }
+}
+
+int previous_visible(int current_line, int nb_lines, char **lines, char *regexp) {
+ int line = current_line - 1;
+ while(line >= 0 && !match(lines[line], regexp)) line--;
+ return line;
+}
+
+int next_visible(int current_line, int nb_lines, char **lines, char *regexp) {
+ int line = current_line + 1;
+ while(line < nb_lines && !match(lines[line], regexp)) line++;
+
+ if(line < nb_lines)
+ return line;
+ else
+ return -1;
+}
+
+void update_screen(int *current_line, int motion,
+ int nb_lines, char **lines,
+ char *regexp, int noblink) {