diff options
Diffstat (limited to 'contrib/libf2c/libI77/backspace.c')
-rw-r--r-- | contrib/libf2c/libI77/backspace.c | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/contrib/libf2c/libI77/backspace.c b/contrib/libf2c/libI77/backspace.c deleted file mode 100644 index 1968801aab75..000000000000 --- a/contrib/libf2c/libI77/backspace.c +++ /dev/null @@ -1,73 +0,0 @@ -#include <sys/types.h> -#include "f2c.h" -#include "fio.h" -#ifdef KR_headers -integer f_back(a) alist *a; -#else -integer f_back(alist *a) -#endif -{ unit *b; - long v, w, x, y, z; - uiolen n; - FILE *f; - - f__curunit = b = &f__units[a->aunit]; /* curunit for error messages */ - if (f__init & 2) - f__fatal (131, "I/O recursion"); - if(a->aunit >= MXUNIT || a->aunit < 0) - err(a->aerr,101,"backspace"); - if(b->useek==0) err(a->aerr,106,"backspace"); - if(b->ufd == NULL) { - fk_open(1, 1, a->aunit); - return(0); - } - if(b->uend==1) - { b->uend=0; - return(0); - } - if(b->uwrt) { - t_runc(a); - if (f__nowreading(b)) - err(a->aerr,errno,"backspace"); - } - f = b->ufd; /* may have changed in t_runc() */ - if(b->url>0) - { - x=ftell(f); - y = x % b->url; - if(y == 0) x--; - x /= b->url; - x *= b->url; - (void) fseek(f,x,SEEK_SET); - return(0); - } - - if(b->ufmt==0) - { fseek(f,-(long)sizeof(uiolen),SEEK_CUR); - fread((char *)&n,sizeof(uiolen),1,f); - fseek(f,-(long)n-2*sizeof(uiolen),SEEK_CUR); - return(0); - } - w = x = ftell(f); - z = 0; - loop: - while(x) { - x -= x < 64 ? x : 64; - fseek(f,x,SEEK_SET); - for(y = x; y < w; y++) { - if (getc(f) != '\n') - continue; - v = ftell(f); - if (v == w) { - if (z) - goto break2; - goto loop; - } - z = v; - } - err(a->aerr,(EOF),"backspace"); - } - break2: - fseek(f, z, SEEK_SET); - return 0; -} |