-- VultureOps.mesa -- Scavanger for Mail Archive files. -- Maurice Herlihy August 7, 1982 DIRECTORY BodyDefs, Rope, Space, VultureDefs; VultureOps: DEFINITIONS IMPORTS Rope, Space, BodyDefs = { -- Public types. Item: TYPE = LONG POINTER TO BodyDefs.ItemHeader; -- Opaque types ItemStream: TYPE = REF ItemStreamRep; ItemStreamRep: TYPE; DirStream: TYPE = REF DirStreamRep; DirStreamRep: TYPE; ROPE: TYPE = Rope.ROPE; EndOfStream: ERROR; BadFormat: ERROR; OpenDirStream: PROC [space: Space.Handle] RETURNS [dirstream: DirStream] -- Signals EndOfStream --; -- Creates a DirStream from given space. EndOfStream => file VERY broken. NextDirectory: PROC [dirSteam: DirStream] RETURNS [directory: VultureDefs.Directory] -- Signals EndOfStream --; <<-- Return next directory in stream.>> CloseDirStream: PROC [dirSteam: DirStream]; -- Mark any unseen directories as deleted. OpenItemStream: PROC [space: Space.Handle] RETURNS [ItemStream]-- Signals EndOfStream --; -- Creates an item stream from given space. NextItem: PROC [stream: ItemStream] RETURNS [item: Item] -- Signals EndOfStream, BadFormat --; <<-- Returns next item in stream. >> FindPostmark: PROC [stream: ItemStream] RETURNS [INT] -- Signals EndOfStream --; <<-- Moves stream ahead to next apparent postmark item.>> NoMoreItems: PROC [stream: ItemStream] RETURNS [BOOL]; <<-- Any items left in the stream?>> ParseItem: PUBLIC PROC [item: Item] RETURNS [ROPE]; <<-- Prints item type.>> Reset: PUBLIC PROC [stream: ItemStream, address: INT] -- signals EndOfStream--; <<-- Sets current stream address to address.>> Current: PUBLIC PROC [stream: ItemStream] RETURNS [INT]; <<-- Current stream address>> }.