=("Initialize_GetTitle") CALL Rxfuncadd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs' CALL SysLoadFuncs env = 'OS2ENVIRONMENT' TRUE = (1 = 1) FALSE = (0 = 1) CrLf = '0d0a'x Redirection = '> NUL 2>&1' GlobalVars = 'env TRUE FALSE CrLf Redirection' NepmdIni = '' RootDir = '' UserDir = '' GlobalVars = GlobalVars 'NepmdIni RootDir UserDir' DO 1 CALL FindInstallDirs CALL FindNepmdIni MainTitle = '%MAIN_TITLE_PREFIX%%STRING_VERSION_NEPMD%%MAIN_TITLE_SUFFIX%' /* Set state for tools packages to SELECT if not found in PATH */ Md5Exe = FindInPath( 'md5sum.exe') IF Md5Exe = '' THEN Md5Exe = FindInPath( 'md5suml.exe') IF Md5Exe = '' THEN Md5Exe = FindInPath( 'md5.exe') IF Md5Exe = '' THEN CALL SetVar 'Md5Select', 'SELECT' ELSE CALL SetVar 'Md5Select', '' LxliteExe = FindInPath( 'lxlite.exe') UnlockExe = FindInPath( 'unlock.exe') IF LxliteExe = '' | UnlockExe = '' THEN CALL SetVar 'LxliteSelect', 'SELECT' ELSE CALL SetVar 'LxliteSelect', '' WptoolsDll = FindLibPath( 'wptools.dll') IF WptoolsDll = '' THEN CALL SetVar 'WptoolsSelect', 'SELECT' ELSE CALL SetVar 'WptoolsSelect', '' Etke603Dll = FindLibPath( 'etke603.dll') IF ETke603Dll = '' THEN CALL SetVar 'OldBinsSelect', 'SELECT' ELSE CALL SetVar 'OldBinsSelect', '' /* Query settings from NEPMD.INI or defaults.cfg */ next = GetConfigValue( '\NEPMD\User\ProgramObjects\OpenSameWindow') IF next = '' THEN next = 1 OptionRVal = '' IF next = 1 THEN OptionRVal = '/r' CALL SetVar 'OptionR', OptionRVal next = GetConfigValue( '\NEPMD\User\ProgramObjects\OmitOpenBox') IF next = '' THEN next = 1 OptionOVal = '' IF next = 1 THEN OptionOVal = '/o' CALL SetVar 'OptionO', OptionOVal next = GetConfigValue( '\NEPMD\User\ProgramObjects\StartupDir') IF next = '' THEN next = '?:\' StartupDirVal = next CALL SetVar 'StartupDir', StartupDirVal /* Assemble program object strings (concatenating strings and vars is not possible with WarpIN) */ OptionROVal = strip( OptionRVal OptionOVal) Setup = , "TITLE=%TITLE_NEPMD_EPM%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS="OptionROVal";STARTUPDIR="StartupDirVal";" ||, "ASSOCTYPE=Plain Text,Command File,DOS Command File,C Code;" ||, "ASSOCFILTER=*.CMD,*.DAT,*.DOC,*.INI,*.TXT,CONFIG.SYS;" ||, "HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpm = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpm', NepmdEpm Setup = , "TITLE=%TITLE_NEPMD_EPM_NEW_WINDOW%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS="OptionOVal";STARTUPDIR="StartupDirVal";" ||, "HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpmNewWindow = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpmNewWindow', NepmdEpmNewWindow Setup = , "TITLE=%TITLE_NEPMD_EPM_SHELL%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS="OptionOVal" 'shell';" ||, "MINIMIZED=YES;HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpmShell = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpmShell', NepmdEpmShell Setup = , "TITLE=%TITLE_NEPMD_EPM_TURBO%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS=/i "OptionOVal";STARTUPDIR="StartupDirVal";" ||, "HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpmTurbo = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpmTurbo', NepmdEpmTurbo Setup = , "TITLE=%TITLE_NEPMD_EPM_E%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS="OptionROVal";STARTUPDIR="StartupDirVal";" ||, "ASSOCFILTER=*.E;HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpmE = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpmE', NepmdEpmE Setup = , "TITLE=%TITLE_NEPMD_EPM_EDIT_MACROFILE%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS="OptionROVal" 'editmacrofile %*';STARTUPDIR="StartupDirVal";" ||, "ASSOCTYPE=EX File;ASSOCFILTER=*.EX;" ||, "HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpmEditMacroFile = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpmEditMacroFile', NepmdEpmEditMacroFile Setup = , "TITLE=%TITLE_NEPMD_EPM_ERX%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS="OptionROVal";STARTUPDIR="StartupDirVal";" ||, "ASSOCFILTER=*.ERX;HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpmErx = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpmErx', NepmdEpmErx Setup = , "TITLE=%TITLE_NEPMD_EPM_TEX%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS="OptionROVal";STARTUPDIR="StartupDirVal";" ||, "ASSOCFILTER=*.TEX,*.LTX,*.DTX;HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpmTex = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpmTex', NepmdEpmTex Setup = , "TITLE=%TITLE_NEPMD_EPM_BIN%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS="OptionOVal" 'binedit %*';STARTUPDIR="StartupDirVal";" ||, "ASSOCTYPE=Executable;HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpmBin = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpmBin', NepmdEpmBin Setup = , "TITLE=%TITLE_NEPMD_EPM_OPEN_LIST%;PROGTYPE=PM;EXENAME=?:\OS2\EPM.EXE;" ||, "PARAMETERS=@%*;STARTUPDIR="StartupDirVal";" ||, "ASSOCFILTER=*.EPM;" ||, "HELPLIBRARY=$(1)\netlabs\help\nefld%NLS%.hlp;HELPPANEL=101;" ||, "OBJECTID=;" NepmdEpmOpenList = , 'CREATEOBJECT="WPProgram|.||'Setup'"' CALL SetVar 'NepmdEpmOpenList', NepmdEpmOpenList /* Conditional object creation */ /* Default values are empty. That means: don't create an object. */ ShellShadowInPrompts = '' ShellShadowInXwpPrompts = '' IF ObjectExists( '') THEN ShellShadowInPrompts = , 'CREATEOBJECT="WPShadow|.||' ||, 'SHADOWID=;OBJECTID=;"' CALL SetVar 'ShellShadowInPrompts', ShellShadowInPrompts IF ObjectExists( '') THEN ShellShadowInXwpPrompts = , 'CREATEOBJECT="WPShadow|.||' ||, 'SHADOWID=;OBJECTID=;"' CALL SetVar 'ShellShadowInXwpPrompts', ShellShadowInXwpPrompts /* Package var names (for WarpIN vars) and ids */ p = 0 Pck. = '' Pck.0 = 0 Pck._PrefixNames = '%PCK_VENDOR_APP_PREFIX%' p = p + 1; Pck.p._Var = 'Main' ; Pck.p._Names = '%PCK_MAIN_ID%' p = p + 1; Pck.p._Var = 'Recompile' ; Pck.p._Names = '%PCK_RECOMPILE_ID%' p = p + 1; Pck.p._Var = 'Samples' ; Pck.p._Names = '%PCK_SAMPLES_ID%' p = p + 1; Pck.p._Var = 'Colors' ; Pck.p._Names = '%PCK_COLORS_ID%' p = p + 1; Pck.p._Var = 'Assocs' ; Pck.p._Names = '%PCK_ASSOCS_ID%' p = p + 1; Pck.p._Var = 'Icons' ; Pck.p._Names = '%PCK_ICONS_ID%' p = p + 1; Pck.p._Var = 'Mvuser' ; Pck.p._Names = '%PCK_MVUSER_ID%' p = p + 1; Pck.p._Var = 'Lxlite' ; Pck.p._Names = '%PCK_LXLITE_ID%' p = p + 1; Pck.p._Var = 'Wptools' ; Pck.p._Names = '%PCK_WPTOOLS_ID%' p = p + 1; Pck.p._Var = 'Voicetype' ; Pck.p._Names = '%PCK_VOICETYPE_ID%' p = p + 1; Pck.p._Var = 'Oldbins' ; Pck.p._Names = '%PCK_OLDBINS_ID%' Pck.0 = p /* Parse package prefix names */ n = 0 rest = Pck._PrefixNames DO WHILE rest <> '' PARSE VAR rest next '|' rest IF next = '' THEN ITERATE n = n + 1 IF n = 1 THEN Pck._FirstPrefixName = next Pck._LastPrefixName = next END /* Parse package names */ DO p = 1 TO Pck.0 rest = Pck.p._Names n = 0 DO WHILE rest <> '' PARSE VAR rest next '|' rest IF next = '' THEN ITERATE n = n + 1 Pck.p.n._Name = next END Pck.p.0 = n END /* Read ExportFile */ ExportLine. = '' ExportLine.0 = 0 l = 0 IF RootDir <> '' THEN DO ExportFile = STRIP( RootDir, 't', '\')'\netlabs\install\recrobj.dat' IF (STREAM( ExportFile, 'c', 'query exists') <> '') THEN DO rcx = STREAM( ExportFile, 'c', 'open read') DO WHILE LINES( ExportFile) > 0 l = l + 1 ExportLine.l = LINEIN( ExportFile) END ExportLine.0 = l rcx = STREAM( ExportFile, 'c', 'close') END END /* Parse exported package id strings */ Exp. = '' e = 0 Exp.0 = 0 Exp._BslNum = 0 DO l = 1 TO ExportLine.0 /* Get the package id (saved as TITLE) */ PARSE VAR ExportLine.l PckNum rest IF LEFT( rest, 6) = 'TITLE=' THEN PARSE VAR rest 'TITLE='next ELSE ITERATE e = e + 1 Exp.0 = e /* Must handle both old and new export line */ BslNum = 0 Startp = 1 DO FOREVER Bslp = POS( '\', next, Startp) IF Bslp = 0 THEN LEAVE BslNum = BslNum + 1 Startp = Bslp + 1 END IF PckNum = 1 THEN Exp._BslNum = BslNum IF BslNum > 4 THEN PARSE VAR next Exp.e._Vendor'\'Exp.e._App'\'Exp.e._Pck'\'Exp.e._Major'\'Exp.e._Minor'\'Exp.e._Revision'\'Exp.e._Fixlevel ELSE DO PARSE VAR Pck._LastPrefixName Exp.e._Vendor'\'Exp.e._App PARSE VAR next Exp.e._Pck'\'Exp.e._Major'\'Exp.e._Minor'\'Exp.e._Revision'\'Exp.e._Fixlevel END END /* Find package names in exported id strings */ DO p = 1 TO Pck.0 FoundId = '' FoundVersionStr = '0.0' DO n = 1 TO Pck.p.0 ThisName = Pck.p.n._Name DO e = 1 TO Exp.0 IF ThisName = Exp.e._Pck THEN DO ThisId = Exp.e._Vendor'\'Exp.e._App'\'Exp.e._Pck ThisVersionStr = Exp.e._Major'.'RIGHT( Exp.e._Minor, 4, '0')RIGHT( Exp.e._Revision, 4, '0')RIGHT( Exp.e._Minor, 4, '0') IF ThisVersionStr > FoundVersionStr THEN DO FoundId = ThisId FoundVersionStr = ThisVersionStr END END END END IF FoundId = '' THEN /* Use first names as current package id */ Pck.p._Id = Pck._FirstPrefixName'\'Pck.p.1._Name ELSE /* Use found id as current package id */ Pck.p._Id = FoundId END /* Set WarpIN vars */ DO p = 1 TO Pck.0 CALL SetVar 'Pck'Pck.p._Var'Id', Pck.p._Id END /* Write package prefix and id names to NEPMD.INI for later rename */ /* Query index of old values */ OldPck.0 = QueryNepmdIni( 'Install', 'PckNames.0') /* Write new values */ CALL WriteNepmdIni 'Install', 'PckPrefixNames', Pck._PrefixNames DO p = 1 TO Pck.0 CALL WriteNepmdIni 'Install', 'PckNames.'p, Pck.p._Names END CALL WriteNepmdIni 'Install', 'PckNames.0', Pck.0 /* Eventually delete remaining old values */ IF OldPck.0 > Pck.0 THEN DO p = Pck.0 + 1 TO OldPck.0 CALL WriteNepmdIni 'Install', 'PckNames.'p, '' END END RETURN( MainTitle) /* Returns 1 if a WPS object exists, otherwise 0 */ ObjectExists: PROCEDURE EXPOSE (GlobalVars) PARSE ARG Object IF Object = '' THEN RETURN( 0) rcx = SysSetObjectData( Object, '') RETURN( rcx) /* FileExists */ FileExists: PROCEDURE EXPOSE (GlobalVars) PARSE ARG Filename IF FileName = '' THEN RETURN( 0) ELSE RETURN( STREAM( Filename, 'C', 'QUERY EXISTS') <> '') /* FindInPath */ FindInPath: PROCEDURE EXPOSE (GlobalVars) PARSE ARG File IF File = '' THEN RETURN /* Add extension, if missing */ lp = LASTPOS( '.', File) if \(lp > 1) then File = File'.exe' FoundFile = SysSearchPath( 'PATH', File) RETURN( FoundFile) /* GetBootDrive */ GetBootDrive: PROCEDURE EXPOSE (GlobalVars) IF \RxFuncQuery( 'SysBootDrive') THEN BootDrive = SysBootDrive() ELSE PARSE UPPER VALUE VALUE( 'PATH',, env) WITH ':\OS2\SYSTEM' -1 BootDrive +2 RETURN( BootDrive) /* This is used here for CONFIG.SYS and DEFAULTS.CFG parsing */ GetTextIniValue: PROCEDURE EXPOSE (GlobalVars) PARSE ARG File, ApplicationList, Key Entry = '' IF ApplicationList = '' THEN ApplicationList = 'ALL:' Application = '' next = STREAM( File, 'C', 'OPEN READ') DO WHILE CHARS( File) > 0 line = LINEIN( File) SELECT WHEN LEFT( line, 1) = ';' THEN NOP WHEN STRIP( line) = '' THEN NOP WHEN LEFT( line, 1) = '[' THEN DO p2 = POS( ']', line) IF p2 > 0 THEN DO nextApplication = SUBSTR( line, 2, p2 - 2) IF WORDPOS( nextApplication, ApplicationList) > 0 | ApplicationList = 'ALL:' THEN Application = nextApplication ELSE Application = '' /* nextApplication is other, reset Application */ END END OTHERWISE PARSE VALUE line WITH nextKey '=' nextEntry /* it must be a 'Key = Entry' line */ nextKey = STRIP( nextKey) nextEntry = STRIP( nextEntry) IF ApplicationList <> 'ALL:' & Application = '' THEN ITERATE IF nextKey = '' THEN ITERATE IF nextKey = Key THEN DO Entry = nextEntry LEAVE /* key found */ END END END rc = STREAM( File, 'C', 'CLOSE') RETURN( Entry) /* FindLibPath */ FindLibPath: PROCEDURE EXPOSE (GlobalVars) PARSE ARG DllName DllFullName = '' BootDrive = GetBootDrive() LibpathDirs = GetTextIniValue( BootDrive'\config.sys', '', 'LIBPATH') fFunctionFound = 0 IF \RxFuncQuery( 'SYSQUERYEXTLIBPATH') THEN fFunctionFound = 1 IF fFunctionFound = 1 THEN BeginLibpathDirs = SysQueryExtLIBPATH( 'B') ELSE DO 'CALL RXQUEUE /CLEAR' 'SET BEGINLIBPATH|RXQUEUE /FIFO' PARSE PULL BeginLibpathDirs PARSE VALUE BeginLibpathDirs WITH . '=' BeginLibpathDirs END IF BeginLibpathDirs = '(null)' THEN BeginLibpathDirs = '' IF fFunctionFound = 1 THEN EndLibpathDirs = SysQueryExtLIBPATH( 'E') ELSE DO 'CALL RXQUEUE /CLEAR' 'SET ENDLIBPATH|RXQUEUE /FIFO' PARSE PULL EndLibpathDirs PARSE VALUE EndLibpathDirs WITH . '=' EndLibpathDirs END IF EndLibpathDirs = '(null)' THEN EndLibpathDirs = '' IF \(fFunctionFound = 1) THEN 'CALL RXQUEUE /CLEAR' IF BeginLibpathDirs > '' THEN LibpathDirs = STRIP( BeginLibpathDirs, 'T', ';')';'LibpathDirs IF EndLibpathDirs > '' THEN LibpathDirs = STRIP( LibpathDirs, 'T', ';')';'EndLibpathDirs rest = LibpathDirs DO WHILE rest <> '' PARSE VALUE rest WITH Dir';'rest next = Dir'\'DllName IF FileExists( next) THEN DO DllFullName = next LEAVE END END RETURN( DllFullName) GetConfigValue: PROCEDURE EXPOSE (GlobalVars) PARSE ARG KeyPath KeyVal = '' /* Search in NEPMD.INI -> RegKeys */ IF NepmdIni <> '' THEN DO 1 next = SysIni( NepmdIni, 'RegKeys', KeyPath) IF next = 'ERROR:' THEN LEAVE KeyVal = strip( next, 't', '00'x ) END /* Search in defaults.cfg */ IF KeyVal = '' & RootDir <> '' THEN DO 1 DefaultsCfg = STRIP( RootDir, 't', '\')'\netlabs\bin\defaults.cfg' KeyVal = GetTextIniValue( DefaultsCfg, '', KeyPath) END RETURN( KeyVal) FindInstallDirs: PROCEDURE EXPOSE (GlobalVars) /* UserDir and RootDir are global vars */ DO 1 next = SysIni( 'USER', 'NEPMD', 'UserDir') IF next = 'ERROR:' THEN LEAVE UserDir = strip( next, 't', '00'x ) END DO 1 next = SysIni( 'USER', 'NEPMD', 'RootDir') IF next = 'ERROR:' THEN LEAVE RootDir = STRIP( next, 't', '00'x ) END RETURN FindNepmdIni: PROCEDURE EXPOSE (GlobalVars) /* UserDir, RootDir and NepmdIni are global vars */ IF UserDir <> '' THEN NepmdIni = STRIP( UserDir, 't', '\')'\bin\NEPMD.INI' ELSE DO IF RootDir <> '' THEN NepmdIni = STRIP( RootDir, 't', '\')'\myepm\bin\NEPMD.INI' END RETURN QueryNepmdIni: PROCEDURE EXPOSE (GlobalVars) DO 1 IniVal = '' PARSE ARG IniApp, IniKey IF NepmdIni = '' THEN LEAVE next = SysIni( NepmdIni, IniApp, IniKey) IF next = 'ERROR:' THEN LEAVE ELSE IniVal = STRIP( next, 'T', '00'x) END RETURN IniVal WriteNepmdIni: PROCEDURE EXPOSE (GlobalVars) DO 1 PARSE ARG IniApp, IniKey, IniVal IF NepmdIni = '' THEN LEAVE IF IniVal = '' THEN next = SysIni( NepmdIni, IniApp, IniKey, 'DELETE:') ELSE next = SysIni( NepmdIni, IniApp, IniKey, IniVal'00'x) END RETURN /* Makes variable available to procedures, */ /* WarpIN macro space and external programs */ SetVar: PROCEDURE EXPOSE (GlobalVars) PARSE ARG Varname, VarValue rc = WirexxPutEnv( Varname, VarValue) /* EnvVarName = TRANSLATE( 'WI_VAR_'VarName) rcx = VALUE( EnvVarName, VarValue, 'OS2ENVIRONMENT') */ RETURN PARSE ARG Varname VarValue = WirexxGetEnv( VarName) IF (0) THEN DO SAY '--------------------' SAY VarName SAY VarValue END RETURN( WirexxGetEnv( VarName)) %BUTTON_NEXT% %BUTTON_NEXT% %BUTTON_NEXT% %BUTTON_NEXT% %BUTTON_INSTALL%