<> <> <> <> <> <> DIRECTORY Basics USING [Comparison], BasicTime USING [GMT], BTree USING [Entry, EntSize, Key, UpdateType], File USING [FP], FSBackdoor USING [EntryPtr, EntryType, Version], FSFileOps USING [VolumeDesc], FSLock USING [ActiveFile], Rope USING [Text]; FSDir: CEDAR DEFINITIONS = BEGIN VersionMatching: TYPE = {all, bangHOnly, bangLOnly}; EnumerateEntries: PROCEDURE [vDesc: FSFileOps.VolumeDesc, start: Rope.Text _ NIL, versions: VersionMatching _ all, matchProc: UNSAFE PROC [entry: FSBackdoor.EntryPtr] RETURNS [accept, stop: BOOLEAN], acceptProc: PROC RETURNS [stop: BOOLEAN]]; <> AcquireOldFName: PROC [vDesc: FSFileOps.VolumeDesc, nameBody: Rope.Text, wantedVersion: FSBackdoor.Version, wantedTime: BasicTime.GMT] RETURNS [type: FSBackdoor.EntryType, version: FSBackdoor.Version, keep: CARDINAL, fp: File.FP, time: BasicTime.GMT, attachedTo: Rope.Text, a: FSLock.ActiveFile]; <> <> AcquireNextLName: PROC [vDesc: FSFileOps.VolumeDesc, nameBody: Rope.Text, newKeep: CARDINAL _ 0] RETURNS [a: FSLock.ActiveFile, keep: CARDINAL, fp: File.FP]; <> DoKeeps: PROC [vDesc: FSFileOps.VolumeDesc, nameBody: Rope.Text]; <> AcquireOldGName: PROC [vDesc: FSFileOps.VolumeDesc, nameBody: Rope.Text, wantedVersion: FSBackdoor.Version] RETURNS [type: FSBackdoor.EntryType, time: BasicTime.GMT, fp: File.FP, a: FSLock.ActiveFile]; <> AcquireOldOrNewGName: PROC [vDesc: FSFileOps.VolumeDesc, nameBody: Rope.Text, wantedVersion: FSBackdoor.Version] RETURNS [fp: File.FP, a: FSLock.ActiveFile]; <> <<"fp" is File.nullFP and "a.h" is NIL => "wantedVersion" is not in the cache, so must be retrieved; a "name" lock is set and "a.h" must be filled in.>> <<"fp" is valid and "a.h" is NIL => "wantedVersion" is in the cache, so need not be retrieved; a "name" lock is set and "a.h" must be filled in. >> <<"fp" is valid and "a.h" is NOT NIL => "wantedVersion" is in the cache, so need not be retrieved; a "read" lock is set and "a.h" is already filled-in; client should verify that the created time of the file is as expected before finishing opening it. >> <> UpdateLocalEntry: PROCEDURE [vDesc: FSFileOps.VolumeDesc, nameBody: Rope.Text, version: FSBackdoor.Version, keep: CARDINAL, fp: File.FP, update: BTree.UpdateType]; <> UpdateCachedEntry: PROCEDURE [vDesc: FSFileOps.VolumeDesc, nameBody: Rope.Text, version: FSBackdoor.Version, used: BasicTime.GMT, fp: File.FP, update: BTree.UpdateType]; <> UpdateAttachedEntry: PROCEDURE [vDesc: FSFileOps.VolumeDesc, nameBody: Rope.Text, version: FSBackdoor.Version, keep: CARDINAL, created: BasicTime.GMT, attachedTo: Rope.Text, update: BTree.UpdateType]; <> DeleteEntry: PROCEDURE [vDesc: FSFileOps.VolumeDesc, nameBody: Rope.Text, version: FSBackdoor.Version]; <> <> Compare: UNSAFE PROC [key: BTree.Key, entry: BTree.Entry] RETURNS [Basics.Comparison]; <> EntrySize: UNSAFE PROC [entry: BTree.Entry] RETURNS [words: BTree.EntSize]; <> END. <> <> <<>> <<>>