Commit | Line | Data |
---|---|---|
0148435a KM |
1 | /* Copyright (c) 1979 Regents of the University of California */ |
2 | ||
492cc5d3 | 3 | static char sccsid[] = "@(#)READE.c 1.4 %G%"; |
0148435a KM |
4 | |
5 | #include "h00vars.h" | |
6 | #include "h01errs.h" | |
7 | ||
492cc5d3 | 8 | long |
0148435a KM |
9 | READE(curfile, name) |
10 | ||
11 | register struct iorec *curfile; | |
12 | char *name; | |
13 | { | |
0148435a KM |
14 | register short *sptr; |
15 | register int len; | |
16 | register int nextlen; | |
17 | register int cnt; | |
18 | char *cp; | |
19 | char namebuf[NAMSIZ]; | |
53909d1e | 20 | int retval; |
0148435a KM |
21 | |
22 | if (curfile->funit & FWRITE) { | |
23 | ERROR(EREADIT, curfile->pfname); | |
24 | return; | |
25 | } | |
26 | UNSYNC(curfile); | |
53909d1e | 27 | retval = fscanf(curfile->fbuf, |
0148435a | 28 | "%*[ \t\n]%74[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]", |
53909d1e KM |
29 | namebuf); |
30 | if (retval == EOF) { | |
31 | ERROR(EPASTEOF, curfile->pfname); | |
32 | return; | |
33 | } | |
34 | if (retval == 0) { | |
0148435a KM |
35 | ERROR(ENUMNTFD, namebuf); |
36 | return; | |
37 | } | |
e5053b93 | 38 | curfile->funit &= ~EOLN; |
0148435a KM |
39 | curfile->funit |= SYNC; |
40 | for (len = 0; len < NAMSIZ && namebuf[len]; len++) | |
41 | /* void */; | |
42 | len++; | |
43 | sptr = (short *)name; | |
44 | cnt = *sptr++; | |
45 | cp = name + sizeof (short) + *sptr; | |
46 | do { | |
47 | nextlen = *sptr++; | |
48 | nextlen = *sptr - nextlen; | |
49 | if (nextlen == len && RELEQ(len, namebuf, cp)) { | |
50 | return *((short *) name) - cnt; | |
51 | } | |
492cc5d3 | 52 | cp += (int)nextlen; |
0148435a KM |
53 | } while (--cnt); |
54 | ERROR(ENUMNTFD, namebuf); | |
55 | } |