Annotation of 40BSD/lib/libI77/sue.c, revision 1.1.1.1

1.1       root        1: #include "fio.h"
                      2: extern int reclen;
                      3: long recloc;
                      4: s_rsue(a) cilist *a;
                      5: {
                      6:        int n;
                      7:        if(!init) f_init();
                      8:        if(n=c_sue(a)) return(n);
                      9:        reading=1;
                     10:        recpos=0;
                     11:        if(curunit->uwrt) (void) nowreading(curunit);
                     12:        if(fread((char *)&reclen,sizeof(int),1,cf)
                     13:                != 1)
                     14:        {       if(feof(cf))
                     15:                {       curunit->uend = 1;
                     16:                        err(a->ciend, EOF, "start");
                     17:                }
                     18:                clearerr(cf);
                     19:                err(a->cierr, errno, "start");
                     20:        }
                     21:        return(0);
                     22: }
                     23: s_wsue(a) cilist *a;
                     24: {
                     25:        int n;
                     26:        if(!init) f_init();
                     27:        if(n=c_sue(a)) return(n);
                     28:        reading=0;
                     29:        reclen=0;
                     30:        if(!curunit->uwrt) (void) nowwriting(curunit);
                     31:        recloc=ftell(cf);
                     32:        (void) fseek(cf,(long)sizeof(int),1);
                     33:        return(0);
                     34: }
                     35: c_sue(a) cilist *a;
                     36: {
                     37:        if(a->ciunit >= MXUNIT || a->ciunit < 0)
                     38:                err(a->cierr,101,"startio");
                     39:        external=sequential=1;
                     40:        formatted=0;
                     41:        curunit = &units[a->ciunit];
                     42:        elist=a;
                     43:        if(curunit->ufd==NULL && fk_open(SEQ,UNF,a->ciunit))
                     44:                err(a->cierr,114,"sue");
                     45:        cf=curunit->ufd;
                     46:        if(curunit->ufmt) err(a->cierr,103,"sue")
                     47:        if(!curunit->useek) err(a->cierr,103,"sue")
                     48:        return(0);
                     49: }
                     50: e_wsue()
                     51: {      long loc;
                     52:        (void) fwrite((char *)&reclen,sizeof(int),1,cf);
                     53:        loc=ftell(cf);
                     54:        (void) fseek(cf,recloc,0);
                     55:        (void) fwrite((char *)&reclen,sizeof(int),1,cf);
                     56:        (void) fseek(cf,loc,0);
                     57:        return(0);
                     58: }
                     59: e_rsue()
                     60: {
                     61:        (void) fseek(cf,(long)(reclen-recpos+sizeof(int)),1);
                     62:        return(0);
                     63: }

unix.superglobalmegacorp.com

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