#include "f2c.h" #include "fio.h" #include "fmt.h" extern char *f__icptr; char *f__icend; extern icilist *f__svic; int f__icnum; extern int f__hiwater; int z_getc (void) { if (f__recpos++ < f__svic->icirlen) { if (f__icptr >= f__icend) err (f__svic->iciend, (EOF), "endfile"); return (*(unsigned char *) f__icptr++); } return '\n'; } void z_putc (int c) { if (f__recpos++ < f__svic->icirlen && f__icptr < f__icend) *f__icptr++ = c; } int z_rnew (void) { f__icptr = f__svic->iciunit + (++f__icnum) * f__svic->icirlen; f__recpos = 0; f__cursor = 0; f__hiwater = 0; return 1; } static int z_endp (void) { (*f__donewrec) (); return 0; } int c_si (icilist * a) { if (f__init & 2) f__fatal (131, "I/O recursion"); f__init |= 2; f__elist = (cilist *) a; f__fmtbuf = a->icifmt; f__curunit = 0; f__sequential = f__formatted = 1; f__external = 0; if (pars_f (f__fmtbuf) < 0) err (a->icierr, 100, "startint"); fmt_bg (); f__cblank = f__cplus = f__scale = 0; f__svic = a; f__icnum = f__recpos = 0; f__cursor = 0; f__hiwater = 0; f__icptr = a->iciunit; f__icend = f__icptr + a->icirlen * a->icirnum; f__cf = 0; return (0); } int iw_rev (void) { if (f__workdone) z_endp (); f__hiwater = f__recpos = f__cursor = 0; return (f__workdone = 0); } integer s_rsfi (icilist * a) { int n; if ((n = c_si (a))) return (n); f__reading = 1; f__doed = rd_ed; f__doned = rd_ned; f__getn = z_getc; f__dorevert = z_endp; f__donewrec = z_rnew; f__doend = z_endp; return (0); } int z_wnew (void) { if (f__recpos < f__hiwater) { f__icptr += f__hiwater - f__recpos; f__recpos = f__hiwater; } while (f__recpos++ < f__svic->icirlen) *f__icptr++ = ' '; f__recpos = 0; f__cursor = 0; f__hiwater = 0; f__icnum++; return 1; } integer s_wsfi (icilist * a) { int n; if ((n = c_si (a))) return (n); f__reading = 0; f__doed = w_ed; f__doned = w_ned; f__putn = z_putc; f__dorevert = iw_rev; f__donewrec = z_wnew; f__doend = z_endp; return (0); } integer e_rsfi (void) { int n; f__init &= ~2; n = en_fio (); f__fmtbuf = NULL; return (n); } integer e_wsfi (void) { int n; f__init &= ~2; n = en_fio (); f__fmtbuf = NULL; if (f__svic->icirnum != 1 && (f__icnum > f__svic->icirnum || (f__icnum == f__svic->icirnum && (f__recpos | f__hiwater)))) err (f__svic->icierr, 110, "inwrite"); if (f__recpos < f__hiwater) f__recpos = f__hiwater; if (f__recpos >= f__svic->icirlen) err (f__svic->icierr, 110, "recend"); if (!f__recpos && f__icnum) return n; while (f__recpos++ < f__svic->icirlen) *f__icptr++ = ' '; return n; }