home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
rxtt33.zip
/
INSTALL.CMD
next >
Wrap
OS/2 REXX Batch file
|
2000-12-31
|
9KB
|
235 lines
/* ------------------------------------------------------------------ */
/* CMD to create (or update) the object for REXX Tips & Tricks */
/* */
/* The default is on the desktop, but if you have already an object */
/* for an older version of RXT&T this program will update that */
/* object. */
/* */
/* Usage: INSTALL {os2BootDrive} */
/* */
/* where: os2BootDrive - drive specifier for the boot drive */
/* (e.g. C:, default: Search the boot drive) */
/* */
/* */
/* Initial Release: 26.12.1995 /bs */
/* */
/* Last update: 24.10.1997 /bs */
/* 29.12.2000 /bs */
/* - added more error checking */
/* */
/* */
/* ------------------------------------------------------------------ */
/* check & process the parameter */
parse arg OS2BootDrive
OS2BootDrive = substr( translate( strip( OS2BootDrive ) ),1,2 )
if OS2BootDrive <> '' then
do
if stream( OS2BootDrive || '\CONFIG.SYS', 'c', 'QUERY EXIST' ) = '' then
do
/* show the usage */
say 'Usage: INSTALL {os2BootDrive}'
say ''
say 'Default: Search the OS/2 boot drive'
exit 253
end /* if stream( ... */
end /* if OS2BootDrive <> '' then */
/* init the return code */
thisRC = 255
/* init some global variables */
fileMask = 'RXTT*.INF'
fixedName = 'RXTT'
defaultTitle = 'REXX Tips & Tricks'
curObjectID = '<RXTT>'
defaultLocation = '<WP_DESKTOP>'
/* show the logo */
say ''
say center( 'Installation program for REXX Tips & Tricks', 79 )
say center( '===========================================', 79 )
say ''
/* install some error handler */
signal on halt name UserAbort
signal on syntax name RexxUtilNotFound
say ' Loading REXXUTIL ... '
/* load REXXUTIL */
call rxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs'
call SysLoadFuncs
/* turn on the default error handler again */
signal off Syntax
/* search the OS/2 boot drive */
if OS2BootDrive = '' then
do
say ' Searching the boot drive. Please wait ...'
OS2BootDrive = SearchbootDrive()
say ' ... the OS/2 bootdrive is "' || OS2BootDrive || '".'
end /* if OS2BootDrive = '' then */
say ' Searching the newest version of ' || defaultTitle || ' ...'
say ' (only in the current directory!)'
/* search RXTT*.INF */
call SysFileTree fileMask, 'infFileStem' , 'FO'
/* get the newest version */
curInfFileVersion = '00'
do i = 1 to infFileStem.0
parse upper var infFileStem.i (fixedName) infFileVersion '.' .
if infFileVersion > curInfFileVersion then
do
curInfFile = infFileStem.i
curInfFileVersion = infFileVersion
end /* infFileVersion > curInfFileVersion then */
end /* do i = 1 to infFileStem.0 */
/* check, if we found a version of RXT&T */
if curInfFileVersion <> '00' then
do
curtitle = strip( getTitle( '"' || curInfFile || '"' ) )
if curTitle <> '' then
do
say ' ... "' || curTitle || '" found.'
say ''
say ' Should I create an object for "' || curTitle || '" (Y/n)? '
userResponse = substr( strip( translate( SysGetKey( 'NOECHO' ) ) ),1,1 )
if UserResponse = 'N' then
signal UserAbort
curTitle = translate( curTitle, '^', ',' )
say ' Creating the object ...'
/* create the object */
tempRC = SysCreateObject( 'WPProgram' ,,
curTitle ,,
defaultLocation ,,
'EXENAME=' || OS2BootDrive || '\OS2\VIEW.EXE;' || ,
'PARAMETERS="' || curInfFile || '";' || ,
'STARTUPDIR=' || OS2BootDrive || '\;' || ,
'TITLE=' || curTitle || ';' || ,
'OBJECTID=' || curObjectID || ';' ,,
'U' )
if tempRC = 1 then
do
thisRC = 0
say ' ... object created.'
end /* if tempRC = 1 then */
else
say 'Error creating the object!'
end /* if curTitle <> '' then */
else
do
say '07'x
say ' Error: Error reading the file'
say
say ' "' || curInfFile || '"!'
say
say ' Please close RXT&T if it''s open and try it again.'
end /* else */
end /* if curInfFileVersion <> '00' then */
else
do
say '07'x
say ' Error: ' || defaultTitle || ' not found!'
say
say ' Please make sure that the file RXTT*.INF is in the current directory'
say ' and try it again.'
end /* else */
exit thisRC
/* ------------------------------------------------------------------ */
/* function: search the boot drive */
/* */
/* parameters: none */
/* */
/* returns: boot drive (e.g. "C:") */
/* */
SearchBootDrive: PROCEDURE
/* install a local error handler */
signal on syntax name BootDriveNotFound
/* try the new function from the new REXXUTIL DLL */
OS2BootDrive = SysBootDrive()
BootDriveNotFound:
if symbol( 'OS2BootDrive' ) <> 'VAR' then
do
/* new REXXUTIL DLL not found -- */
/* use the old method */
OS2BootDrive = substr( value( 'RUNWORKPLACE' ,, 'OS2ENVIRONMENT' ), 1,2 )
if OS2BootDrive = '' then
OS2BootDrive = substr( value( 'COMSPEC' ,, 'OS2ENVIRONMENT' ), 1,2 )
if OS2BootDrive = '' then
OS2BootDrive = 'C:'
end /* if symbol( 'OS2BootDrive' ) <> 'VAR' then */
RETURN OS2BootDrive
/* ------------------------------------------------------------------ */
/* function: get the title of an INF file */
/* */
/* parameters: fully qualified path of the INF file */
/* */
/* returns: the title of the INF file */
/* or an empty string in case of an error */
/* */
GetTitle: PROCEDURE
parse arg '"' infFile '"'
/* init the return code */
thisTitle = ''
/* read the header of the INF file */
thisRC = stream( infFile, 'c', 'OPEN READ' )
if thisRC = 'READY:' then
do
infHeader = charIn( infFile, 1,500 )
thisRC = stream( infFile, 'c', 'CLOSE' )
/* search the title */
startPos = x2d( '6B' )
do i = 1 to 100
curChar = substr( infHeader, startPos+i, 1 )
if curChar = '00'x then
leave
else
thisTitle = thisTitle || curChar
end /* do i=0 to 100 */
end /* if */
RETURN thisTitle
/* ------------------------------------------------------------------ */
/* Error handler (called if the DLL REXXUTIL is not found) */
/* */
RexxUtilNotFound:
say ''
say 'Error: REXXUTIL.DLL not found!'
exit 255
/* ------------------------------------------------------------------ */
/* Error handler (called if the user presses CTRL-BREAK) */
/* */
UserAbort:
say ''
say ' Installation aborted by the user.'
exit 254