home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 13
/
AACD13.ISO
/
AACD
/
System
/
EASys
/
EASys!_update_481_to_482
/
c
/
Extract-User-Startup.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1999-10-12
|
5KB
|
204 lines
/*
ModAS © TNE) Sep.1998
Extracting Application Config from s:user-startup automatically
to SYS:StartSys/c_Prepare/<AppName>
<AppName> is automatically determined according to the entries'
;BEGIN ... Statement.
Notification for invoking this script when user-startup
is being write-accessed is realized by usage of
EASys!_bin:MultiNotify
*/
PARSE ARG msg_flag
IF EXISTS('ENV:Flags/DO_ModAS_Extract') THEN EXIT 0
ADDRESS COMMAND
'setenv Flags/DO_ModAS_Extract 1'
'Install_C:CLIexchange MultiNotify DISABLE'
'wait 1'
CALL Init
StartupDir='SYS:StartSys/c_Prepare/'
Startup='s:user-startup'
StartupTmp='T:New_UserStartup'
unassigned_script=StartupDir'1_User-Specific_parts'
unassigned_tmp='T:UnassignedTMP'
CALL BackupFile(startup)
header.1=';Backwards-compatibility-Script S:user-startup'
header.2='; * New Standard complies to ModAS'
header.3='; * All Entries are automatically checked out'
header.4='; to SYS:StartSys/c_Profile/<AppName>'
header.5='; by EASys!_bin:MultiNotify'
IF Open(fStartupTmp,StartupTmp,'W') THEN
DO
DO i=1 TO 5
r=WriteLn(fStartupTmp,header.i)
END
r=Close(fStartupTmp)
END
IF Open(fStartup,Startup,'R') THEN startupOpen=1
IF Open(fUnassignedTMP,unassigned_tmp,'W') THEN Unassigned_tmp_Open=1
origLine=ReadLn(fStartup)
DO i=1 TO 5
IF (header.i=origLine) THEN
DO
origLine=ReadLn(fStartup)
IF EOF(fStartup) THEN CALL ExitMe
END
ELSE LEAVE i
END
DO FOREVER
App=' '
drop i
drop j
drop Line
i=0
j=0
IF (LEFT(UPPER(origLine),6)=';BEGIN' | LEFT(UPPER(origLine),7)='; BEGIN' | LEFT(UPPER(origLine),8)='; BEGIN' ) THEN
DO
i=i+1
IF LEFT(UPPER(origLine),6)=';BEGIN' THEN
DO
App=Word(origLine,2)
Comment=RIGHT(origLine,LENGTH(origLine)-6)
END
IF (LEFT(UPPER(origLine),7)='; BEGIN' | LEFT(UPPER(origLine),8)='; BEGIN') THEN
DO
App=Word(origLine,3)
Comment=RIGHT(origLine,LENGTH(origLine)-7)
END
App=STRIP(App,'B','"')
IF ~(RIGHT(msg_flag,6)='NOECHO') THEN Line.i=CreateStartupMessage(Comment)
DO FOREVER
r=ReadLn(fStartup)
IF EOF(fStartup) | (POS(UPPER(App),UPPER(r))>0 & (LEFT(UPPER(r),4)=';END' | LEFT(UPPER(r),5)='; END' | LEFT(UPPER(r),6)='; END')) THEN LEAVE
i=i+1
Line.i=r
END
IF EOF(fStartup) THEN LEAVE
DevicePos=POS(':',App)
SlashPos=POS('/',App)
DollPos=POS('$',App)
len=Length(App)
IF (DevicePos>0) THEN App=LEFT(App,DevicePos-1)
IF (SlashPos>0) THEN App=LEFT(App,SlashPos-1)
IF (DollPos>0) THEN App=LEFT(App,DollPos-1)
IF (App='') | (App=' ') | (App=' ') THEN
DO
u=0
DO FOREVER
u=u+1
App='Unknown_'u
IF ~EXISTS(App) THEN LEAVE
END
END
AppScript=StartupDir''App
IF Open(fPrepare,AppScript, 'W') THEN
DO
IF ~(RIGHT(msg_flag,6)='NOECHO') THEN
DO
e=WriteLn(fPrepare,'failat 30')
e=WriteLn(fPrepare,'stack 8192')
END
DO j=1 to i
IF ~(Line.j='LINE.'j) THEN e=WriteLn(fPrepare,Line.j)
END
e=Close(fPrepare)
END
END
ELSE
DO
unassigned=1
IF ~EXISTS(unassigned_script) & ~(unassigned_exists=1) THEN
DO
unassigned_exists=1
IF ~(RIGHT(msg_flag,6)='NOECHO') THEN
DO
StartupMsg=CreateStartupMessage(' User specific parts')
r=WriteLn(fUnassignedTMP,'failat 21'CR''StartupMsg''CR CR''origLine)
END
END
ELSE
r=WriteLn(fUnassignedTMP,origLine)
END
origLine=ReadLn(fStartup)
IF EOF(fStartup) THEN LEAVE
END
/* -------------------------- */
ExitMe:
IF (StartupOpen=1) THEN e=Close(fStartup)
IF (Unassigned_tmp_Open=1) THEN e=Close(fUnassignedTmp)
IF (unassigned=1) THEN
DO
ADDRESS COMMAND
'type >>'unassigned_script' 'unassigned_tmp
'delete 'unassigned_tmp' FORCE QUIET'
END
ADDRESS COMMAND
'copy "'StartupTmp'" "'Startup'" CLONE QUIET'
'delete "'StartupTmp'" "'unassigned_tmp'" ENV:Flags/DO_ModAS_Extract FORCE QUIET'
EXIT 0
/* -------------------------- */
CreateStartupMessage:
PARSE ARG Comments
StartMsg='IF ${Flags/StartVerbose} EQ 1'CR' echo " Preparing..'Comments'"'CR'EndIf'
RETURN StartMsg
/* -------------------------- */
BackupFile:
PARSE ARG bakFile
n=4
DO i=1 to n
IF EXISTS(bakFile'.'n) THEN
DO
ADDRESS COMMAND 'copy "'bakFile'" "'bakFile'.'n'" CLONE QUIET'
LEAVE
END
IF ~EXISTS(bakFile'.'i) THEN ADDRESS COMMAND 'copy "'bakFile'" "'bakFile'.'i'" CLONE QUIET'
END
RETURN
/*--------------------------------------------*/
Init:
AppName = "© TNE) ModAS User-Startup-Extractor"
CR = '0a'x
IF ~show('L','rexxreqtools.library') THEN Result=ADDLIB('rexxreqtools.library',0,-30,0)
IF ~show('L','rexxsupport.library') THEN Result=ADDLIB('rexxsupport.library',0,-30,0)
ProcessNumber=PRAGMA('ID')
RETURN