/*:VRX Main */ /* Main */ Main: /* Process the arguments. Get the parent window. */ parse source . calledAs . parent = "" argCount = arg() argOff = 0 if( calledAs \= "COMMAND" )then do if argCount >= 1 then do parent = arg(1) argCount = argCount - 1 argOff = 1 end InitArgs.0 = argCount if( argCount > 0 )then do i = 1 to argCount InitArgs.i = arg( i + argOff ) end end; else do call VROptions 'ImplicitNames' call VROptions 'NoEchoQuit' argCount = _ParseParams( arg(1) ) end drop calledAs argCount argOff /* Load the windows */ call VRInit parse source . . spec _VREPrimaryWindowPath = , VRParseFileName( spec, "dpn" ) || ".VRW" _VREPrimaryWindow = , VRLoad( parent, _VREPrimaryWindowPath ) drop parent spec if( _VREPrimaryWindow == "" )then do call VRMessage "", "Cannot load window:" VRError(), , "Error!" _VREReturnValue = 32000 signal _VRELeaveMain end /* Process events */ call Init signal on halt do while( \ VRGet( _VREPrimaryWindow, "Shutdown" ) ) _VREEvent = VREvent() interpret _VREEvent end _VREHalt: _VREReturnValue = Fini() call VRDestroy _VREPrimaryWindow _VRELeaveMain: call VRFini exit _VREReturnValue VRLoadSecondary: __vrlsWait = abbrev( 'WAIT', translate(arg(2)), 1 ) if __vrlsWait then do call VRFlush end __vrlsHWnd = VRLoad( VRWindow(), VRWindowPath(), arg(1) ) if __vrlsHWnd = '' then signal __vrlsDone if __vrlsWait \= 1 then signal __vrlsDone call VRSet __vrlsHWnd, 'WindowMode', 'Modal' __vrlsTmp = __vrlsWindows.0 if( DataType(__vrlsTmp) \= 'NUM' ) then do __vrlsTmp = 1 end else do __vrlsTmp = __vrlsTmp + 1 end __vrlsWindows.__vrlsTmp = VRWindow( __vrlsHWnd ) __vrlsWindows.0 = __vrlsTmp do while( VRIsValidObject( VRWindow() ) = 1 ) __vrlsEvent = VREvent() interpret __vrlsEvent end __vrlsTmp = __vrlsWindows.0 __vrlsWindows.0 = __vrlsTmp - 1 call VRWindow __vrlsWindows.__vrlsTmp __vrlsHWnd = '' __vrlsDone: return __vrlsHWnd _ParseParams: PROCEDURE EXPOSE InitArgs. /* Parse program parameters when they are provided as a single string, * including handling quotes. */ parse arg thisArgs InitArgs. = '' InitArgs.0 = 0 do while thisargs <> '' parse value strip( thisArgs, "B" ) with curArg thisArgs parse var curArg tc1 +1 . if tc1 = '"' | tc1 = "'" then parse value curArg thisArgs with (tc1) curArg (tc1) ThisArgs i = InitArgs.0 + 1 InitArgs.i = strip( curArg ) InitArgs.0 = i end /* do while thisArgs <> '' */ RETURN InitArgs.0 /*:VRX _NoValue */ _NoValue: SAY RIGHT( sigl, 4 ) '+++ Uninitialized variable' IF VRGet("Application", "Program") == '' THEN SAY SOURCELINE( sigl ) SIGNAL HALT RETURN /*:VRX CreateRSP */ CreateRSP: PROCEDURE EXPOSE globals. ARG dhcpd, nfs, vpn /* Define the response file and make sure it's writable. */ globals.!rspfile = globals.!rspdir'\TCPSINST.RSP' IF VRFileExists( globals.!rspfile ) THEN CALL VRDeleteFile globals.!rspfile badwrite = LINEOUT( globals.!rspfile, '') IF badwrite == 1 THEN DO CALL VRMessage VRWindow(), NLSGetMessage( 86, TRANSLATE( globals.!rspfile ) || '.'),, NLSGetMessage( 4 ), 'E' RETURN 0 END IF globals.!etcdir == '' THEN globals.!etcdir = globals.!mptn'\ETC' IF globals.!tcpip == '' THEN tcpip_target = globals.!target ELSE tcpip_target = FILESPEC('DRIVE', globals.!tcpip ) CALL LINEOUT globals.!rspfile, 'TCPIP.InstallDrive='tcpip_target CALL LINEOUT globals.!rspfile, 'TCPIP.PackageDir='globals.!source'\INSTALL' CALL LINEOUT globals.!rspfile, 'TCPIP.ETC='globals.!etcdir CALL LINEOUT globals.!rspfile, 'TCPIP.mpts_path='globals.!mptn IF globals.!tcpip <> '' THEN CALL LINEOUT globals.!rspfile, 'TCPIP_BASE.Selection=0' CALL LINEOUT globals.!rspfile, 'DHCP_DDNS_Server.Selection='dhcpd IF dhcpd == 1 THEN DO CALL LINEOUT globals.!rspfile, 'DHCP_DDNS_Server.AsciiFile[1].NewLine=start /c /min binlscps.cmd' CALL LINEOUT globals.!rspfile, 'DHCP_DDNS_Server.AsciiFile[2].NewLine=start /c /min dhcpscps.cmd' CALL LINEOUT globals.!rspfile, 'DHCP_DDNS_Server.AsciiFile[3].NewLine=start /c /min ddnsaps.cmd' END CALL LINEOUT globals.!rspfile, 'NFS.Selection='nfs CALL LINEOUT globals.!rspfile, 'VPN.Selection='vpn CALL LINEOUT globals.!rspfile RETURN 1 /*:VRX DebugOutput */ DebugOutput: PROCEDURE EXPOSE globals. PARSE ARG text IF globals.!debug THEN DO CALL LINEOUT globals.!logfile, text SAY text END RETURN /*:VRX Fini */ Fini: IF globals.!debug THEN CALL LINEOUT globals.!logfile window = VRWindow() call VRSet window, "Visible", 0 drop window return 0 /*:VRX GetInstalledPaths */ GetInstalledPaths: PROCEDURE EXPOSE globals. tcpapps = '' inetexe = SysSearchPath('PATH', 'INETD.EXE') IF inetexe <> '' THEN DO tcpapps = VRParseFileName( inetexe, 'DP') tcpapps = STRIP( tcpapps, 'T', '\') _ls = LASTPOS('\', tcpapps ) IF _ls < 1 THEN _ls = LENGTH( tcpapps ) tcpapps = SUBSTR( tcpapps, 1, _ls-1 ) END ifexe = SysSearchPath('PATH', 'IFCONFIG.EXE') IF ifexe <> '' THEN mptn = FILESPEC('DRIVE', ifexe ) || '\MPTN' ELSE mptn = globals.!bootdrv'\MPTN' IF \VRFileExists( mptn'\BIN\IFCONFIG.EXE') THEN mptn = '' globals.!mptn = mptn globals.!tcpip = tcpapps CALL DebugOutput CALL DebugOutput 'MPTS path: ' globals.!mptn CALL DebugOutput 'TCP/IP path: ' globals.!tcpip CALL DebugOutput IF globals.!tcpip == '' THEN DO CALL DebugOutput 'IBM TCP/IP is not installed.' RETURN 0 END RETURN 1 /*:VRX Halt */ Halt: IF SYMBOL('ishield_exe') == 'VAR' & ( ishield_exe <> '') THEN '@CALL' ishield_exe '/t 1>nul 2>nul' signal _VREHalt return /*:VRX Init */ Init: CALL VRSet 'Console', 'WindowListTitle', '' CALL RxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs' CALL SysLoadFuncs globals.!debug = 0 globals.!testmode = 0 globals.!deffont = 0 globals.!version = '1.00' globals.!year = '2020' exe_path = VRGet("Application", "Program") IF exe_path == '' THEN exe_path = DIRECTORY() globals.!appdir = VRParseFileName( exe_path, 'DP') globals.!logdir = STRIP( VALUE('LOGFILES',,'OS2ENVIRONMENT')) IF globals.!logdir == '' THEN globals.!logdir = globals.!appdir CALL InitLog globals.!bootdrv = SysBootDrive() globals.!tmpdir = STRIP( VALUE('TMP',,'OS2ENVIRONMENT')) globals.!etcdir = STRIP( VALUE('ETC',,'OS2ENVIRONMENT')) DO i = 1 TO InitArgs.0 PARSE UPPER VAR InitArgs.i _flag SELECT WHEN LEFT( _flag, 2 ) == '/D' THEN globals.!debug = 1 WHEN LEFT( _flag, 2 ) == '/R' THEN globals.!testmode = 1 WHEN LEFT( _flag, 2 ) == '/F' THEN globals.!deffont = 1 OTHERWISE CALL DebugOutput 'Unsupported option "'_flag'"' END END /* Determine the OS. */ globals.!os2dist = 'OS/2' oem_osdir = VALUE('OSDIR',,'OS2ENVIRONMENT') IF oem_osdir == '' THEN oem_osdir = globals.!bootdrv'\OS2' IF VRFileExists( oem_osdir'\INSTALL\INSTALL.FLG') THEN DO PARSE VALUE LINEIN( oem_osdir'\INSTALL\INSTALL.FLG') WITH p_os p_release p_nlv . CALL STREAM oem_osdir'\INSTALL\INSTALL.FLG', 'C', 'CLOSE' IF p_os == 'ArcaOS' THEN globals.!os2dist = 'ArcaOS' END ELSE IF VRFileExists( globals.!os2dir'\INSTALL\SYSLEVEL.ECS') THEN globals.!os2dist = 'eComStation' globals.!hostname = VALUE('HOSTNAME',,'OS2ENVIRONMENT') IF globals.!hostname == '' THEN globals.!hostname = 'arcaos'||TIME('S') globals.!domain = 'WORKGROUP' /* Set up the target combobox */ deftarget = 1 map = SysDriveMap('C:', 'LOCAL') DO x = 1 TO WORDS( map ) volume = WORD( map, x ) IF volume == globals.!bootdrv THEN deftarget = x fs = SysFileSystemType( volume ) IF WORDPOS( fs, 'HPFS JFS FAT16') > 0 THEN CALL VRMethod 'CB_TARGET', 'AddString', volume END ok = VRSet('CB_TARGET', 'Selected', deftarget ) /* Set up the source combobox */ guesscd = 0 fallback = 0 map = SysDriveMap('C:', 'USED') DO x = 1 TO WORDS( map ) volume = WORD( map, x ) CALL VRMethod 'CB_SOURCE', 'AddString', volume IF volume == LEFT( VALUE('LANINSTEP',,'OS2ENVIRONMENT'), 1 ) THEN guesscd = x fs = SysFileSystemType( volume ) IF ( guesscd == 0 ) & ( fs == 'CDFS') THEN guesscd = x IF ( fallback == 0 ) & ( fs == '') THEN fallback = x END IF guesscd == 0 THEN DO IF fallback > 0 THEN guesscd = fallback ELSE guesscd = 1 END ok = VRSet('CB_SOURCE', 'Selected', guesscd ) globals.!tcp_adminid = 'USERID' globals.!tcp_adminpwd = 'PASSWORD' globals.!tcp_install_dhcp = 1 globals.!tcp_install_nfs = 1 globals.!tcp_dhcp_start = 1 osdir = STRIP( VALUE('OSDIR',,'OS2ENVIRONMENT')) IF osdir == '' THEN globals.!rspdir = globals.!tmpdir ELSE DO IF VRFileExists( osdir'\INSTALL\RSP') & VRIsDir( osdir'\INSTALL\RSP') THEN globals.!rspdir = osdir'\INSTALL\RSP' ELSE globals.!rspdir = globals.!tmpdir END IF globals.!testmode THEN CALL DebugOutput 'RESPONSE FILE MODE' CALL DebugOutput 'Boot drive: ' globals.!bootdrv CALL DebugOutput 'Hostname: ' globals.!hostname CALL GetInstalledPaths IF globals.!tcpip == '' THEN DO CALL VRSet 'DT_TCPDIR', 'Visible', 0 CALL VRSet 'CB_TARGET', 'Visible', 1 END ELSE CALL VRSet 'DT_TCPDIR', 'Caption', globals.!tcpip CALL NLSInit IF \globals.!testmode THEN DO ok = 1 DO WHILE ( globals.!cddrv == '') & ( ok == 1 ) btn.1 = NLSGetMessage( 1 ) btn.2 = NLSGetMessage( 2 ) btn.0 = 2 ok = VRMessage( VRWindow(), NLSGetMessage( 51 ), NLSGetMessage( 50 ), 'I', 'btn.', 1, 2 ) IF ok <> 1 THEN CALL Quit ELSE globals.!cddrv = GetMedia() END END IF globals.!deffont THEN CALL VRSet 'WN_MAIN', 'Font', '' window = VRWindow() call VRMethod window, "CenterWindow" call VRSet window, "Visible", 1 call VRMethod window, "Activate" drop window RETURN /*:VRX InitLog */ InitLog: PROCEDURE EXPOSE globals. globals.!logfile = globals.!logdir'\TCPSINST.LOG' IF \globals.!debug THEN RETURN log_backup = globals.!logdir'\TCPSINST.BAK' IF VRFileExists( globals.!logfile ) THEN DO logsize = STREAM( globals.!logfile, 'C', 'QUERY SIZE') IF logsize > '50000' THEN DO IF VRFileExists( log_backup ) THEN CALL VRDeleteFile log_backup CALL VRRenameFile globals.!logfile, log_backup END END timestamp = DATE('L') TIME() CALL LINEOUT globals.!logfile, '==[' timestamp ']' || COPIES('=', 73 - LENGTH( timestamp )) CALL LINEOUT globals.!logfile, '' RETURN /*:VRX IsNumber */ IsNumber: PROCEDURE /* Determine if the parameter is a valid decimal number. */ PARSE ARG string IF ( VERIFY( string, '1234567890.') == 0 ) & ( STRIP( string, 'B', '.') \= '') THEN RETURN 1 RETURN 0 /*:VRX NLSGetMessage */ NLSGetMessage: PROCEDURE EXPOSE globals. PARSE ARG msgnum, . args = ARG() msgfile = globals.!messages IF msgnum == '' THEN RETURN '' sub_parms = '' DO i = 2 TO args sub_parms = sub_parms', "'ARG( i )'"' END INTERPRET 'msgfromfile = SysGetMessage( msgnum, msgfile' sub_parms ')' PARSE VAR msgfromfile message '0D'x . IF SUBSTR( message, 1, 4 ) == 'SYS0' THEN message = '' RETURN message /*:VRX NLSInit */ NLSInit: PROCEDURE EXPOSE globals. PARSE ARG _locale basename = 'tcpsin' /* Locate the proper language files and uses them to set all UI text. * If the language could not be determined, we default to English. */ execPath = VRGet("Application", "Program") IF execPath == '' THEN execPath = DIRECTORY() execDir = VRParseFileName( execPath, "DP") CALL DebugOutput 'Program dir: ' execPath /* First, figure out what language/message file to use. */ IF _locale <> '' THEN syslanguage = _locale ELSE syslanguage = VALUE('LANG',,'OS2ENVIRONMENT') SELECT WHEN TRANSLATE( syslanguage ) == 'ZH_TW' THEN nlv = 'tw' WHEN TRANSLATE( syslanguage ) == 'ZH_CN' THEN nlv = 'cx' OTHERWISE PARSE VAR syslanguage nlv '_' . END IF ( STREAM( execDir'\'basename || nlv'.msg', 'C', 'QUERY EXISTS') \= '') |, ( SysSearchPath('DPATH', basename || nlv'.msg') \= '') THEN globals.!messages = basename || nlv'.msg' ELSE globals.!messages = basename'en.msg' IF ( STREAM( execDir'\'basename || nlv'.hlp', 'C', 'QUERY EXISTS') \= '') |, ( SysSearchPath('HELP', basename || nlv'.hlp') \= '') THEN helpfile = basename || nlv'.hlp' ELSE helpfile = basename'en.hlp' CALL VRSet 'WN_MAIN', 'HelpFile', helpfile CALL DebugOutput 'Message file:' globals.!messages /* If the message file is missing or unreadable, display an error and then exit. */ IF NLSGetMessage( 1 ) == '' THEN DO CALL VRMessage VRWindow(), 'Language file' TRANSLATE( globals.!messages ) 'could not be loaded.', 'Cannot Continue', 'E' RETURN 0 END IF globals.!tcpip == '' THEN DO CALL NLSSetText 'WN_MAIN', 'Caption', 10 CALL NLSSetText 'DT_TARGET', 'Caption', 23 END ELSE DO CALL NLSSetText 'WN_MAIN', 'Caption', 0 CALL NLSSetText 'DT_TARGET', 'Caption', 21 END CALL NLSSetText 'DT_SOURCE', 'Caption', 22, globals.!os2dist CALL NLSSetText 'DT_MAIN', 'Caption', 20 CALL NLSSetText 'CHK_DHCPD', 'Caption', 11 CALL NLSSetText 'CHK_NFSD', 'Caption', 15 CALL NLSSetText 'CHK_VPN', 'Caption', 16 CALL NLSSetText 'PB_INSTALL', 'Caption', 1 CALL NLSSetText 'PB_CANCEL', 'Caption', 2 RETURN /*:VRX NLSSetText */ NLSSetText: PROCEDURE EXPOSE globals. PARSE ARG control, property, message, substitution args = ARG() success = 1 IF args < 4 THEN text = NLSGetMessage( message ) ELSE DO sub_parms = '' DO i = 4 TO args sub_parms = sub_parms '"'|| ARG( i ) ||'",' END sub_parms = STRIP( sub_parms, 'T', ',') INTERPRET 'text = NLSGetMessage( message, 'sub_parms')' END IF text == '' THEN success = 0 ELSE CALL VRSet control, property, text RETURN success /*:VRX PB_CANCEL_Click */ PB_CANCEL_Click: CALL Quit RETURN /*:VRX PB_INSTALL_Click */ PB_INSTALL_Click: PROCEDURE EXPOSE globals. SIGNAL ON NOVALUE NAME _NoValue /* Get the source path. */ _srcvol = STRIP( WORD( VRGet('CB_SOURCE', 'Value'), 1 )) globals.!source = _srcvol'\CID\SERVER\TCPAPPS' IF ( globals.!testmode == 0 ) & \VRFileExists( globals.!source'\TCPINST.EXE') THEN DO CALL VRMessage VRWindow(), NLSGetMessage( 51, globals.!os2dist ), NLSGetMessage( 50 ), 'E' RETURN END /* Get the selections */ inst_dhcpd = VRGet('CHK_DHCPD', 'Set') inst_nfs = VRGet('CHK_NFSD', 'Set') inst_vpn = VRGet('CHK_VPN', 'Set') /* Check the drive space */ req_dhcpd = 5400000 req_nfs = 2800000 req_vpn = 350000 globals.!target = VRGet('CB_TARGET', 'Value') IF globals.!tcpip == '' THEN tgt_tcpip = globals.!target ELSE tgt_tcpip = FILESPEC('DRIVE', globals.!tcpip ) tgt_mptn = FILESPEC('DRIVE', globals.!mptn ) PARSE VALUE SysDriveInfo( tgt_tcpip ) WITH . tcpip_free . PARSE VALUE SysDriveInfo( tgt_mptn ) WITH . mptn_free . required = 0 available = 0 target = globals.!bootdrv space_error = 0 IF inst_dhcpd THEN DO target = tgt_tcpip required = req_dhcpd available = tcpip_free IF inst_nfs & tgt_tcpip == tgt_mptn THEN required = required + req_nfs IF inst_vpn THEN required = required + req_vpn IF globals.!tcpip == '' THEN required = required + 26000000 IF required >= available THEN space_error = 1 END IF \space_error & inst_nfs THEN DO target = tgt_mptn required = req_nfs available = mptn_free IF inst_dhcpd & tgt_tcpip == tgt_mptn THEN required = required + req_dhcpd IF inst_vpn & tgt_tcpip == tgt_mptn THEN required = required + req_vpn IF globals.!tcpip == '' THEN required = required + 26000000 IF required >= available THEN space_error = 1 END IF \space_error & inst_vpn THEN DO target = tgt_tcpip required = req_vpn available = tcpip_free IF inst_dhcpd THEN required = required + req_dhcpd IF inst_nfs & tgt_tcpip == tgt_mptn THEN required = required + req_nfs IF globals.!tcpip == '' THEN required = required + 26000000 IF required >= available THEN space_error = 1 END IF space_error THEN DO msg.1 = NLSGetMessage( 54, target ) msg.2 = '' msg.3 = NLSGetMessage( 55 ) || ' ' || SizeString( required ) msg.4 = NLSGetMessage( 56 ) || ' ' || SizeString( available ) msg.0 = 4 btn.1 = NLSGetMessage( 1 ) btn.0 = 1 CALL VRMessageStem VRWindow(), 'msg.', NLSGetMessage( 53 ), 'E', 'btn.' RETURN END /* Prompt to confirm or cancel. */ btn.1 = NLSGetMessage( 1 ) btn.2 = NLSGetMessage( 2 ) btn.0 = 2 ok = VRMessage( VRWindow(), NLSGetMessage( 40 ), NLSGetMessage( 10 ), 'I', 'btn.') IF ok == 2 THEN RETURN /* Now do our stuff. */ ok = CreateRSP( inst_dhcpd, inst_nfs, inst_vpn ) IF \ok THEN RETURN IF globals.!testmode THEN DO CALL VRMessage VRWindow(), NLSGetMessage( 85, globals.!rspfile ), NLSGetMessage( 84 ), 'I' CALL Quit RETURN END CALL VRSet 'WN_MAIN', 'Visible', 0 log1 = globals.!logdir'\tcpsinst.l1' log2 = globals.!logdir'\tcpsinst.l2' proddef = globals.!source'\INSTALL\TCPINST.RSP' instlcmd = '@clifi /a:c /r:'proddef '/l1:'log1 '/l2:'log2 '/s:'globals.!source'\INSTALL /b:'globals.!bootdrv '/r2:'globals.!rspfile ADDRESS CMD instlcmd result = D2X( rc, 4 ) cidcode = LEFT( result, 2 ) IF ( cidcode == '00') | ( cidcode == 'FE') | (cidcode == 'FF') THEN DO /* Post-installation tasks. */ /* Update the desktop. */ IF inst_dhcpd THEN DO CALL SysCreateObject "WPFolder", "DHCP Server^Services", "", "OBJECTID=;ICONFILE="globals.!tcpip"\BIN\TCPCLOSE.ICO;ICONNFILE=1,"globals.!tcpip"\BIN\TCPOPEN.ICO" CALL SysCreateObject "WPFolder", "DDNS Server^Services", "", "OBJECTID=;ICONFILE="globals.!tcpip"\BIN\TCPCLOSE.ICO;ICONNFILE=1,"globals.!tcpip"\BIN\TCPOPEN.ICO" CALL SysCreateObject "WPProgram", "DHCP Server", "", "OBJECTID=;EXENAME=DHCPSD.EXE;ICONFILE="globals.!tcpip"\BIN\DHCPSDO.ICO" CALL SysCreateObject "WPProgram", "DHCP Server^Management", "", "OBJECTID=;EXENAME=DADMGUI.CMD;ICONFILE="globals.!tcpip"\BIN\DADMINO.ICO;MINIMIZED=YES" CALL SysCreateObject "WPProgram", "DHCP Server^Configuration", "", "OBJECTID=;EXENAME=DHCPSCPC.CMD;ICONFILE="globals.!tcpip"\BIN\DHCPSCFO.ICO;MINIMIZED=YES" CALL SysCreateObject "WPProgram", "BINL Server", "", "OBJECTID=;EXENAME=BINLSD.EXE;ICONFILE="globals.!tcpip"\BIN\DHCPSD.ICO" CALL SysCreateObject "WPProgram", "BINL Server^Configuration", "", "OBJECTID=;EXENAME=BINLSCPC.CMD;ICONFILE="globals.!tcpip"\BIN\DHCPSD.ICO;MINIMIZED=YES" CALL SysCreateObject "WPProgram", "DDNS Server", "", "OBJECTID=;EXENAME=NAMED.EXE;ICONFILE="globals.!tcpip"\BIN\DDNSSDO.ICO" CALL SysCreateObject "WPProgram", "DDNS Server^Administrator", "", "OBJECTID=;EXENAME=DDNSAPC.CMD;ICONFILE="globals.!tcpip"\BIN\DDNSSCFO.ICO;MINIMIZED=YES" CALL SysCreateObject "WPShadow", "TCP/IP DHCP^and Dynamic IP Client^Administration", "", "OBJECTID=;SHADOWID=" CALL SysCreateObject "WPShadow", "TCP/IP DHCP^and Dynamic IP^Introduction", "", "OBJECTID=;SHADOWID=" CALL SysCreateObject "WPShadow", "TCP/IP DHCP^Administration", "", "OBJECTID=;SHADOWID=" CALL SysCreateObject "WPShadow", "Create TCP/IP^Administrator Password", "", "OBJECTID=;SHADOWID=" CALL SysCreateObject "WPShadow", "TCP/IP DNS^Administration", "", "OBJECTID=;SHADOWID=" CALL SysCreateObject "WPShadow", "Create TCP/IP^Administrator Password", "", "OBJECTID=;SHADOWID=" IF globals.!os2dist == 'ArcaOS' THEN DO CALL SysSetObjectData "", "ICONRESOURCE=113,AUXWP;ICONNRESOURCE=1,114,AUXWP" CALL SysSetObjectData "", "ICONRESOURCE=113,AUXWP;ICONNRESOURCE=1,114,AUXWP" END ELSE IF globals.!os2dist == 'eComStation' THEN DO CALL SysSetObjectData "", "ICONRESOURCE=113,ECSWP;ICONNRESOURCE=1,114,ECSWP" CALL SysSetObjectData "", "ICONRESOURCE=113,ECSWP;ICONNRESOURCE=1,114,ECSWP" END END /* If TCP/IP was already installed then we don't need to create the desktop for it... */ IF globals.!tcpip <> '' THEN CALL SysDestroyObject "" /* Also get rid of the useless "Shadows" folder. */ CALL SysDestroyObject "" /* Display the success message. */ CALL VRMessage VRWindow(), NLSGetMessage( 81 ), NLSGetMessage( 80 ), 'I' /* End the program. */ CALL Quit END ELSE DO /* Display the failure message. */ CALL VRMessage VRWindow(), NLSGetMessage( 83, result ), NLSGetMessage( 82 ), 'E' CALL VRSet 'WN_MAIN', 'Visible', 1 END RETURN /*:VRX Quit */ Quit: window = VRWindow() call VRSet window, "Shutdown", 1 drop window return /*:VRX SizeString */ SizeString: PROCEDURE /* Convert a number of bytes into a suitable size string, using bytes, kB, * or MB as appropriate for the size. */ PARSE ARG _bytes IF IsNumber( _bytes ) == 0 THEN RETURN _bytes SELECT WHEN _bytes < 1024 THEN sizestr = _bytes 'B' WHEN _bytes >= 1048576 THEN sizestr = FORMAT(_bytes/1048576,,1) 'MB' OTHERWISE sizestr = FORMAT(_bytes/1024,,1) 'KB' END RETURN sizestr /*:VRX WN_MAIN_Close */ WN_MAIN_Close: call Quit return