.title rsxdel delete a file .ident /4.0.01/ .enabl gbl ; Copyright (C) 1979, 1980, 1981, 1982, 1983 Brian Nelson ; ; This software is furnished in an as-is ; condition, with no committments of sup- ; port or updates. This software may NOT ; be sold for profit nor can it be includ- ; ed in any package to be sold for profit ; without the written consent of the au- ; thor. This software may be used only ; within the above conditions of use. ; ; The information in contained herein is ; subject to change or revision at any ; time without notice. ; ; ; edits: ; ; 08-Mar-83 09:48:42 BDN removed from module RSXIO for ; overlaying. .sbttl delete a file .psect .mcall csi$,csi$1,csi$2,nmblk$ csi$ ;Define CSI offsets locally .enabl gbl .psect defalt: nmblk$ ,,0,SY,0 ;No default name or extension section $code routine $delete save mov @r5,r3 ;Get address of string .len r3 ;Get length of string sub #c.size,sp ;Need a block for CSI mov sp,r2 ;Save address for later mov #s.fdb,r1 ;Length of FDB sub r1,sp ;Get an FDB mov sp,r4 ;And save it ; ; at this point: ; r0 = length of file name string ; r1 = length of FDB for later ; r2 => csi block ; r3 => file name string ; r4 => file descriptor block ; r5 => input parameter ; mov r0,c.cmld(r2) ;Save length of string mov r3,c.cmld+2(r2) ;Save start of string csi$1 r2 ;Do first scan bcs 100$ ;Error csi$2 r2,OUTPUT ;Do second scan bcs 100$ ;Error bitb #cs.mor!cs.wld,c.stat(r2) ;Bad bits? bne 100$ ;Yes, error add #c.dsds,r2 ;Point to CSI data set mov #defalt,r3 ;Point to NMBLK$ mov r4,r0 ;Copy FDB pointer 10$: clrb (r4)+ ;Clear the FDB sob r1,10$ ;Do whole thing movb #lstlun,f.lun(r0) ;Borrow a LUN mov r0,r1 ;Copy FDB pointer again add #f.fnb,r1 ;Point to FNB inside FDB ; ; At this point: ; r0 => FDB ; r1 => FNB in FDB ; r2 => C.DSDS in CSI block ; r3 => Default name block ; r5 => Input parameters ; callg .parse ;Parse the file name bcs 100$ ;Error bit #nb.ver,n.stat(r1) ;Was a version number spec.? beq 20$ ;No bit #nb.svr,n.stat(r1) ;Wildcarded version? beq 30$ ;Yes ; ; Have no version, or wildcarded version ; 20$: bic #nb.svr,n.stat(r1) ;Make sure not wildcarded bis #nb.ver,n.stat(r1) ;Make sure have a version clr n.fver(r1) ;And make it version 0 30$: callg .dlfnb ;Delete the file if lucky 100$: mov f.err(r0),errsav ;Return the error code if any bmi 110$ ;Have error clr errsav ;No error 110$: add #s.fdb+c.size,sp ;Clean stack unsave return ;All done .end