(FILECREATED " 4-Dec-86 11:50:59" {QV}<NOTECARDS>1.3K>NEXT>PMIPATCH003.;3 6739 changes to: (FNS NC.CheckpointNoteFile) (VARS PMIPATCH003COMS) previous date: " 3-Dec-86 17:09:32" {QV}<NOTECARDS>1.3K>NEXT>PMIPATCH003.;1) (* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT PMIPATCH003COMS) (RPAQQ PMIPATCH003COMS ((* * Fixes bug #278: Checkpointing a closed NoteFile no longer causes a break.) (* * Change to NCDATABASE) (FNS NC.CheckpointNoteFile))) (* * Fixes bug #278: Checkpointing a closed NoteFile no longer causes a break.) (* * Change to NCDATABASE) (DEFINEQ (NC.CheckpointNoteFile (LAMBDA (NoteFile QuietFlg Don'tSaveDirtyCardsFlg Don'tCheckOperationInProgressFlg Don'tCheckCardOperationsInProgressFlg InterestedWindow OperationMsg) (* pmi: " 4-Dec-86 11:50") (* * Checkpoint a notefile by call the device specific checkpoint fn.) (* * fgh 5/26/86 First created.) (* * fgh 9/1/86 Updated with with changes made to checkpinting since 5/23/86. Reimplemented changes include: (* * fgh 6/4/86 Added Don'tSaveDirtyCardsFlg to prevent double passes through active cards at close time) (* * fgh 6/13/86 Changed printouts to NF menu. Added check for operations in progress.) (* * fgh 6/25/86 Put in contention lock and NC.ProtectedNoteFileOperation Added Don'tCheckOperationInProgressFlg Don'tCheckCardOperationsInProgressFlg & InterestedWindow args.) (* * rht 7/4/86: Added check for readonly notefile.) (* * rht 7/16/86: Now passes QuietFlg arg down to NC.SaveDirtyCards.)) (* * pmi 12/3/86 Added check for open NoteFile before attempting Checkpoint (Code stolen from NC.CloseNoteFile)) (PROG (ReturnValue) (OR InterestedWindow (SETQ InterestedWindow (WFROMMENU (fetch (NoteFile Menu) of NoteFile)))) (* * Make sure NF is open) (if (NULL (ERSETQ (SETQ ReturnValue (APPLY* (fetch (NoteFile NoteFileOpenPFn) of NoteFile) NoteFile)))) then (SETQ ReturnValue (QUOTE OpenPFailed))) (if (NULL ReturnValue) then (* * NoteFile is not open.) (NC.PrintMsg InterestedWindow T (fetch (NoteFile FullFileName) of NoteFile) " is not an open NoteFile!!!" (CHARACTER 13)) (RETURN NIL) elseif (NOT (type? NoteFile ReturnValue)) then (* * Error return from NoteFileOpenPFn) (if (NULL (ERSETQ (NC.ReportError NIL (CONCAT "OpenP test on " (fetch (NoteFile FullFileName) of NoteFile) "failed because " ReturnValue (CHARACTER 13) "OK to continue Checkpoint. ↑ to abort Checkpoint.")))) then (RETURN ReturnValue))) (SETQ OperationMsg (CONCAT (OR OperationMsg "") "Checkpointing " (fetch (NoteFile FullFileName) of NoteFile) (CHARACTER 13))) (if (NC.CheckForNotReadOnly NoteFile InterestedWindow "Can't checkpoint ") then (if (AND (NULL Don'tCheckOperationInProgressFlg) (PROCESSP (NC.NoteFileProp NoteFile (QUOTE ProcessInProgress)))) then (* * Another operation is in progress on this NF.) (NC.PrintOperationInProgressMsg InterestedWindow (QUOTE Checkpoint% NoteFile) (NC.NoteFileProp NoteFile (QUOTE OperationInProgress))) else (* * Okay checkpoint under a contention lock.) (RETURN (NC.ProtectedNoteFileOperation NoteFile Checkpoint% NoteFile (OR QuietFlg (RESETSAVE NIL (BQUOTE (NC.ClearMsg , InterestedWindow T))) ) (if (OR Don'tCheckCardOperationsInProgressFlg (PROGN (OR QuietFlg (NC.PrintMsg InterestedWindow T OperationMsg "Checking for card operations in progress." (CHARACTER 13))) (NULL (SETQ OpsInProgress (NC.CardOperationsInProgress NoteFile)))) (NC.AskYesOrNo (CONCAT "There are card operations in progress." (CHARACTER 13) "Do you want to terminate them?" (CHARACTER 13)) "-->" (QUOTE Yes) T InterestedWindow)) then (* * If appropriate, msg the user.) (OR QuietFlg (NC.PrintMsg InterestedWindow T "Checkpointing notefile " (fetch (NoteFile FullFileName) of NoteFile) " ..." (CHARACTER 13))) (* * Save the dirty cards on the screen if necessary.) (if (NULL Don'tSaveDirtyCardsFlg) then (NC.SaveDirtyCards NoteFile T InterestedWindow OperationMsg QuietFlg)) (* Put out the new ChkptPtr to the file.) (* * Call the device specific checkpoint fn.) (if (NULL (ERSETQ (SETQ ReturnValue (APPLY* (fetch (NoteFile CheckpointNoteFileFn) of NoteFile) NoteFile InterestedWindow OperationMsg QuietFlg)))) then (SETQ ReturnValue (QUOTE CheckpointFailed))) (* * Process the error returns.) (if (type? NoteFile ReturnValue) then (* * Successful return.) (OR QuietFlg (NC.PrintMsg InterestedWindow T (OR OperationMsg "") " Checkpoint done." (CHARACTER 13))) NoteFile else (* * Error return.) (ERSETQ (NC.ReportError NIL (CONCAT "Checkpoint failed for " (fetch (NoteFile FullFileName) of NoteFile) " because " ReturnValue "."))) ReturnValue))))))))) ) (PUTPROPS PMIPATCH003 COPYRIGHT ("Xerox Corporation" 1986)) (DECLARE: DONTCOPY (FILEMAP (NIL (654 6657 (NC.CheckpointNoteFile 664 . 6655))))) STOP