# 2.11BSD#431 - /usr/src/usr.lib/libI77/c_sfe.c

##### Functions

    c_sfe             X
    x_tab             X

       1: /*
       2:  * Copyright (c) 1980 Regents of the University of California.
       3:  * All rights reserved.  The Berkeley software License Agreement
       4:  * specifies the terms and conditions for redistribution.
       5:  *
       6:  *	@(#)c_sfe.c	5.2	7/30/85
       7:  */
       8:
       9: /*
      10:  * sequential formatted external I/O - common read & write routines
      11:  */
      12:
      13: #include "fio.h"
      14:
      15: c_sfe(a,flag,mode,str) cilist *a; char *str; /* check */
      16: {   unit *p;
      17:     int n;
      18:
      19:     external=YES;
      20:     formatted=FORMATTED;
      21:     fmtbuf=a->cifmt;
      22:     lfname = NULL;
      23:     elist = NO;
      24:     errflag = a->cierr;
      25:     endflag = a->ciend;
      26:     lunit = a->ciunit;
      27:     if(not_legal(lunit)) err(errflag,F_ERUNIT,str);
      28:     curunit = p = &units[lunit];
      29:     if(!p->ufd && (n=fk_open(flag,mode,FMT,(ftnint)lunit)) )
      30:         err(errflag,n,str)
      31:     cf = curunit->ufd;
      32:     elist = YES;
      33:     lfname = curunit->ufnm;
      34:     if(!p->ufmt) err(errflag,F_ERNOFIO,str)
      35:     cursor=recpos=scale=reclen=0;
      36:     radix = 10;
      37:     signit = YES;
      38:     cblank = curunit->ublnk;
      39:     cplus = NO;
      40:     return(OK);
      41: }
      42:
      43: x_tab()
      44: {   int n;
      45:     if(reclen < recpos) reclen = recpos;
      46:     if(curunit->useek)
      47:     {   if((recpos+cursor) < 0) cursor = -recpos;   /* to BOR */
      48:         n = reclen - recpos;    /* distance to eor, n>=0 */
      49:         if((cursor-n) > 0)
      50:         {   fseek(cf,(long)n,1);  /* find current eor */
      51:             recpos = reclen;
      52:             cursor -= n;
      53:         }
      54:         else
      55:         {   fseek(cf,(long)cursor,1);  /* do not pass go */
      56:             recpos += cursor;
      57:             return(cursor=0);
      58:         }
      59:     }
      60:     else
      61:         if(cursor < 0) return(F_ERSEEK);   /* can't go back */
      62:     while(cursor--)
      63:     {   if(reading)
      64:         {   n = (*getn)();
      65:             if(n=='\n') return(cursor=0);   /* be tolerant */
      66:             if(n==EOF) return(EOF);
      67:         }
      68:         else    (*putn)(' ');   /* fill in the empty record */
      69:     }
      70:     return(cursor=0);
      71: }

#### Defined functions

c_sfe defined in line 15; used 2 times

- in /usr/src/usr.lib/libI77/rsfe.c line 24
- in /usr/src/usr.lib/libI77/wsfe.c line 25

x_tab defined in line 43; used 4 times

- in /usr/src/usr.lib/libI77/rsfe.c line 16, 31
- in /usr/src/usr.lib/libI77/wsfe.c line 18, 36

Last modified: 1987-02-18 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 531 |