994
|
1 /* find.c */
|
|
2 #include <stdio.h>
|
|
3 #include "tools.h"
|
|
4 #include "ed.h"
|
|
5
|
|
6 int find(pat, dir)
|
|
7 TOKEN *pat;
|
|
8 int dir;
|
|
9 {
|
|
10 int i, num;
|
|
11 char lin[MAXLINE];
|
|
12 LINE *ptr;
|
|
13
|
|
14 num = curln;
|
|
15 ptr = getptr(curln);
|
|
16 num = (dir ? nextln(num) : prevln(num));
|
|
17 ptr = (dir ? ptr->l_next : ptr->l_prev);
|
|
18 for (i = 0; i < lastln; i++) {
|
|
19 if (num == 0) {
|
|
20 num = (dir ? nextln(num) : prevln(num));
|
|
21 ptr = (dir ? ptr->l_next : ptr->l_prev);
|
|
22 }
|
|
23 strcpy(lin, ptr->l_buff);
|
|
24 strcat(lin, "\n");
|
|
25 if (matchs(lin, pat, 0)) {
|
|
26 return(num);
|
|
27 }
|
|
28 num = (dir ? nextln(num) : prevln(num));
|
|
29 ptr = (dir ? ptr->l_next : ptr->l_prev);
|
|
30 }
|
|
31 return(ERR);
|
|
32 }
|
|
33
|