1: /*
2: * Seek for standard library. Coordinates with buffering.
3: */
4:
5: #include <stdio.h>
6:
7: long lseek();
8:
9: fseek(iop, offset, ptrname)
10: register FILE *iop;
11: long offset;
12: {
13: register int c;
14: long p;
15:
16: iop->_flag &= ~_IOEOF;
17: if (iop->_flag & _IOREAD) {
18: if (ptrname < 2 && iop->_base && !(iop->_flag&_IONBF)) {
19: c = iop->_cnt;
20: p = offset;
21: if (ptrname == 0)
22: p += c - lseek(fileno(iop), 0L, 1);
23: else
24: offset -= c;
25: if (!(iop->_flag&_IORW) && c > 0 && p <= c
26: && p >= iop->_base - iop->_ptr){
27: iop->_ptr += (int) p;
28: iop->_cnt -= (int) p;
29: return(0);
30: }
31: }
32: if (iop->_flag & _IORW) {
33: iop->_ptr = iop->_base;
34: iop->_flag &= ~_IOREAD;
35: }
36: p = lseek(fileno(iop), offset, ptrname);
37: iop->_cnt = 0;
38: } else if(iop->_flag & (_IOWRT|_IORW)) {
39: fflush(iop);
40: if (iop->_flag & _IORW) {
41: iop->_cnt = 0;
42: iop->_flag &= ~_IOWRT;
43: iop->_ptr = iop->_base;
44: }
45: p = lseek(fileno(iop), offset, ptrname);
46: }
47: return(p==-1? -1: 0);
48: }
Defined functions
fseek
defined in line
9; used 63 times
- in /usr/src/cmd/diff.c line
589
- in /usr/src/cmd/diff3.c line
379,
412
- in /usr/src/cmd/dumpdir.c line
335
- in /usr/src/cmd/f77/putscj.c line
65-68(2)
- in /usr/src/cmd/grep.c line
452
- in /usr/src/cmd/join.c line
119,
127-131(2)
- in /usr/src/cmd/look.c line
57-61(2),
84
- in /usr/src/cmd/mail.c line
283-286(2),
330
- in /usr/src/cmd/make/files.c line
188,
431,
450
- in /usr/src/cmd/nm.c line
91,
109,
223
- in /usr/src/cmd/od.c line
248
- in /usr/src/cmd/prof.c line
111,
194
- in /usr/src/cmd/ranlib.c line
41,
58,
105
- in /usr/src/cmd/refer/deliv1.c line
39
- in /usr/src/cmd/refer/hunt1.c line
119
- in /usr/src/cmd/refer/hunt2.c line
66,
108
- in /usr/src/cmd/refer/hunt5.c line
17
- in /usr/src/cmd/refer/hunt6.c line
34,
104
- in /usr/src/cmd/refer/hunt7.c line
95
- in /usr/src/cmd/refer/inv5.c line
44
- in /usr/src/cmd/refer/mkey2.c line
88
- in /usr/src/cmd/struct/1.form.c line
197
- in /usr/src/cmd/tar/tar.c line
716,
801
- in /usr/src/games/hangman.c line
51,
119
- in /usr/src/games/quiz.c line
349
- in /usr/src/libI77/backspace.c line
25-31(3),
39-44(2)
- in /usr/src/libI77/dfe.c line
65
- in /usr/src/libI77/due.c line
32,
40
- in /usr/src/libI77/endfile.c line
23,
30
- in /usr/src/libI77/err.c line
100,
108
- in /usr/src/libI77/open.c line
48
- in /usr/src/libI77/rdfmt.c line
9
- in /usr/src/libI77/sue.c line
32,
54-61(3)
- in /usr/src/libI77/wrtfmt.c line
10