home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / libI77 / wsfe.c < prev   
Encoding:
C/C++ Source or Header  |  1979-05-03  |  1.0 KB  |  69 lines

  1. /*write sequential formatted external*/
  2. #include "fio.h"
  3. #include "fmt.h"
  4. extern int x_putc(),w_ed(),w_ned();
  5. extern int xw_end(),xw_rev(),x_wSL();
  6. s_wsfe(a) cilist *a;    /*start*/
  7. {    int n;
  8.     if(!init) f_init();
  9.     if(n=c_sfe(a,WRITE)) return(n);
  10.     reading=0;
  11.     sequential=1;
  12.     formatted=1;
  13.     external=1;
  14.     elist=a;
  15.     cursor=recpos=0;
  16.     scale=0;
  17.     fmtbuf=a->cifmt;
  18.     if(pars_f(fmtbuf)<0) err(a->cierr,100,"startio");
  19.     curunit = &units[a->ciunit];
  20.     cf=curunit->ufd;
  21.     putn= x_putc;
  22.     doed= w_ed;
  23.     doned= w_ned;
  24.     doend=xw_end;
  25.     dorevert=xw_rev;
  26.     donewrec=x_wSL;
  27.     fmt_bg();
  28.     cplus=0;
  29.     cblank=curunit->ublnk;
  30.     if(!curunit->uwrt) nowwriting(curunit);
  31.     return(0);
  32. }
  33. x_putc(c)
  34. {
  35.     recpos++;
  36.     putc(c,cf);
  37. }
  38. pr_put(c)
  39. {    static flag new = 1;
  40.     recpos++;
  41.     if(c=='\n')
  42.     {    new=1;
  43.         putc(c,cf);
  44.     }
  45.     else if(new==1)
  46.     {    new=0;
  47.         if(c=='0') putc('\n',cf);
  48.         else if(c=='1') putc('\f',cf);
  49.     }
  50.     else putc(c,cf);
  51. }
  52. x_wSL()
  53. {
  54.     recpos=0;
  55.     cursor = 0;
  56.     (*putn)('\n');
  57.     return(1);
  58. }
  59. xw_end()
  60. {
  61.     (*putn)('\n');
  62.     return(0);
  63. }
  64. xw_rev()
  65. {
  66.     if(workdone) (*putn)('\n');
  67.     return(workdone=0);
  68. }
  69.