Annotation of 42BSD/usr.lib/libI77/iio.c, revision 1.1

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

unix.superglobalmegacorp.com

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