Annotation of cci/usr/src/usr.lib/libsI77/backspace.c, revision 1.1.1.1

1.1       root        1: /*
                      2: char id_backspace[] = "@(#)backspace.c 1.2";
                      3:  *
                      4:  * Backspace records
                      5:  */
                      6: 
                      7: #include "fio.h"
                      8: 
                      9: char *bksp = "backspace";
                     10: char last_char();
                     11: 
                     12: f_back(a) alist *a;
                     13: {      unit *b;
                     14:        int n,i;
                     15:        long x,y;
                     16:        lfname = NULL;
                     17:        elist = NO;
                     18:        external = YES;
                     19:        errflag = a->aerr;
                     20:        lunit = a->aunit;
                     21:        if (not_legal(lunit)) err(errflag,F_ERUNIT,bksp)
                     22:        b= &units[lunit];
                     23:        if(!b->ufd && (n=fk_open(READ,SEQ,FMT,(ftnint)lunit)) )
                     24:                err(errflag,n,bksp)
                     25:        lfname = b->ufnm;
                     26:        if(b->uend)
                     27:        {       b->uend = NO;
                     28:                return(OK);
                     29:        }
                     30:        if((x=ftell(b->ufd))==0) return(OK);
                     31:        if(!b->useek) err(errflag,F_ERNOBKSP,bksp)
                     32:        if(b->uwrt) t_runc(b,errflag);
                     33:        if(b->url)              /* direct access, purely academic */
                     34:        {       y = x%(long)b->url;
                     35:                x -= y?y:b->url;
                     36:                fseek(b->ufd,x,0);
                     37:                return(OK);
                     38:        }
                     39:        if(!b->ufmt)            /* unformatted sequential */
                     40:        {       fseek(b->ufd,-(long)sizeof(int),1);
                     41:                fread((char *)&n,sizeof(int),1,b->ufd);
                     42:                fseek(b->ufd,-(long)n-2*sizeof(int),1);
                     43:                return(OK);
                     44:        }
                     45:        if(x==1)                        /* formatted sequential */
                     46:        {       rewind(b->ufd);
                     47:                return(OK);
                     48:        }
                     49:        while(last_char(b->ufd)!='\n'); /* slow but simple */
                     50:        return(OK);
                     51: }

unix.superglobalmegacorp.com

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