annotate 3rdparty/packages/ed/find.c @ 994:bef1844de0dc

The ED editor ported from Minix
author roug
date Sun, 23 Feb 2003 21:11:37 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
994
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
1 /* find.c */
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
2 #include <stdio.h>
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
3 #include "tools.h"
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
4 #include "ed.h"
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
5
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
6 int find(pat, dir)
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
7 TOKEN *pat;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
8 int dir;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
9 {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
10 int i, num;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
11 char lin[MAXLINE];
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
12 LINE *ptr;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
13
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
14 num = curln;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
15 ptr = getptr(curln);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
16 num = (dir ? nextln(num) : prevln(num));
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
17 ptr = (dir ? ptr->l_next : ptr->l_prev);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
18 for (i = 0; i < lastln; i++) {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
19 if (num == 0) {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
20 num = (dir ? nextln(num) : prevln(num));
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
21 ptr = (dir ? ptr->l_next : ptr->l_prev);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
22 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
23 strcpy(lin, ptr->l_buff);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
24 strcat(lin, "\n");
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
25 if (matchs(lin, pat, 0)) {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
26 return(num);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
27 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
28 num = (dir ? nextln(num) : prevln(num));
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
29 ptr = (dir ? ptr->l_next : ptr->l_prev);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
30 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
31 return(ERR);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
32 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
33