?section ADD^LIST routine [#IF [#ARGUMENT /VALUE item/ WORD/SPACE/]] #APPEND bin ADD * FROM [item] #SET itime [#FILEINFO /MODIFICATION/ [item]] [#IF itime > ntime |THEN| #SETV ntime itime] ?section BBZIPLIB MACRO #FRAME #push bin item ntime itime libtime #SET ntime 0 #OUTPUT Building [lib] #APPEND bin CLEAR add^list CRC32O add^list CRCTABO add^list CRYPTO add^list DEFLATEO add^list FILEIOO add^list GLOBALSO add^list TANDEMO add^list TANZIPO add^list TREESO add^list TTYIOO add^list UTILO add^list ZIPFILEO add^list ZIPUPO #APPEND bin INFO UNRESOLVED * #APPEND bin BUILD [lib] ! , LIST * OFF #SET libtime [#FILEINFO /MODIFICATION/ [lib]] [#IF libtime < ntime |THEN| #OUTPUT [lib] needs re-building BIND /NAME,INV BIN/ [#CASE [tacl^completioncode] | 0 | #OUTPUT Bound [lib] OK | 1 | #OUTPUT [lib]: BIND Failed with Warnings | OTHERWISE | #OUTPUT [lib]: BIND Failed with ERRORS ! ] |ELSE| #OUTPUT [lib] is up to date ] #UNFRAME ?section BBZIP MACRO #FRAME #push bin ziptime build #SET build 0 #OUTPUT Building %1% with %2% memory model #APPEND bin CLEAR #APPEND bin ADD * FROM ZIPO #APPEND bin select search ($system.system.c%2%, [lib]) #APPEND bin select runnable object on #APPEND bin select list * off #APPEND bin set heap 20 pages #APPEND bin set symbols on #APPEND bin set saveabend on #APPEND bin set inspect on #APPEND bin info unresolved * #APPEND bin BUILD %1% ! #SET ziptime [#FILEINFO /MODIFICATION/ %1%] [#IF ziptime < [#FILEINFO /MODIFICATION/ ZIPO] |THEN| #OUTPUT %1% is older than ZIPO #SET build -1 ] [#IF ziptime < [#FILEINFO /MODIFICATION/ [lib]] |THEN| #OUTPUT %1% is older than [lib] #SET build -1 ] [#IF build |THEN| #OUTPUT %1% is out of date, re-building BIND /NAME,INV BIN/ [#CASE [tacl^completioncode] | 0 | #OUTPUT Bound %1% OK | 1 | #OUTPUT %1%: BIND Failed with Warnings | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS ! ] |ELSE| #OUTPUT %1% is up to date, no re-build required ] #UNFRAME ?section BBANY MACRO #FRAME #push bin memory anytime build #SET build 0 #SETMANY memory, %2% LARGE #OUTPUT Building %1% with [memory] memory model #APPEND bin CLEAR #APPEND bin ADD * FROM %1%O #APPEND bin select search ($system.system.c[memory],[lib]) #APPEND bin select runnable object on #APPEND bin select list * off #APPEND bin set heap 20 pages #APPEND bin set symbols on #APPEND bin set saveabend on #APPEND bin set inspect on #APPEND bin info unresolved * #APPEND bin BUILD %1% ! #SET anytime [#FILEINFO /MODIFICATION/ %1%] [#IF anytime < [#FILEINFO /MODIFICATION/ %1%O] |THEN| #OUTPUT %1% is older than %1%O #SET build -1 ] [#IF anytime < [#FILEINFO /MODIFICATION/ [lib]] |THEN| #OUTPUT %1% is older than [lib] #SET build -1 ] [#IF build |THEN| #OUTPUT %1% is out of date, re-building BIND /NAME,INV BIN/ [#CASE [tacl^completioncode] | 0 | #OUTPUT Bound %1% OK | 1 | #OUTPUT %1%: BIND Failed with Warnings | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS ! ] |ELSE| #OUTPUT %1% is up to date, no re-build required ] #UNFRAME ?section BBUNZIPLIB MACRO #FRAME #push bin item ntime itime libtime #SET ntime 0 #OUTPUT Building [lib] #APPEND bin CLEAR add^list CRC32O add^list CRCTABO add^list CRYPTO add^list ENVARGSO add^list EXPLODEO add^list EXTRACTO add^list FILEIOO add^list GLOBALSO add^list INFLATEO add^list LISTO add^list MATCHO add^list PROCESSO add^list TANDEMO add^list TANUNZO add^list TTYIOO add^list UNSHRINO add^list ZIPINFOO #APPEND bin INFO UNRESOLVED * #APPEND bin BUILD [lib] ! , LIST * OFF #SET libtime [#FILEINFO /MODIFICATION/ [lib]] [#IF libtime < ntime |THEN| #OUTPUT [lib] needs re-building BIND /NAME,INV BIN/ [#CASE [tacl^completioncode] | 0 | #OUTPUT Bound [lib] OK | 1 | #OUTPUT [lib]: BIND Failed with Warnings | OTHERWISE | #OUTPUT [lib]: BIND Failed with ERRORS ! ] |ELSE| #OUTPUT [lib] is up to date ] #UNFRAME ?section BBUNZIP MACRO #FRAME #push bin ziptime build #SET build 0 #OUTPUT Building %1% with %2% memory model #APPEND bin CLEAR #APPEND bin ADD * FROM UNZIPO #APPEND bin select search ($system.system.c%2%,[lib]) #APPEND bin select runnable object on #APPEND bin select list * off #APPEND bin set heap 20 pages #APPEND bin set symbols on #APPEND bin set saveabend on #APPEND bin set inspect on #APPEND bin info unresolved * #APPEND bin BUILD %1% ! #SET ziptime [#FILEINFO /MODIFICATION/ %1%] [#IF ziptime < [#FILEINFO /MODIFICATION/ UNZIPO] |THEN| #OUTPUT %1% is older than UNZIPO #SET build -1 ] [#IF ziptime < [#FILEINFO /MODIFICATION/ [lib]] |THEN| #OUTPUT %1% is older than [lib] #SET build -1 ] [#IF build |THEN| #OUTPUT %1% is out of date, re-building BIND /NAME,INV BIN/ [#CASE [tacl^completioncode] | 0 | #OUTPUT Bound %1% OK | 1 | #OUTPUT %1%: BIND Failed with Warnings | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS ! ] |ELSE| #OUTPUT %1% is up to date, no re-build required ] #UNFRAME ?section BBSFXLIB MACRO #FRAME #push bin item ntime itime libtime #SET ntime 0 #OUTPUT Building [lib] #APPEND bin CLEAR add^list CRC32O add^list CRCTABX add^list EXTRACTX add^list FILEIOX add^list GLOBALSX add^list INFLATEX add^list MATCHX add^list PROCESSX add^list TANDEMX add^list TANUNZX add^list TTYIOX #APPEND bin INFO UNRESOLVED * #APPEND bin BUILD [lib] ! , LIST * OFF #SET libtime [#FILEINFO /MODIFICATION/ [lib]] [#IF libtime < ntime |THEN| #OUTPUT [lib] needs re-building BIND /NAME,INV BIN/ [#CASE [tacl^completioncode] | 0 | #OUTPUT Bound [lib] OK | 1 | #OUTPUT [lib]: BIND Failed with Warnings | OTHERWISE | #OUTPUT [lib]: BIND Failed with ERRORS ! ] |ELSE| #OUTPUT [lib] is up to date ] #UNFRAME ?section BBSFX MACRO #FRAME #push bin ziptime build #SET build 0 #OUTPUT Building %1% with %2% memory model #APPEND bin CLEAR #APPEND bin ADD * FROM UNZIPX #APPEND bin select search ($system.system.c%2%,[lib]) #APPEND bin select runnable object on #APPEND bin select list * off #APPEND bin set heap 20 pages #APPEND bin set symbols on #APPEND bin set saveabend on #APPEND bin set inspect on #APPEND bin info unresolved * #APPEND bin BUILD %1% ! #SET ziptime [#FILEINFO /MODIFICATION/ %1%] [#IF ziptime < [#FILEINFO /MODIFICATION/ UNZIPX] |THEN| #OUTPUT %1% is older than UNZIPX #SET build -1 ] [#IF ziptime < [#FILEINFO /MODIFICATION/ [lib]] |THEN| #OUTPUT %1% is older than [lib] #SET build -1 ] [#IF build |THEN| #OUTPUT %1% is out of date, re-building BIND /NAME,INV BIN/ [#CASE [tacl^completioncode] | 0 | #OUTPUT Bound %1% OK | 1 | #OUTPUT %1%: BIND Failed with Warnings | OTHERWISE | #OUTPUT %1%: BIND Failed with ERRORS ! ] |ELSE| #OUTPUT %1% is up to date, no re-build required ] #UNFRAME ?section accel^file MACRO #FRAME #PUSH buf [#IF [#FILEINFO /MODIFICATION/ %1%] > [#FILEINFO /MODIFICATION/ %2%] |THEN| #OUTPUT %2% is older than %1% #OUTPUT Accelerating %1% to %2% AXCEL /OUTV buf/ %1%,%2% #OUTPUTV buf [#CASE [tacl^completioncode] | 0 | #OUTPUT Accelerated %2% OK | 1 | #OUTPUT %2%: AXCEL Failed with Warnings | OTHERWISE | #OUTPUT %2%: AXCEL Failed with ERRORS ! ] |ELSE| #OUTPUT %2% is up to date ] #UNFRAME ?section fup^license ROUTINE #FRAME #PUSH #DEFAULTS filename old^user current^user [#IF [#ARGUMENT /VALUE filename/ FILENAME]] #SET old^user [#USERNAME [#PROCESSINFO /PAID/]] #SETV current^user old^user [#LOOP |WHILE| current^user '<>' "SUPER.SUPER" AND NOT [#INPUTEOF] |DO| #OUTPUT Please log on as SUPER.SUPER (CTRL-Y aborts) logon SUPER.SUPER #SET current^user [#USERNAME [#PROCESSINFO /PAID/]] #OUTPUT ] [#IF current^user '=' "SUPER.SUPER" |THEN| #OUTPUT Licensing [filename] $SYSTEM.SYSTEM.FUP LICENSE [filename] ] [#LOOP |WHILE| current^user '<>' old^user AND NOT [#INPUTEOF] |DO| #OUTPUT Please log on as [old^user] (CTRL-Y aborts) logon [old^user] #SET current^user [#USERNAME [#PROCESSINFO /PAID/]] #OUTPUT ] #UNFRAME ?section CODE routine #FRAME #PUSH delta arg #SET /TYPE delta/ DELTA [#LOOP |WHILE| [#COMPUTE [#ARGUMENT /VALUE arg/ NUMBER END] = 1 ] |DO| #APPEND DELTA [arg]I ] #RESULT [#DELTA /COMMANDS DELTA/] #UNFRAME ?section TACL^COMPLETIONCODE routine #RESULT [_completion:completioncode] ?SECTION INCREMENT routine #FRAME #PUSH increment_variable increment_value [#IF [#ARGUMENT /VALUE increment_variable/ VARIABLE]] [#IF [#EMPTYV [increment_variable]]|THEN|#SET [increment_variable] 0] [#IF [#MORE] |THEN| [#IF [#ARGUMENT /VALUE increment_value/ NUMBER]] |ELSE| #SET increment_value 1 ] [#IF [#ARGUMENT END]] #SET [increment_variable] [#COMPUTE [increment_variable] + [increment_value]] #UNFRAME ?section ERROR^IN^FUP^OUTPUT routine #FRAME #PUSH err output last line type #SETMANY err output, 0 0 [#LOOP |WHILE| NOT [#EMPTYV fup^out] |DO| #EXTRACTV fup^out line [#SETMANY type, [#CHARGET line 1 TO 7] .] [#CASE [type] | ERROR | #SETMANY output err, -1 -1 | WARNING | #SET output -1 | OTHERWISE | ] [#IF output |THEN| #OUTPUTV last #OUTPUTV line #SET output 0 #EXTRACTV fup^out line ] #SETV last line ] #RESULT [err] #UNFRAME ?section SECURE^FILE routine #FRAME [#DEF fup^out TEXT |BODY|] [#DEF fup^buf TEXT |BODY|] [#DEF fup^cmd MACRO |BODY| FUP /OUTV fup^out/ %*% #SETV fup^buf fup^out [#IF [error^in^fup^output] |THEN| #OUTPUT Error detected in FUP output, ABORTING !! #OUTPUT .............................................................. #OUTPUTV fup^buf #OUTPUT .............................................................. #RAISE _BREAK ] ] [#DEF display^action MACRO |BODY| [#IF NOT action |THEN| #OUTPUT /HOLD/ Updating [file] ... #SET action -1 #SET count 0 ] #OUTPUT /COLUMN 3/ ... %*% ] [#DEF display^noaction MACRO |BODY| [#IF count |THEN| increment count |ELSE| #OUTPUT #SET count 1 ] [#IF count |THEN| #OUTPUT /COLUMN [count]/ [code 27]A. [#IF count > 75 |THEN| #SET count 0 ] ] ] [#DEF process^file TEXT |BODY| #SET action 0 #SETMANY cur^owner cur^security cur^license cur^progid, & [#FILEINFO /OWNER, SECURITY, LICENSED, PROGID/ [file]] #SET cur^owner [#USERNAME [cur^owner]] [#IF NOT [#EMPTYV owner] |THEN| [#IF owner '<>' cur^owner |THEN| display^action giving to [owner] (was [cur^owner]) fup^cmd GIVE [file], [owner] [#IF cur^progid |THEN| #OUTPUT /COLUMN 3/... WARNING! Loss of PROGID flag #SET cur^progid 0 ] ] ] [#IF NOT [#EMPTYV security] |THEN| [#IF security '<>' cur^security |THEN| display^action securing to [security] (was [cur^security]) fup^cmd SECURE [file], [security] ] ] [#IF license |THEN| [#IF NOT cur^license |THEN| display^action licensed fup^cmd LICENSE [file] ] ] [#IF progid |THEN| [#IF NOT cur^progid |THEN| display^action PROGID flag set fup^cmd SECURE [file],, PROGID ] ] [#IF action |THEN| fup^cmd INFO [file] |ELSE| [#IF tflag |THEN| display^noaction |ELSE| #OUTPUT /HOLD/ Unchanged : [file] [#IF cur^progid |THEN| #OUTPUT /COLUMN 39,HOLD/ P] [#IF cur^license |THEN| #OUTPUT /COLUMN 40,HOLD/ L] #OUTPUTV /COLUMN 43,HOLD/ cur^security #OUTPUTV /COLUMN 50,HOLD/ cur^owner #OUTPUT ] ] ] #PUSH arg template file security owner progid license prev action count tflag #PUSH cur^security cur^owner cur^license cur^progid #SETMANY license progid, 0 0 #SET count 0 #SET tflag 0 [#LOOP |WHILE| [#MORE] |DO| [#CASE [#ARGUMENT /VALUE arg/ FILENAME USER /USERNAME/ USER SECURITY KEYWORD /WORDLIST LICENSE/ KEYWORD /WORDLIST PROGID/ TEMPLATE ] | 1 | #SETV file arg | 2 | #SETV owner arg | 3 | #SET owner [#USERNAME [arg]] | 4 | #SETV security arg | 5 | #SET license -1 | 6 | #SET progid -1 | 7 | #SETV template arg ] ] [#IF [#ARGUMENT END]] [#IF [#EMPTYV template] |THEN| #SETV template file |ELSE| #SET tflag -1 #OUTPUT /HOLD/ Template : [template] [#IF progid |THEN| #OUTPUT /COLUMN 39,HOLD/ P] [#IF license |THEN| #OUTPUT /COLUMN 40,HOLD/ L] [#IF NOT [#EMPTYV security] |THEN| #OUTPUTV /HOLD/ " "[security]""] [#IF NOT [#EMPTYV owner] |THEN| #OUTPUTV /HOLD/ " [owner]"] #OUTPUT ] [#IF [#EMPTYV template] |THEN| #OUTPUT ERROR! No filename specified #RESET FRAMES #RETURN |ELSE| #SET file [#FILENAMES /MAXIMUM 1/ [template]] [#LOOP |WHILE| NOT [#EMPTYV file] |DO| process^file #SETV prev file #SET file [#FILENAMES /MAXIMUM 1, PREVIOUS [prev]/ [template]] ] ] #UNFRAME