annotate 3rdparty/packages/ed/getnum.c @ 1124:c2b85c18a13a

Makefiles now use os9 attr
author boisy
date Sun, 13 Apr 2003 22:26:31 +0000
parents bef1844de0dc
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 /* getnum.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 mark['z' - 'a' + 1];
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
7
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
8 int getnum(first)
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
9 int first;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
10 {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
11 TOKEN *srchpat;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
12 int num;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
13 char c;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
14
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
15 while (*inptr == SP || *inptr == HT) inptr++;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
16
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
17 if (*inptr >= '0' && *inptr <= '9') { /* line number */
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
18 for (num = 0; *inptr >= '0' && *inptr <= '9';) {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
19 num = (num * 10) + *inptr - '0';
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
20 inptr++;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
21 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
22 return num;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
23 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
24 switch (c = *inptr) {
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
25 case '.':
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
26 inptr++;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
27 return(curln);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
28
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
29 case '$':
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
30 inptr++;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
31 return(lastln);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
32
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
33 case '/':
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
34 case '?':
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
35 srchpat = optpat();
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
36 if (*inptr == c) inptr++;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
37 return(find(srchpat, c == '/' ? 1 : 0));
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
38
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
39 case '-':
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
40 case '+':
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
41 return(first ? curln : 1);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
42
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
43 case '\'':
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
44 inptr++;
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
45 if (*inptr < 'a' || *inptr > 'z') return(EOF);
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
46
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
47 return mark[*inptr++ - 'a'];
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
48
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
49 default:
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
50 return(first ? EOF : 1);/* unknown address */
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
51 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
52 }
bef1844de0dc The ED editor ported from Minix
roug
parents:
diff changeset
53