<> <> <> <> <> DIRECTORY BasicTime USING [GMT], BTree USING [Tree], BTreeVM USING [Handle], File USING [FP, Handle, PageCount, PropertyStorage, Volume], FSBackdoor USING [Version], IO USING [STREAM], Rope USING [ROPE, Text]; FSFileOps: CEDAR DEFINITIONS = BEGIN <> VolumeDesc: TYPE = REF VolumeDescObject; VolumeDescObject: TYPE = RECORD[ next: VolumeDesc, -- for linked list vName: Rope.ROPE, -- name of this volume prefix: Rope.ROPE, -- "[]" for use in lock table (NIL for system volume) vol: File.Volume, -- volume id tree: BTree.Tree, -- directory/cache BTree for the volume treeVM: BTreeVM.Handle -- storage object for the BTree ]; GetVolumeDesc: PROCEDURE [vName: Rope.ROPE _ NIL] RETURNS [VolumeDesc]; <> <> RecordUsage: PROCEDURE [fp: File.FP, time: BasicTime.GMT]; <> RegisterVolumeFlusher: PROCEDURE [svDesc: VolumeDesc]; <> OldestLruDate: PROC RETURNS [date: BasicTime.GMT]; <> <> CreateFile: PROCEDURE [vol: File.Volume, pages: INT, VMBackingFile: BOOL _ FALSE] RETURNS [fp: File.FP, h: File.Handle]; <> OpenFile: PROCEDURE [vol: File.Volume, fp: File.FP] RETURNS [File.Handle]; <> LPCreatedTime: PROCEDURE [vol: File.Volume, fp: File.FP] RETURNS [BasicTime.GMT]; <> GetFileInfo: PROCEDURE [h: File.Handle] RETURNS [pages: INT, fp: File.FP]; <> SetFilePages: PROCEDURE [h: File.Handle, pages: INT]; <> DeleteFile: PROCEDURE [h: File.Handle]; <> <> GetProps: PROCEDURE [f: File.Handle] RETURNS [bytes: INT, keep: CARDINAL, created: BasicTime.GMT]; <> GetNameBodyAndVersion: PROCEDURE [f: File.Handle] RETURNS [nameBody: Rope.Text, version: FSBackdoor.Version]; <> InitializePropertyStorage: PROCEDURE [fp: File.FP, propStorage: File.PropertyStorage, nPages: File.PageCount]; <> SetProps: PROCEDURE [f: File.Handle, bytes: INT, keep: CARDINAL, created: BasicTime.GMT, nameBody: Rope.Text, version: FSBackdoor.Version]; <> SetBytesAndCreated: PROCEDURE [f: File.Handle, bytes: INT, created: BasicTime.GMT]; <> SetKeep: PROCEDURE [f: File.Handle, keep: CARDINAL]; <> <> FileStreamMode: TYPE = {oldReadOnly, newAppendOnly}; CreateFileStream: PROCEDURE [file: File.Handle, mode: FileStreamMode] RETURNS [IO.STREAM]; <> Copy: PROCEDURE [from, to: File.Handle] RETURNS [bytes: INT, createdTime: BasicTime.GMT]; <> END. <> <> <> <> <<>>