/* char id_wdfe[] = "@(#)wdfe.c 1.1"; * * write direct formatted external i/o */ #include "fio.h" int y_putc(), y_wnew(); extern int w_ed(), w_ned(), y_tab(); char wdfe[] = "write dfe"; s_wdfe(a) cilist *a; { int n; reading = NO; if(n=c_dfe(a,WRITE)) return(n); curunit->uend = NO; if(!curunit->uwrt && ! nowwriting(curunit)) err(errflag, errno, wdfe) putn = y_putc; doed = w_ed; doned = w_ned; dotab = y_tab; dorevert = doend = donewrec = y_wnew; if(pars_f(fmtbuf)) err(errflag,F_ERFMT,wdfe) fmt_bg(); return(OK); } y_putc(c) { if(curunit->url!=1 && recpos++ >= curunit->url) err(errflag,F_EREREC,wdfe) putc(c,cf); return(OK); } y_wnew() { if(curunit->url != 1) { if(reclen > recpos) { fseek(cf,(long)(reclen-recpos),1); recpos = reclen; } while(recpos < curunit->url) (*putn)(' '); recnum++; recpos = reclen = cursor = 0; } return(OK); } y_wend() { return(y_wnew()); }