1*47943Sbostic /*-
2*47943Sbostic * Copyright (c) 1980 The Regents of the University of California.
3*47943Sbostic * All rights reserved.
420991Slibs *
5*47943Sbostic * %sccs.include.proprietary.c%
623092Skre */
723092Skre
8*47943Sbostic #ifndef lint
9*47943Sbostic static char sccsid[] = "@(#)wdfe.c 5.2 (Berkeley) 04/12/91";
10*47943Sbostic #endif /* not lint */
11*47943Sbostic
1223092Skre /*
1320991Slibs * write direct formatted external i/o
1420991Slibs */
1520991Slibs
1620991Slibs #include "fio.h"
1720991Slibs
1820991Slibs extern int w_ed(),w_ned();
1920991Slibs int y_putc(),y_wnew(),y_tab();
2020991Slibs
2120991Slibs LOCAL char wdfe[] = "write dfe";
2220991Slibs
s_wdfe(a)2320991Slibs s_wdfe(a) cilist *a;
2420991Slibs {
2520991Slibs int n;
2620991Slibs reading = NO;
2720991Slibs if(n=c_dfe(a,WRITE,wdfe)) return(n);
2820991Slibs curunit->uend = NO;
2920991Slibs if(!curunit->uwrt && ! nowwriting(curunit)) err(errflag, errno, wdfe)
3020991Slibs putn = y_putc;
3120991Slibs doed = w_ed;
3220991Slibs doned = w_ned;
3320991Slibs dotab = y_tab;
3420991Slibs dorevert = doend = donewrec = y_wnew;
3520991Slibs if(pars_f()) err(errflag,F_ERFMT,wdfe)
3620991Slibs fmt_bg();
3720991Slibs return(OK);
3820991Slibs }
3920991Slibs
e_wdfe()4020991Slibs e_wdfe()
4120991Slibs {
4220991Slibs en_fio();
4320991Slibs return(OK);
4420991Slibs }
4520991Slibs
4620991Slibs LOCAL
y_putc(c)4720991Slibs y_putc(c)
4820991Slibs {
4920991Slibs if(curunit->url!=1 && recpos++ >= curunit->url) err(errflag,F_EREREC,wdfe)
5020991Slibs putc(c,cf);
5120991Slibs return(OK);
5220991Slibs }
5320991Slibs
5420991Slibs LOCAL
y_wnew()5520991Slibs y_wnew()
5620991Slibs { if(curunit->url != 1)
5720991Slibs { if(reclen > recpos)
5820991Slibs { fseek(cf,(long)(reclen-recpos),1);
5920991Slibs recpos = reclen;
6020991Slibs }
6120991Slibs while(recpos < curunit->url) (*putn)(' ');
6220991Slibs recnum++;
6320991Slibs recpos = reclen = cursor = 0;
6420991Slibs }
6520991Slibs return(OK);
6620991Slibs }
67