source: trunk/third/gcc/libf2c/libI77/due.c @ 18477

Revision 18477, 1.7 KB checked in by ghudson, 21 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18476, which included commits to RCS files with non-trunk default branches.
Line 
1#include "config.h"
2#include "f2c.h"
3#include "fio.h"
4
5#ifdef KR_headers
6c_due(a) cilist *a;
7#else
8c_due(cilist *a)
9#endif
10{
11        if(f__init != 1) f_init();
12        f__init = 3;
13        if(a->ciunit>=MXUNIT || a->ciunit<0)
14                err(a->cierr,101,"startio");
15        f__sequential=f__formatted=f__recpos=0;
16        f__external=1;
17        f__curunit = &f__units[a->ciunit];
18        if(a->ciunit>=MXUNIT || a->ciunit<0)
19                err(a->cierr,101,"startio");
20        f__elist=a;
21        if(f__curunit->ufd==NULL && fk_open(DIR,UNF,a->ciunit) ) err(a->cierr,104,"due");
22        f__cf=f__curunit->ufd;
23        if(f__curunit->ufmt) err(a->cierr,102,"cdue");
24        if(!f__curunit->useek) err(a->cierr,104,"cdue");
25        if(f__curunit->ufd==NULL) err(a->cierr,114,"cdue");
26        if(a->cirec <= 0)
27                err(a->cierr,130,"due");
28        FSEEK(f__cf,(off_t)(a->cirec-1)*f__curunit->url,SEEK_SET);
29        f__curunit->uend = 0;
30        return(0);
31}
32#ifdef KR_headers
33integer s_rdue(a) cilist *a;
34#else
35integer s_rdue(cilist *a)
36#endif
37{
38        int n;
39        f__reading=1;
40        if(n=c_due(a)) return(n);
41        if(f__curunit->uwrt && f__nowreading(f__curunit))
42                err(a->cierr,errno,"read start");
43        return(0);
44}
45#ifdef KR_headers
46integer s_wdue(a) cilist *a;
47#else
48integer s_wdue(cilist *a)
49#endif
50{
51        int n;
52        f__reading=0;
53        if(n=c_due(a)) return(n);
54        if(f__curunit->uwrt != 1 && f__nowwriting(f__curunit))
55                err(a->cierr,errno,"write start");
56        return(0);
57}
58integer e_rdue(Void)
59{
60        f__init = 1;
61        if(f__curunit->url==1 || f__recpos==f__curunit->url)
62                return(0);
63        FSEEK(f__cf,(off_t)(f__curunit->url-f__recpos),SEEK_CUR);
64        if(FTELL(f__cf)%f__curunit->url)
65                err(f__elist->cierr,200,"syserr");
66        return(0);
67}
68integer e_wdue(Void)
69{
70        f__init = 1;
71#ifdef ALWAYS_FLUSH
72        if (fflush(f__cf))
73                err(f__elist->cierr,errno,"write end");
74#endif
75        return(e_rdue());
76}
Note: See TracBrowser for help on using the repository browser.