/* $VER: AppLauncher.rexx 1.7 (26.9.98) (W) by Martin Steigerwald */ PARSE ARG appname ' ' files OPTIONS RESULTS IF ~SHOW('l','rexxsupport.library') THEN CALL ADDLIB('rexxsupport.library',0,-30) configname='S:AppLauncher.cfg' cmdprefix='C:RUN <>NIL: ' appmax=ReadConfig() IF appmax>0 THEN DO IF StartApp()=0 THEN DO SAY 'Something went wrong with "' || appname || '"!' END EXIT StartApp: PROCEDURE EXPOSE app. appname appmax cmdprefix files gefunden=0 erfolg=0 DO i=1 to appmax IF UPPER(appname) == UPPER(app.i.name) THEN DO gefunden=1 LEAVE END END /* DO */ IF gefunden=1 THEN DO a=RIGHT(app.i.pathname,1) IF (a~==':' & a~=='/') THEN DO app = app.i.pathname || "/" || app.i.filename END ELSE DO app = app.i.pathname || app.i.filename END alterpfad=PRAGMA('DIRECTORY') dummy=PRAGMA('DIRECTORY',app.i.pathname) alterstack=0 IF app.i.stack > 4096 THEN DO alterstack=PRAGMA('STACK', app.i.stack) END IF ~SHOW('P', app.i.portname) THEN DO ADDRESS COMMAND cmdprefix || app ADDRESS COMMAND 'WaitForPort' app.i.portname END dummy=PRAGMA('DIRECTORY', alterpfad) ADDRESS VALUE app.i.portname files=STRIP(files) DO UNTIL files=='' IF LEFT(files,1)=='"' THEN DO PARSE VAR files '"' file '"' files END ELSE DO PARSE VAR files file ' ' files END file=STRIP(file) IF UPPER(file)=="TOFRONT" THEN DO IF app.i.tofrontcmd ~== "" THEN DO app.i.tofrontcmd END ELSE DO SAY "Command to bring application to front is not configured!" END END ELSE DO IF app.i.filenameprefix ~== '' THEN DO app.i.loadcmd '"'app.i.filenameprefix || file'"' END ELSE DO app.i.loadcmd '"'file'"' END erfolg=1 END END ADDRESS dummy=PRAGMA('DIRECTORY', alterpfad) IF alterstack > 0 THEN DO PRAGMA('STACK', alterstack) END END /* IF gefunden */ ELSE DO SAY 'Didnt find application "' || appname || '" in my config file!' END /* ELSE */ RETURN erfolg ReadConfig: PROCEDURE EXPOSE app. configname IF OPEN('configfile', configname, 'R') THEN DO i=0 linenr=0 DO UNTIL EOF('configfile') line=STRIP(READLN('configfile')) linenr=linenr+1 SELECT WHEN LEFT(line,1)=='[' THEN DO i=i+1 PARSE VAR line '[' app.i.name ']' app.i.pathname='' app.i.tofrontcmd='' app.i.loadcmd='' app.i.filenameprefix='' app.i.stack=0 END /* WHEN */ WHEN line == '' THEN DO NOP END /* WHEN */ OTHERWISE DO PARSE VAR line option '=' setting option = UPPER(STRIP(option)) setting = STRIP(setting) SELECT WHEN option == 'PORTNAME' THEN app.i.portname = setting WHEN option == 'TOFRONTCMD' THEN app.i.tofrontcmd = setting WHEN option == 'LOADCMD' THEN app.i.loadcmd = setting WHEN option == 'FILENAME' THEN app.i.filename = setting WHEN option == 'PATHNAME' THEN app.i.pathname = setting WHEN option == 'FILENAMEPREFIX' THEN app.i.filenameprefix = setting WHEN option == 'STACK' THEN app.i.stack = setting OTHERWISE SAY 'Unknown config option in line ' || linenr || '!' END /* SELECT */ END /* OTHERWISE */ END /* SELECT */ END CLOSE('configfile') END ELSE DO SAY 'Couldnt load configfile "' || configname || '"!' END RETURN i FindApp: PROCEDURE EXPOSE app. configname erfolg=0 IF EXISTS(configname) THEN DO erfolg=1 END RETURN erfolg