1: #include "fio.h"
   2: f_back(a) alist *a;
   3: {   unit *b;
   4:     int n,i;
   5:     long x;
   6:     char buf[32];
   7:     if(a->aunit >= MXUNIT || a->aunit < 0)
   8:         err(a->aerr,101,"backspace")
   9:     b= &units[a->aunit];
  10:     if(b->useek==0) err(a->aerr,106,"backspace")
  11:     if(b->ufd==NULL) err(a->aerr,114,"backspace")
  12:     if(b->uend==1)
  13:     {   b->uend=0;
  14:         return(0);
  15:     }
  16:     if(b->uwrt)
  17:     {   t_runc(b);
  18:         nowreading(b);
  19:     }
  20:     if(b->url>0)
  21:     {
  22:         x=ftell(b->ufd);
  23:         x /= b->url;
  24:         x *= b->url;
  25:         fseek(b->ufd,x,0);
  26:         return(0);
  27:     }
  28:     if(b->ufmt==0)
  29:     {   fseek(b->ufd,-(long)sizeof(int),1);
  30:         fread((char *)&n,sizeof(int),1,b->ufd);
  31:         fseek(b->ufd,-(long)n-2*sizeof(int),1);
  32:         return(0);
  33:     }
  34:     for(;;)
  35:     {
  36:         x=ftell(b->ufd);
  37:         if(x<sizeof(buf)) x=0;
  38:         else x -= sizeof(buf);
  39:         fseek(b->ufd,x,0);
  40:         n=fread(buf,1,sizeof(buf),b->ufd);
  41:         for(i=n-1;i>=0;i--)
  42:         {
  43:             if(buf[i]!='\n') continue;
  44:             fseek(b->ufd,(long)(i-n),1);
  45:             return(0);
  46:         }
  47:         if(x==0) return(0);
  48:         else if(n==0) err(a->aerr,(EOF),"backspace")
  49:         else err(a->aerr,errno,"backspace");
  50:     }
  51: }

Defined functions

f_back defined in line 2; never used
Last modified: 1979-01-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 462
Valid CSS Valid XHTML 1.0 Strict