Annotation of 41BSD/lib/libI77uc/iio.c, revision 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.