amiga-e/ec33a_src/ec33a_src/extra/tools/fc.e

43 lines
936 B
Plaintext

-> FlushCache.e
MODULE 'exec/ports'
OBJECT cache
port:mp, cookie, modlist, debuginfo, lock:INT, reserved:INT, name[50]:ARRAY
ENDOBJECT
OBJECT mod
next,memlen,stradr,strlen,moduleadr,modulelen,checksum,reserved
ENDOBJECT
PROC main()
DEF c:PTR TO cache, m:PTR TO mod, d, find, last:PTR TO LONG
WriteF('Emodule Cache Flush (c) 1993 $#%!\n\n')
find:=IF arg[] THEN arg ELSE '.m'
IF c:=FindPort('EmoduleCache')
IF c.lock=0
IF c.cookie=$DEADBEEF
m:=c.modlist
last:=c+38 -> dirty!
WHILE m
d:=m.next
IF InStr(m.stradr,find)<>-1
FreeMem(m,m.memlen)
^last:=d
ELSE
last:=m
ENDIF
m:=d
ENDWHILE
WriteF('done.\n')
ELSE
WriteF('Dead cookie!!!\n')
ENDIF
ELSE
WriteF('Cache currently in use!\n')
ENDIF
ELSE
WriteF('No module cache available.\n')
ENDIF
ENDPROC