1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)c_sfe.c 5.2 7/30/85
7: */
8:
9: /*
10: * sequential formatted external I/O - common read & write routines
11: */
12:
13: #include "fio.h"
14:
15: c_sfe(a,flag,mode,str) cilist *a; char *str; /* check */
16: { unit *p;
17: int n;
18:
19: external=YES;
20: formatted=FORMATTED;
21: fmtbuf=a->cifmt;
22: lfname = NULL;
23: elist = NO;
24: errflag = a->cierr;
25: endflag = a->ciend;
26: lunit = a->ciunit;
27: if(not_legal(lunit)) err(errflag,F_ERUNIT,str);
28: curunit = p = &units[lunit];
29: if(!p->ufd && (n=fk_open(flag,mode,FMT,(ftnint)lunit)) )
30: err(errflag,n,str)
31: cf = curunit->ufd;
32: elist = YES;
33: lfname = curunit->ufnm;
34: if(!p->ufmt) err(errflag,F_ERNOFIO,str)
35: cursor=recpos=scale=reclen=0;
36: radix = 10;
37: signit = YES;
38: cblank = curunit->ublnk;
39: cplus = NO;
40: return(OK);
41: }
42:
43: x_tab()
44: { int n;
45: if(reclen < recpos) reclen = recpos;
46: if(curunit->useek)
47: { if((recpos+cursor) < 0) cursor = -recpos; /* to BOR */
48: n = reclen - recpos; /* distance to eor, n>=0 */
49: if((cursor-n) > 0)
50: { fseek(cf,(long)n,1); /* find current eor */
51: recpos = reclen;
52: cursor -= n;
53: }
54: else
55: { fseek(cf,(long)cursor,1); /* do not pass go */
56: recpos += cursor;
57: return(cursor=0);
58: }
59: }
60: else
61: if(cursor < 0) return(F_ERSEEK); /* can't go back */
62: while(cursor--)
63: { if(reading)
64: { n = (*getn)();
65: if(n=='\n') return(cursor=0); /* be tolerant */
66: if(n==EOF) return(EOF);
67: }
68: else (*putn)(' '); /* fill in the empty record */
69: }
70: return(cursor=0);
71: }
Defined functions
c_sfe
defined in line
15; used 2 times
x_tab
defined in line
43; used 4 times