Annotation of cci/usr/src/usr.lib/libI77/c_dfe.c, revision 1.1.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_dfe.c     5.1     6/7/85
                      7:  */
                      8: 
                      9: /*
                     10:  * direct formatted external i/o - common read/write routines
                     11:  */
                     12: 
                     13: #include "fio.h"
                     14: 
                     15: c_dfe(a,paramflag,str) cilist *a; char *str;
                     16: {      int n;
                     17:        sequential = NO;
                     18:        external = formatted = FORMATTED;
                     19:        lfname = NULL;
                     20:        elist = NO;
                     21:        cursor=scale=recpos=reclen=0;
                     22:        radix = 10;
                     23:        signit = YES;
                     24:        fmtbuf = a->cifmt;
                     25:        errflag = a->cierr;
                     26:        endflag = a->ciend;
                     27:        lunit = a->ciunit;
                     28:        if(not_legal(lunit)) err(errflag,F_ERUNIT,str);
                     29:        curunit = &units[lunit];
                     30:        if(!curunit->ufd && (n=fk_open(paramflag,DIR,FMT,(ftnint)lunit)))
                     31:                err(errflag,n,str)
                     32:        cf = curunit->ufd;
                     33:        elist = YES;
                     34:        lfname = curunit->ufnm;
                     35:        if(!curunit->ufmt) err(errflag,F_ERNOFIO,str)
                     36:        if(!curunit->useek || !curunit->url) err(errflag,F_ERNODIO,str)
                     37:        recnum = a->cirec - 1;
                     38:        fseek(cf, (long)curunit->url * recnum, 0);
                     39:        cblank = curunit->ublnk;
                     40:        cplus = NO;
                     41:        return(OK);
                     42: }
                     43: 
                     44: y_tab()
                     45: {      int n;
                     46:        if(curunit->url==1)
                     47:        {
                     48:                if(cursor < 0 && -cursor > ftell(cf)) rewind(cf);
                     49:                else    fseek(cf,(long)cursor,1);
                     50:                return(cursor=0);
                     51:        }
                     52:        else
                     53:        {       if(reclen < recpos) reclen = recpos;
                     54:                if((recpos + cursor) < 0) cursor = -recpos;     /* BOR */
                     55:                n = reclen - recpos;            /* n >= 0 */
                     56:                if(!reading && (cursor-n) > 0)
                     57:                {       recpos = reclen;
                     58:                        cursor -= n;
                     59:                        fseek(cf,(long)n,1);
                     60:                        while(cursor--) if(n=(*putn)(' ')) return(n);
                     61:                        return(cursor=0);
                     62:                }
                     63:                recpos += cursor;
                     64:                if(recpos >= curunit->url) err(errflag,F_EREREC,"dfe")
                     65:        }
                     66:        fseek(cf,(long)cursor,1);
                     67:        return(cursor=0);
                     68: }

unix.superglobalmegacorp.com

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