<> <> <> DIRECTORY AlpineInternal USING [LogRecordID, LogRecordType, BackupVolume, firstRecordID, lastRecordID, nullLogRecordID], AlpineLog USING [Block], Rope; BackupLog: CEDAR DEFINITIONS ~ BEGIN <> <<>> <> RecordType: TYPE = AlpineInternal.LogRecordType; <> <> RecordID: TYPE = AlpineInternal.LogRecordID; <> <> nullRecordID: RecordID = AlpineInternal.nullLogRecordID; <> <<>> BackupVolume: TYPE = AlpineInternal.BackupVolume; firstRecordID: RecordID = AlpineInternal.firstRecordID; <> lastRecordID: RecordID = AlpineInternal.lastRecordID; <> Block: TYPE = AlpineLog.Block; OpenForNormalOperation: PROC [backupLogName: Rope.ROPE, initialPosition: RecordID] ; <> <<>> Close: PROC []; <> <<>> OpenForRecovery: PROC [backupLogName: Rope.ROPE] RETURNS [firstRecord: RecordID]; <> ReadProcStatus: TYPE = {normal, destinationFull, sourceExhausted}; <> <> ReadProc: TYPE = UNSAFE PROC [thisRecord: RecordID, wordsToSkip: LONG CARDINAL _ 0, to: Block] RETURNS [status: ReadProcStatus, wordsRead: CARDINAL]; Read: ReadProc; <> <> <> <> <> Write: UNSAFE PROC [ continuation: BOOLEAN _ FALSE, recordData: Block, force: BOOL _ FALSE] RETURNS [followingRecord: RecordID]; <> NearlyFull, Full: ERROR; Force: PROC []; <> <> Format: PROC [backupLogName: Rope.ROPE, pages: INT, firstRecordID: RecordID] RETURNS[firstUsableRecordID: RecordID]; <> <<>> RecordIDOfNextWrite: PROC [] RETURNS [RecordID]; <> <> <> <<>> END. CHANGE LOG <<>>