- while(nb_printed_lines < maxy && y < nb_lines) {
- if(strstr(lines[y], regexp) &&
- (last_printer_line < 0 || strcmp(lines[y], lines[last_printer_line]))) {
- int k = 0;
+ int new_line;
+ if(motion >= 0) {
+ new_line = *current_line + motion;
+ while(new_line < nb_lines && !match(lines[new_line], regexp)) {
+ new_line++;
+ }
+ if(new_line == nb_lines) {
+ new_line = *current_line;
+ while(new_line >= 0 && ! match(lines[new_line], regexp)) {
+ new_line--;
+ }
+ }
+ } else {
+
+ new_line = *current_line - 1;
+ while(new_line >= 0 && ! match(lines[new_line], regexp)) {
+ new_line--;
+ }