home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 13
/
AACD13.ISO
/
AACD
/
System
/
EASys
/
EASys!_update_47x_to_481
/
StartSys
/
bin
/
Extract-User-Startup.rexx
Wrap
OS/2 REXX Batch file
|
2000-06-30
|
7KB
|
293 lines
/*
ModAS © TNE) Jun.2000
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 GetClip('ModAS_Extracting')=1 THEN EXIT 0
CALL SetClip('ModAS_Extracting',1)
ADDRESS COMMAND 'EASys!_bin:CLIexchange MultiNotify DISABLE'
CALL Init
StartupDir='SYS:StartSys/c_Prepare/'
/*StartupDir='T:'*/
Startup='s:user-startup'
StartupTmp='T:New_UserStartup'
unassigned_script=StartupDir'1_User-Specific_parts'
unassigned_tmp='T:UnassignedTMP'
unassigned=0
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
leave_next=0
DO FOREVER
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) THEN leave_next=1
IF leave_next=1 | (LEFT(UPPER(r),4)=';END' | LEFT(UPPER(r),5)='; END' | LEFT(UPPER(r),6)='; END') THEN LEAVE
i=i+1
Line.i=r
END
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='PleaseRename_'u
IF ~EXISTS(StartupDir''App) THEN LEAVE
END
END
u=0
AppScript=StartupDir''App
BaseName=AppScript
DO FOREVER
IF EXISTS(AppScript) THEN
DO
u=u+1
AppScript=BaseName'_'u
END
ELSE LEAVE
END
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
CALL Message(AppScript)
IF leave_next=1 THEN LEAVE
END
ELSE
DO
IF ~(origLine='' | origLine=' ' | origLine=' ' | origLine=' ' | origLine=' ' | origLine=';' | origLine='; ' | origLine='; ' | origLine='; ') THEN
DO
App='User specific parts'
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
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
CALL Message(unassigned_script)
END
ADDRESS COMMAND
'copy "'StartupTmp'" "'Startup'" CLONE QUIET'
'EASys!_bin:CLIexchange MultiNotify ENABLE'
CALL DELAY(100)
CALL SetClip('ModAS_Extracting',0)
EXIT 0
/* -------------------------- */
Message:
PARSE ARG Script
IF LEFT(msg_flag,5)='QUIET' THEN RETURN
Msg=CR'ModAS Extractor:' CR'_______________________________'CR CR CR'Module: 'App CR CR'extracted from S:User-Startup'CR'into 'Script CR
rtBtns=' ok! | Edit '
e = rtezrequest(Msg,rtBtns,AppName,PosTags)
IF (e=0) THEN ADDRESS COMMAND '${RefTable/Text-Editor} "'Script'"'
RETURN
/* -------------------------- */
CreateStartupMessage:
PARSE ARG Comments
StartMsg='IF ${Flags/StartVerbose} EQ 1'CR' echo " Preparing..'Comments'"'CR'EndIf'
RETURN StartMsg
/* -------------------------- */
BackupFile:
PARSE ARG bakFile
n=10
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
/*--------------------------------------------*/
MyGetENV: PROCEDURE
PARSE ARG name
TheFile="ENV:" || name
IF (Open(TEMPFILE, TheFile, 'read')) THEN
DO
ENVvalue=ReadLn(TEMPFILE)
Result=Close(TEMPFILE)
END
ELSE
ENVvalue=''
RETURN ENVvalue
/*--------------------------------------------*/
Init:
AppName = "© TNE) ModAS User-Startup-Extractor"
CR = '0a'x
/* CALL GetLanguage */
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')
CALL FORBID
Intui = showlist(l, 'intuition.library',, a)
Screen = next(intui, 56)
Font = next(screen, 136)
FontSize = c2d(import(offset(font, 20), 2))
CALL PERMIT
MaxTitleChars = MyGetENV("RefTable/GUI-ShellTitleChars")
ConsoleType = MyGetENV("RefTable/GUI-ConsoleType")
IF (ConsoleType = "") THEN ConsoleType = "CON:"
ConsoleSize = MyGetENV("SHELLsize")
IF (ConsoleSize = "") THEN ConsoleSize = "40/50/600/200"
ReqLE = MyGetENV("RefTable/GUI-ReqLE") /* Main Window */
ReqTE = MyGetENV("RefTable/GUI-ReqTE")
ReqHeight = MyGetENV("RefTable/GUI-ReqHeight")
rt_TE1 = ReqTE + FontSize + 4 /* Requester-Windows */
rt_LE1 = ReqLE + 6
PosTags = "rt_reqpos=reqpos_topleftscr rt_leftoffset=" ReqLE " rt_topoffset=" ReqTE
EZtags = PosTags
GLtags = PosTags || "rtgl_min=0 rtgl_max=1500 rtgl_backfill=true "
GStags = PosTags || " rtgs_backfill=false rtgs_width=300"
POINTER_TAGS = "rt_reqpos=reqpos_pointer"
DIR_TAGS = PosTags || " rtfi_flags=freqf_nofiles|freqf_save rtfi_height=" ReqHeight
FILE_TAGS = PosTags || " rtfi_flags=freqf_multiselect|freqf_selectdirs" || " rtfi_height=" ReqHeight
ONEFILE_TAG = PosTags || " rtfi_height=" ReqHeight
Console = '>"'ConsoleType || ConsoleSize'/'AppName' Messages.../AUTO/NOClose/ALT'ReqLE'/'ReqTE'/500/40"'
RETURN