begin
option "-nocheck-nodiag"
include "inc:util.imp"
include "inc:fs.imp"
include "inc:fsutil.imp"
ownstring (255)s="", outfile="",eventmess=""
string (80) array Files (1 : 110)
integer Number of Files, old
string (255) File, File 1, defext
integer I, cc, lc, filelen, sym, hpos=1
integer File Number = 0, Wild Lines = 0, Wild Chars = 0
routine Do one File (string (255) File)
record (finfof) r
integer limit,integer i,j, p
string (255) s, dir, f, ext
byteinteger b0, b1
on event 3,9 start ; -> filetoobig; finish
if exists(file) start
ext = "" unless file -> s.(".").ext
i = 0 while ext -> s.(".").ext
to upper(ext)
filelen = filesize(file)
if filelen > 0 start
if ext = "MOB" start
openinput(2, file); selectinput(2)
readsymbol(b0); readsymbol(b1)
if b0 = 16_fe and old = 0 and (b1 = 1 or b1 = 2) start
!New format object module - various flavours
printstring(file); spaces(15-length(file))
printstring(" Nimped")
printstring(" (1)") if b1 = 1; newline
elseif b0 = 16_fe and b1 = 0
printstring(file); spaces(15-length(file))
printstring(" Old"); newline
elseif b0 = 16_fe and b1 = 16_cc
printstring(file); spaces(15-length(file))
printstring(" Old C"); newline
elseif old = 0
printstring(file); spaces(15-length(file))
printstring(" Neither"); newline
finish
close input
finish
finish
finish
return
file too big:
printstring(" File too big to analyse"); newline
end
routine Do Wild Files (string (80) Wild File)
string (127) Line, Directory, Temp
integer Flag = 0, Index
on 3,9 start
if Flag = 0 start
Event_Message = "Rainer stole event_message again" if Event_Message = ""
Print String ("Analyse : ".Event_Message)
New Line
return
finish
-> End Load
finish
Directory = ""
if Wild File -> Directory .(":"). Wild File start ; finish
Directory = Directory . ":" if Directory # ""
Open Input (3, Directory."Directory")
Select Input (3)
Flag = 1
Number of Files = 0
cycle
Read Line (Line)
if Matches (Line, Wild File) start
Number of Files = Number of Files + 1
Temp = Directory.Line
Files (Number of Files) = Temp
finish
repeat
End Load:
Close Input
Select Input (0)
Index = 1
while Index <= Number of Files cycle
Do One File (Files (Index))
Index = Index + 1
repeat
end
on event 15 start ; -> abend; finish
file = ""; old = 0; outfile = ""
define param("DIR", file, pam major)
define param("OUT", outfile, 0)
define boolean params("OLDonly", old, 0)
process parameters(cli param)
open output(1, outfile) and selectoutput(1) if outfile # ""
Do Wild files(file.":*.mob")
abend:
New Line
endofprogram