! Remove file {,file}*
! JGH Dec 84
! Changed to accept ^Z to exit from confirm list RMM April 1986
include "inc:util.imp"
include "inc:fs.imp"
include "inc:fsutil.imp"
begin
constinteger PATHSEP=':'
string (255) parm,file,start,end,directory
integer confirm=0, log=1
routine OPEN DIRECTORY(string (255)name parm)
integer i
string (255) dir
dir = Current Directory.to string (path sep)
i = length(parm)
i = i-1 while i > 0 and charno(parm,i) # pathsep
if i > 0 start
dir = substring(parm,1,i)
parm = substring(parm,i+1,length(parm))
finish
directory = dir
dir = dir."DIRECTORY"
open input(1,dir)
end
routine READ FILENAME(string (255)name s)
integer k
select input(1)
s = ""
read symbol(k) until k > ' '
cycle
s = s.tostring(k) if k # '?'
read symbol(k)
repeat until k <= ' '
end
routine DELETE IF SURE(string (255)file)
bytename j
integer i,k,kk, State = 0
on event 3,9 start
if State = 0 start
New Line
stop
finish
print line ("Failure - ".event_message)
return
finish
if Confirm#0 start
select input(0)
prompt("Delete ".directory.file." ? ")
read symbol(k) until k > ' '
read symbol(kk) until kk < ' '
else
k = 'y'
finish
if k!32 = 'y' start
State = 1
delete(file)
print line (directory.file." deleted") if log#0
finish
end
predicate COVERS(string (255) template,word)
integer tl,wl
predicate MATCHED(integer ti,wi)
cycle
if ti = tl start
true if wi = wl
false
finish
ti = ti+1
exit if charno(parm,ti) = '*'
false if wi = wl
wi = wi+1
false unless charno(template,ti) = '?' c
or charno(template,ti)&95 = charno(word,wi)&95
repeat
cycle
true if matched(ti,wi)
false if wi = wl
wi = wi+1
repeat
end
tl = length(template)
wl = length(word)
true if matched(0,0)
false
end
routine DELETE FILES(string (255) s)
integer i
string (255) f
on event 3,9 start
return
finish
directory = Current Directory. to string (path sep)
for i = 1,1,length(s) cycle
if charno(s,i) = '*' or charno(s,i) = '?' start
open directory(s)
cycle
read filename(f)
delete if sure(f) if covers(s,f)
repeat
finish
repeat
delete if sure(s)
end
parm = cliparam
cycle
if parm = "" or parm = " " start
Prompt ("Files to be deleted: ")
read line (parm)
stop if parm = ""
finish
To lower (parm)
parm = start." ".end while parm -> start.(",").end
if parm -> start.("-c").end or parm -> start.("- c").end start
confirm = 1
parm = start." ".end
finish
confirm = 1 if parm -> ("*") or parm -> ("?")
if parm -> start.("-n").end or parm -> start.("- n").end start
confirm = 0
parm = start." ".end
finish
if parm -> start.("-s").end or parm -> start.("- s").end start
log = 0
parm = start." ".end
finish
parm = parm." "
parm = start." ".end while parm -> start.(" ").end
if parm#"" and charno(parm, 1) = ' ' then parm = sub string (parm, 2, length(parm))
exit if parm # " "
repeat
To Upper (parm)
delete files(file) while parm -> file.(" ").parm
endofprogram