%begin; !TAKEIN: augment command dictionary by all .mob-files in a directory

%include "inc:util.imp"
%include "inc:dict.imp"

%routine define command symbol(%string(255)symbol,file)
%integer verb,equiv
  to upper(symbol); to upper(file)
  %returnunless refname(symbol,comdict)<=0
  verb = defname(symbol,comdict,8)
  integer(verb) = 0; integer(verb+4) = 0
  equiv = refname(file,fildict)
  %if equiv<=0 %start
    equiv = defname(file,fildict,8)
    integer(equiv) = 0; integer(equiv+4) = 0
  %finish
  integer(verb) = equiv
%end

%routine do directory(%string(255)dir)
%string(255)file,symbol
  %onevent 3,4,9 %start
    %return
  %finish
  %returnif dir=""
  openinput(1,dir.":directory"); selectinput(1)
  %cycle
    readline(file)
    %if file -> file.(";").symbol %start; %finish
    toupper(file)
    %if file -> symbol.(".MOB") %start
      define command symbol(symbol,dir.":".file)
    %finish
  %repeat
%end

%routine do directories(%string(255)s)
%string(255)one,rest
  %while s -> one.(",").rest %cycle
    do directory(one); s = rest
  %repeat
  do directory(s)
%end

  do directories(cliparam)

%end
