begin ; !Delete file {,file}*
option  "-nodiag-nocheck"
include  "inc:util.imp"
include  "inc:fs.imp"
constinteger  PATHSEP=':'
string (255) parm,file

routine  OPEN DIRECTORY(string (255)name  parm)
integer  i
string (255) dir
  dir = ""
  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 
  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 
    k = k+32 if  'A' <= k <= 'Z'
    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,e
  on  event  3,9 start 
    printsymbol('*')
    printstring(event_message)
    newline; return 
  finish 
  e = 0
  for  i = 1,1,length(file) cycle 
    j == charno(file,i)
    j = j+32 if  'A'<=j<='Z'
    e = e<<8+j if  j = '.' or  e # 0
  repeat 
  k = 'y'
  if  j#'!' and  e#'.obj' and  e#'.mob' and  e#'.lis' start 
    select input(0)
    prompt("Do you REALLY want to delete ".file."? ")
    read symbol(k) until  k > ' '
    read symbol(kk) until  kk < ' '
  finish 
  delete(file) if  k!32 = 'y'
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) = charno(word,wi)
  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 
  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
  while  parm -> file.(",").parm cycle 
    delete files(file)
  repeat 
  delete files(parm) unless  parm=""
endofprogram