home *** CD-ROM | disk | FTP | other *** search
- #include "f2c.h"
- #include "fio.h"
- #include "lio.h"
-
- extern flag lquit;
- extern int lcount;
- extern int l_read();
- extern char *icptr;
- extern char *icend;
- extern icilist *svic;
- extern int icnum, recpos;
- extern int (*l_getc)(), (*l_ungetc)();
-
- int i_getc()
- {
- if(++recpos >= svic->icirlen) {
- if (recpos == svic->icirlen)
- return '\n';
- z_rnew();
- }
- if(icptr >= icend) err(svic->iciend,(EOF),"endfile");
- return(*icptr++);
- }
-
- int i_ungetc(ch)
- int ch;
- {
- if (--recpos == svic->icirlen)
- return '\n';
- if (recpos < -1)
- err(svic->icierr,110,"recend");
- /* *--icptr == ch, and icptr may point to read-only memory */
- return *--icptr /* = ch */;
- }
-
- static void
- c_lir(a)
- icilist *a;
- {
- extern int l_eof;
- reading = 1;
- external = 0;
- formatted = 1;
- svic = a;
- L_len = a->icirlen;
- recpos = -1;
- icnum = recpos = 0;
- cursor = 0;
- l_getc = i_getc;
- l_ungetc = i_ungetc;
- l_eof = 0;
- icptr = a->iciunit;
- icend = icptr + a->icirlen*a->icirnum;
- cf = 0;
- curunit = 0;
- }
-
-
- integer s_rsli(a) icilist *a;
- {
- lioproc = l_read;
- lquit = 0;
- lcount = 0;
- c_lir(a);
- return(0);
- }
-
- integer e_rsli()
- { return 0; }
-
- s_rsni(a)
- icilist *a;
- {
- cilist ca;
- ca.ciend = a->iciend;
- ca.cierr = a->icierr;
- ca.cifmt = a->icifmt;
- c_lir(a);
- return x_rsne(&ca);
- }
-