rsfe.c
Go to the documentation of this file.
00001 /* read sequential formatted external */
00002 #include "f2c.h"
00003 #include "fio.h"
00004 #include "fmt.h"
00005 #ifdef __cplusplus
00006 extern "C" {
00007 #endif
00008 
00009  int
00010 xrd_SL(Void)
00011 {       int ch;
00012         if(!f__curunit->uend)
00013                 while((ch=getc(f__cf))!='\n')
00014                         if (ch == EOF) {
00015                                 f__curunit->uend = 1;
00016                                 break;
00017                                 }
00018         f__cursor=f__recpos=0;
00019         return(1);
00020 }
00021 
00022  int
00023 x_getc(Void)
00024 {       int ch;
00025         if(f__curunit->uend) return(EOF);
00026         ch = getc(f__cf);
00027         if(ch!=EOF && ch!='\n')
00028         {       f__recpos++;
00029                 return(ch);
00030         }
00031         if(ch=='\n')
00032         {       (void) ungetc(ch,f__cf);
00033                 return(ch);
00034         }
00035         if(f__curunit->uend || feof(f__cf))
00036         {       errno=0;
00037                 f__curunit->uend=1;
00038                 return(-1);
00039         }
00040         return(-1);
00041 }
00042 
00043  int
00044 x_endp(Void)
00045 {
00046         xrd_SL();
00047         return f__curunit->uend == 1 ? EOF : 0;
00048 }
00049 
00050  int
00051 x_rev(Void)
00052 {
00053         (void) xrd_SL();
00054         return(0);
00055 }
00056 #ifdef KR_headers
00057 integer s_rsfe(a) cilist *a; /* start */
00058 #else
00059 integer s_rsfe(cilist *a) /* start */
00060 #endif
00061 {       int n;
00062         if(!f__init) f_init();
00063         f__reading=1;
00064         f__sequential=1;
00065         f__formatted=1;
00066         f__external=1;
00067         if(n=c_sfe(a)) return(n);
00068         f__elist=a;
00069         f__cursor=f__recpos=0;
00070         f__scale=0;
00071         f__fmtbuf=a->cifmt;
00072         f__cf=f__curunit->ufd;
00073         if(pars_f(f__fmtbuf)<0) err(a->cierr,100,"startio");
00074         f__getn= x_getc;
00075         f__doed= rd_ed;
00076         f__doned= rd_ned;
00077         fmt_bg();
00078         f__doend=x_endp;
00079         f__donewrec=xrd_SL;
00080         f__dorevert=x_rev;
00081         f__cblank=f__curunit->ublnk;
00082         f__cplus=0;
00083         if(f__curunit->uwrt && f__nowreading(f__curunit))
00084                 err(a->cierr,errno,"read start");
00085         if(f__curunit->uend)
00086                 err(f__elist->ciend,(EOF),"read start");
00087         return(0);
00088 }
00089 #ifdef __cplusplus
00090 }
00091 #endif


swiftnav
Author(s):
autogenerated on Sat Jun 8 2019 18:55:56