Annotation of 43BSDTahoe/usr.lib/libI77/c_iio.c, revision 1.1

1.1     ! root        1: /*
        !             2:  * Copyright (c) 1980 Regents of the University of California.
        !             3:  * All rights reserved.  The Berkeley software License Agreement
        !             4:  * specifies the terms and conditions for redistribution.
        !             5:  *
        !             6:  *     @(#)c_iio.c     5.2     7/30/85
        !             7:  */
        !             8: 
        !             9: /*
        !            10:  * internal (character array) i/o: common portions
        !            11:  */
        !            12: 
        !            13: #include "fio.h"
        !            14: #include "lio.h"
        !            15: 
        !            16: LOCAL icilist *svic;           /* active internal io list */
        !            17: LOCAL lio_nl;
        !            18: 
        !            19: int z_wnew();
        !            20: 
        !            21: z_getc()
        !            22: {
        !            23:        if(formatted == LISTDIRECTED )
        !            24:        {
        !            25:                if( lio_nl == YES )
        !            26:                {
        !            27:                        recnum++;
        !            28:                        recpos = 0;
        !            29:                }
        !            30:                else if (recpos == svic->icirlen)
        !            31:                {
        !            32:                        lio_nl = YES;
        !            33:                        return('\n');
        !            34:                }
        !            35:                lio_nl = NO;
        !            36:        }
        !            37: 
        !            38:        if(icptr >= icend && !recpos)   /* new rec beyond eof */
        !            39:        {       leof = EOF;
        !            40:                return(EOF);
        !            41:        }
        !            42:        if(recpos++ < svic->icirlen) return(*icptr++);
        !            43:        return(' ');
        !            44: }
        !            45: 
        !            46: z_putc(c) char c;
        !            47: {
        !            48:        if(icptr < icend)
        !            49:        {       if(c=='\n') return(z_wnew());
        !            50:                if(recpos++ < svic->icirlen)
        !            51:                {       *icptr++ = c;
        !            52:                        return(OK);
        !            53:                }
        !            54:                else err(errflag,F_EREREC,"iio")
        !            55:        }
        !            56:        leof = EOF;
        !            57: #ifndef KOSHER
        !            58:        err(endflag,EOF,"iio")   /* NOT STANDARD, end-of-file on writes */
        !            59: #endif
        !            60: #ifdef KOSHER
        !            61:        err(errflag,F_EREREC,"iio")
        !            62: #endif
        !            63: }
        !            64: 
        !            65: z_ungetc(ch,cf) char ch;
        !            66: {      
        !            67:        if( lio_nl == YES )
        !            68:        {
        !            69:                lio_nl = NO;
        !            70:                return(OK);
        !            71:        }
        !            72:        if(ch==EOF || --recpos >= svic->icirlen) return(OK);
        !            73:        if(--icptr < svic->iciunit || recpos < 0) err(errflag,F_ERBREC,"ilio")
        !            74:        *icptr = ch;
        !            75:        return(OK);
        !            76: }
        !            77: 
        !            78: LOCAL
        !            79: c_fi(a) icilist *a;
        !            80: {
        !            81:        fmtbuf=a->icifmt;
        !            82:        formatted = FORMATTED;
        !            83:        external = NO;
        !            84:        cblank=cplus=NO;
        !            85:        scale=cursor=0;
        !            86:        radix = 10;
        !            87:        signit = YES;
        !            88:        elist = YES;
        !            89:        svic = a;
        !            90:        recpos=reclen=0;
        !            91:        icend = a->iciunit + a->icirnum*a->icirlen;
        !            92:        errflag = a->icierr;
        !            93:        endflag = a->iciend;
        !            94:        return(OK);
        !            95: }
        !            96: 
        !            97: c_si(a) icilist *a;
        !            98: {
        !            99:        sequential = YES;
        !           100:        recnum = 0;
        !           101:        icptr = a->iciunit;
        !           102:        return(c_fi(a));
        !           103: }
        !           104: 
        !           105: c_di(a) icilist *a;
        !           106: {
        !           107:        sequential = NO;
        !           108:        recnum = a->icirec - 1;
        !           109:        icptr = a->iciunit + recnum*a->icirlen;
        !           110:        return(c_fi(a));
        !           111: }
        !           112: 
        !           113: z_rnew()
        !           114: {
        !           115:        icptr = svic->iciunit + (++recnum)*svic->icirlen;
        !           116:        recpos = reclen = cursor = 0;
        !           117:        return(OK);
        !           118: }
        !           119: 
        !           120: z_wnew()
        !           121: {
        !           122:        if(reclen > recpos)
        !           123:        {       icptr += (reclen - recpos);
        !           124:                recpos = reclen;
        !           125:        }
        !           126:        while(recpos < svic->icirlen) (*putn)(' ');
        !           127:        recpos = reclen = cursor = 0;
        !           128:        recnum++;
        !           129:        return(OK);
        !           130: }
        !           131: 
        !           132: z_tab()
        !           133: {      int n;
        !           134:        if(reclen < recpos) reclen = recpos;
        !           135:        if((recpos + cursor) < 0) cursor = -recpos;     /* to BOR */
        !           136:        n = reclen - recpos;
        !           137:        if(!reading && (cursor-n) > 0)
        !           138:        {       icptr += n;
        !           139:                recpos = reclen;
        !           140:                cursor -= n;
        !           141:                while(cursor--) if(n=(*putn)(' ')) return(n);
        !           142:        }
        !           143:        else
        !           144:        {       icptr += cursor;
        !           145:                recpos += cursor;
        !           146:        }
        !           147:        return(cursor=0);
        !           148: }
        !           149: 
        !           150: c_li(a) icilist *a;
        !           151: {
        !           152:        fmtbuf="int list io";
        !           153:        sequential = YES;
        !           154:        formatted = LISTDIRECTED;
        !           155:        external = NO;
        !           156:        elist = YES;
        !           157:        svic = a;
        !           158:        recnum = recpos = 0;
        !           159:        cplus = cblank = NO;
        !           160:        lio_nl = NO;
        !           161:        icptr = a->iciunit;
        !           162:        icend = icptr + a->icirlen * a->icirnum;
        !           163:        errflag = a->icierr;
        !           164:        endflag = a->iciend;
        !           165:        leof = NO;
        !           166:        return(OK);
        !           167: }

unix.superglobalmegacorp.com

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