BSD 4_2 release
[unix-history] / usr / src / usr.lib / libI77 / backspace.c
index c86c724..fae5780 100644 (file)
@@ -1,35 +1,42 @@
 /*
 /*
-char id_backspace[] = "@(#)backspace.c 1.2";
+char id_backspace[] = "@(#)backspace.c 1.6";
  *
  * Backspace records
  */
 
 #include "fio.h"
 
  *
  * Backspace records
  */
 
 #include "fio.h"
 
-char *bksp = "backspace";
-char last_char();
+static char    bksp[]  = "backspace";
+char   last_char();
 
 
-f_back(a) alist *a;
+f_back(a)
+alist  *a;
 {      unit *b;
        int n,i;
        long x,y;
 {      unit *b;
        int n,i;
        long x,y;
+
        lfname = NULL;
        elist = NO;
        external = YES;
        errflag = a->aerr;
        lunit = a->aunit;
        lfname = NULL;
        elist = NO;
        external = YES;
        errflag = a->aerr;
        lunit = a->aunit;
-       if (not_legal(lunit)) err(errflag,F_ERUNIT,bksp)
+       if (not_legal(lunit))
+               err(errflag, F_ERUNIT, bksp)
        b= &units[lunit];
        b= &units[lunit];
-       if(!b->ufd && (n=fk_open(READ,SEQ,FMT,(ftnint)lunit)) )
-               err(errflag,n,bksp)
+       if(!b->ufd && (n = fk_open(READ, SEQ, FMT, (ftnint)lunit)) )
+               err(errflag, n, bksp)
        lfname = b->ufnm;
        if(b->uend)
        {       b->uend = NO;
        lfname = b->ufnm;
        if(b->uend)
        {       b->uend = NO;
+               clearerr(b->ufd);
                return(OK);
        }
                return(OK);
        }
-       if((x=ftell(b->ufd))==0) return(OK);
-       if(!b->useek) err(errflag,F_ERNOBKSP,bksp)
-       if(b->uwrt) t_runc(b,errflag);
+       if((x = ftell(b->ufd)) == 0)
+               return(OK);
+       if(!b->useek)
+               err(errflag, F_ERNOBKSP, bksp)
+       if(b->uwrt && (n = t_runc(b, errflag, bksp)))   /* sets 'reading' */
+               return(n);
        if(b->url)              /* direct access, purely academic */
        {       y = x%(long)b->url;
                x -= y?y:b->url;
        if(b->url)              /* direct access, purely academic */
        {       y = x%(long)b->url;
                x -= y?y:b->url;
@@ -42,10 +49,11 @@ f_back(a) alist *a;
                fseek(b->ufd,-(long)n-2*sizeof(int),1);
                return(OK);
        }
                fseek(b->ufd,-(long)n-2*sizeof(int),1);
                return(OK);
        }
-       if(x==1)                        /* formatted sequential */
+       if(x == 1)                      /* formatted sequential */
        {       rewind(b->ufd);
                return(OK);
        }
        {       rewind(b->ufd);
                return(OK);
        }
-       while(last_char(b->ufd)!='\n'); /* slow but simple */
+       while (last_char(b->ufd) != '\n')       /* slow but simple */
+               ;
        return(OK);
 }
        return(OK);
 }