Annotation of 41BSD/lib/libI77uc/iio.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * internal (character array) i/o
                      3:  */
                      4: 
                      5: #include "fio.h"
                      6: #include "lio.h"
                      7: 
                      8: extern int rd_ed(),rd_ned(),w_ed(),w_ned();
                      9: extern int l_read(),l_write();
                     10: int z_wnew(),z_rnew(),z_tab();
                     11: 
                     12: z_getc()
                     13: {
                     14:        if(icptr >= icend && !recpos)   /* new rec beyond eof */
                     15:        {       leof = EOF;
                     16:                return(EOF);
                     17:        }
                     18:        if(recpos++ < svic->icirlen) return(*icptr++);
                     19:        return(' ');
                     20: }
                     21: 
                     22: z_putc(c) char c;
                     23: {
                     24:        if(icptr < icend)
                     25:        {       if(c=='\n') return(z_wnew());
                     26:                if(recpos++ < svic->icirlen)
                     27:                {       *icptr++ = c;
                     28:                        return(OK);
                     29:                }
                     30:                else err(errflag,110,"iio")
                     31:        }
                     32:        leof = EOF;
                     33: #ifndef KOSHER
                     34:        err(endflag,EOF,"iio")   /* NOT STANDARD, end-of-file on writes */
                     35: #endif
                     36: #ifdef KOSHER
                     37:        err(errflag,110,"iio")
                     38: #endif
                     39: }
                     40: 
                     41: z_ungetc(ch,cf) char ch;
                     42: {      if(ch==EOF || --recpos >= svic->icirlen) return(OK);
                     43:        if(--icptr < svic->iciunit || recpos < 0) err(errflag,107,"ilio")
                     44:        *icptr = ch;
                     45:        return(OK);
                     46: }
                     47: 
                     48: s_rsfi(a) icilist *a;
                     49: {
                     50:        reading = YES;
                     51:        doed=rd_ed;
                     52:        doned=rd_ned;
                     53:        getn=z_getc;
                     54:        doend = donewrec = z_rnew;
                     55:        dorevert = z_rnew;
                     56:        dotab = z_tab;
                     57:        return(c_si(a));
                     58: }
                     59: 
                     60: s_wsfi(a) icilist *a;
                     61: {
                     62:        reading = NO;
                     63:        doed=w_ed;
                     64:        doned=w_ned;
                     65:        putn=z_putc;
                     66:        doend = donewrec = z_wnew;
                     67:        dorevert = z_wnew;
                     68:        dotab = z_tab;
                     69:        return(c_si(a));
                     70: }
                     71: 
                     72: s_rdfi(a) icilist *a;
                     73: {
                     74:        reading = YES;
                     75:        doed = rd_ed;
                     76:        doned = rd_ned;
                     77:        getn = z_getc;
                     78:        donewrec = z_rnew;
                     79:        dorevert = doend = z_rnew;
                     80:        dotab = z_tab;
                     81:        return(c_di(a));
                     82: }
                     83: 
                     84: s_wdfi(a) icilist *a;
                     85: {
                     86:        reading = NO;
                     87:        doed = w_ed;
                     88:        doned = w_ned;
                     89:        putn = z_putc;
                     90:        donewrec = z_wnew;
                     91:        dorevert = doend = z_wnew;
                     92:        dotab = z_tab;
                     93:        return(c_di(a));
                     94: }
                     95: 
                     96: c_fi(a) icilist *a;
                     97: {
                     98:        fmtbuf=a->icifmt;
                     99:        formatted = FORMATTED;
                    100:        external = NO;
                    101:        cblank=cplus=NO;
                    102:        scale=cursor=0;
                    103:        radix = 10;
                    104:        signit = YES;
                    105:        elist = YES;
                    106:        svic = a;
                    107:        recpos=reclen=0;
                    108:        icend = a->iciunit + a->icirnum*a->icirlen;
                    109:        errflag = a->icierr;
                    110:        endflag = a->iciend;
                    111:        if(pars_f(fmtbuf)) err(errflag,100,"ifio")
                    112:        fmt_bg();
                    113:        return(OK);
                    114: }
                    115: 
                    116: c_si(a) icilist *a;
                    117: {
                    118:        sequential = YES;
                    119:        recnum = 0;
                    120:        icptr = a->iciunit;
                    121:        return(c_fi(a));
                    122: }
                    123: 
                    124: c_di(a) icilist *a;
                    125: {
                    126:        sequential = NO;
                    127:        recnum = a->icirec - 1;
                    128:        icptr = a->iciunit + recnum*a->icirlen;
                    129:        return(c_fi(a));
                    130: }
                    131: 
                    132: z_rnew()
                    133: {
                    134:        icptr = svic->iciunit + (++recnum)*svic->icirlen;
                    135:        recpos = reclen = cursor = 0;
                    136:        return(OK);
                    137: }
                    138: 
                    139: z_wnew()
                    140: {
                    141:        if(reclen > recpos)
                    142:        {       icptr += (reclen - recpos);
                    143:                recpos = reclen;
                    144:        }
                    145:        while(recpos < svic->icirlen) (*putn)(' ');
                    146:        recpos = reclen = cursor = 0;
                    147:        recnum++;
                    148:        return(OK);
                    149: }
                    150: 
                    151: z_tab()
                    152: {      int n;
                    153:        if(reclen < recpos) reclen = recpos;
                    154:        if((recpos + cursor) < 0) return(107);
                    155:        n = reclen - recpos;
                    156:        if(!reading && (cursor-n) > 0)
                    157:        {       icptr += n;
                    158:                recpos = reclen;
                    159:                cursor -= n;
                    160:                while(cursor--) if(n=(*putn)(' ')) return(n);
                    161:        }
                    162:        else
                    163:        {       icptr += cursor;
                    164:                recpos += cursor;
                    165:        }
                    166:        return(cursor=0);
                    167: }
                    168: 
                    169: e_rsfi()
                    170: {      int n;
                    171:        n = en_fio();
                    172:        fmtbuf = NULL;
                    173:        return(n);
                    174: }
                    175: 
                    176: e_wsfi()
                    177: {
                    178:        return(e_rsfi());
                    179: }
                    180: 
                    181: e_rdfi()
                    182: {
                    183:        return(e_rsfi());
                    184: }
                    185: 
                    186: e_wdfi()
                    187: {
                    188:        return(e_wsfi());
                    189: }
                    190: 
                    191: c_li(a) icilist *a;
                    192: {
                    193:        fmtbuf="int list io";
                    194:        sequential = formatted = LISTDIRECTED;
                    195:        external = NO;
                    196:        elist = YES;
                    197:        svic = a;
                    198:        recnum = recpos = 0;
                    199:        cplus = cblank = NO;
                    200:        icptr = a->iciunit;
                    201:        icend = icptr + a->icirlen * a->icirnum;
                    202:        errflag = a->icierr;
                    203:        endflag = a->iciend;
                    204:        leof = NO;
                    205:        return(OK);
                    206: }
                    207: 
                    208: s_rsli(a) icilist *a;
                    209: {
                    210:        reading = YES;
                    211:        lioproc = l_read;
                    212:        getn = z_getc;
                    213:        ungetn = z_ungetc;
                    214:        l_first = YES;
                    215:        lcount = 0;
                    216:        lquit = NO;
                    217:        return(c_li(a));
                    218: }
                    219: 
                    220: s_wsli(a) icilist *a;
                    221: {
                    222:        reading = NO;
                    223:        putn = z_putc;
                    224:        lioproc = l_write;
                    225:        line_len = a->icirlen;
                    226:        return(c_li(a));
                    227: }
                    228: 
                    229: e_rsli()
                    230: {      fmtbuf = NULL;
                    231:        return(OK);
                    232: }
                    233: 
                    234: e_wsli()
                    235: {      fmtbuf = NULL;
                    236:        reclen = recpos;
                    237:        return(z_wnew());
                    238: }
                    239: 
                    240: ftnint
                    241: iiorec_()
                    242: {      return(recnum); }
                    243: 
                    244: ftnint
                    245: iiopos_()
                    246: {      return(recpos); }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.