120991Slibs /* 2*23092Skre * Copyright (c) 1980 Regents of the University of California. 3*23092Skre * All rights reserved. The Berkeley software License Agreement 4*23092Skre * specifies the terms and conditions for redistribution. 520991Slibs * 6*23092Skre * @(#)wdfe.c 5.1 06/07/85 7*23092Skre */ 8*23092Skre 9*23092Skre /* 1020991Slibs * write direct formatted external i/o 1120991Slibs */ 1220991Slibs 1320991Slibs #include "fio.h" 1420991Slibs 1520991Slibs extern int w_ed(),w_ned(); 1620991Slibs int y_putc(),y_wnew(),y_tab(); 1720991Slibs 1820991Slibs LOCAL char wdfe[] = "write dfe"; 1920991Slibs 2020991Slibs s_wdfe(a) cilist *a; 2120991Slibs { 2220991Slibs int n; 2320991Slibs reading = NO; 2420991Slibs if(n=c_dfe(a,WRITE,wdfe)) return(n); 2520991Slibs curunit->uend = NO; 2620991Slibs if(!curunit->uwrt && ! nowwriting(curunit)) err(errflag, errno, wdfe) 2720991Slibs putn = y_putc; 2820991Slibs doed = w_ed; 2920991Slibs doned = w_ned; 3020991Slibs dotab = y_tab; 3120991Slibs dorevert = doend = donewrec = y_wnew; 3220991Slibs if(pars_f()) err(errflag,F_ERFMT,wdfe) 3320991Slibs fmt_bg(); 3420991Slibs return(OK); 3520991Slibs } 3620991Slibs 3720991Slibs e_wdfe() 3820991Slibs { 3920991Slibs en_fio(); 4020991Slibs return(OK); 4120991Slibs } 4220991Slibs 4320991Slibs LOCAL 4420991Slibs y_putc(c) 4520991Slibs { 4620991Slibs if(curunit->url!=1 && recpos++ >= curunit->url) err(errflag,F_EREREC,wdfe) 4720991Slibs putc(c,cf); 4820991Slibs return(OK); 4920991Slibs } 5020991Slibs 5120991Slibs LOCAL 5220991Slibs y_wnew() 5320991Slibs { if(curunit->url != 1) 5420991Slibs { if(reclen > recpos) 5520991Slibs { fseek(cf,(long)(reclen-recpos),1); 5620991Slibs recpos = reclen; 5720991Slibs } 5820991Slibs while(recpos < curunit->url) (*putn)(' '); 5920991Slibs recnum++; 6020991Slibs recpos = reclen = cursor = 0; 6120991Slibs } 6220991Slibs return(OK); 6320991Slibs } 64