/* MkiDir.rexx */

/*
     Format

       MKIDIR [DIR] <directory> [[ICON] <icon>]

   Create a drawer/directory and/or attach an icon to it.
   Default is "SYS:DrawerIcon". Change program if need
   a different icon.

*/

signal on failure; signal off error; signal on syntax; signal on break_c
options failat 10
call addlib 'rexxextra.library',-20,-30,0

facility = 'MkiDir'
retcode = 0
dtemplate = 'DIR/A,ICON/K'
template = 'ICON/K,DIR/A'
args. = ''
args.ICON = 'SYS:DrawerIcon'

parse arg g_c
do while g_c='?'
  options prompt dtemplate': '  /* this template is      */
  parse pull g_c		/* displayed to the user */
  if g_c='?' then do
    g_s=sourceline(3)
    if pos('/*',g_s)=0 then break; if pos('*/',g_s)>0 then break
    say
    g_s=sourceline(4)
    do i=5 while pos('*/',g_s)=0; say g_s; g_s=sourceline(i); end
    say
    end
  end
interpret Cparse(g_c,template,'args')
if args.ERRCODE > 1 then do; say facility'-E-BADARGS,' args.ERRTEXT; exit 5; end

dummy = makedir(args.DIR)
if ~exists(args.ICON) then
  say facility'-E-NOTFND, icon file "'args.ICON'" does not exist.'
else if ~exists(args.DIR'.info') then do
  'Copy' args.ICON args.DIR'.info'
  retcode = rc
  end
else
  say facility'-W-HASICON,' args.DIR 'already has an icon'
exit retcode

break_c:
break_d:
break_e:
break_f:
  say facility'-E-BREAK, Control-C interrupt'; retcode = 20; signal GetOut
failure:
  say facility'-E-FAIL, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
syntax:
  say facility'-E-SYNTAX, Line:' sigl', Error:' rc; retcode = rc; signal GetOut
error:
  say facility'-E-ERROR, Line:' sigl', Error:' rc; retcode = rc; signal GetOut

