(FILECREATED " 1-May-86 01:11:13" {QV}<NOTECARDS>1.3K>FGHPATCH026.;1 5958 changes to: (VARS FGHPATCH026COMS) (FNS NC.RobustReadCardPart)) (* Copyright (c) 1986 by Xerox Corporation. All rights reserved.) (PRETTYCOMPRINT FGHPATCH026COMS) (RPAQQ FGHPATCH026COMS ((* * From NCREPAIR Fix to an earlier fix which was causing NC.RobustReadCardPart to bomb with Illegal NIL arg under LISTPUT) (FNS NC.RobustReadCardPart))) (* * From NCREPAIR Fix to an earlier fix which was causing NC.RobustReadCardPart to bomb with Illegal NIL arg under LISTPUT) (DEFINEQ (NC.RobustReadCardPart (LAMBDA (NoteFile ReadSubstancesFlg MessageWin EndPtr) (* fgh: " 1-May-86 01:02") (* * Assume stream is positioned at start of a card part. Try to read one and modify scavenger array according to what we find.) (* * rht 9/17/85: Now returns ID rather than litatom SUCCESS is wins.) (* * rht 12/1/85: Updated to handle new notefile and card object formats.) (* * rht 3/22/86: substance ptrs for bad card types are no longer put on card type's prop list. Now they're stored in an assoc list hung off a WINDOWPROP.) (* * fgh 5/1/86 Fixed bug in previous fix. Code was bombing the first time it tried to put something on a nonexistent assoc list. Put in a COND to create the assoc list if it isn't already created.) (LET ((Stream (fetch (NoteFile Stream) of NoteFile)) IdentifierAndVersionNum IdentifierAtom Date UID Card Title ToLinks FromLinks GlobalLinks PropList Type SubstanceLength CardPartLength CurPtr UnknownCardTypesSubstancePtrs) (OR EndPtr (SETQ EndPtr (GETEOFPTR Stream))) (SETQ CurPtr (GETFILEPTR Stream)) (if (AND (SETQ CardPartLength (NC.ReadPtr Stream 3)) (LEQ (PLUS CurPtr CardPartLength) EndPtr) (SETQ IdentifierAndVersionNum (NC.RobustReadItemIdentifier Stream)) (if (GEQ (CDR IdentifierAndVersionNum) 1) then (SETQ Date (NC.RobustReadDate Stream)) else T) (SETQ UID (NC.RobustReadUID Stream)) (SETQ Card (OR (NC.CardFromUID UID NoteFile) (NC.GetNewCard NoteFile NIL UID)))) then (SETQ Date (CAR Date)) (SETQ IdentifierAtom (CAR IdentifierAndVersionNum)) (if (COND ((EQ IdentifierAtom NC.TitlesIdentifier) (* Hoping to get a healthy title.) (if (AND (SETQ Title (NC.RobustReadString Stream)) (NC.AtEndOfItemP Stream EndPtr)) then (NC.SetScavengerTitleInfo Card (CONS (LIST CurPtr Date Title) ( NC.FetchScavengerTitleInfo Card))))) ((EQ IdentifierAtom NC.PropsIdentifier) (* Hoping to get a healthy prop list.) (if (AND (SETQ PropList (NC.RobustReadList Stream)) (NC.AtEndOfItemP Stream)) then (NC.SetScavengerPropListInfo Card (CONS (LIST CurPtr Date (LENGTH (CAR PropList))) (NC.FetchScavengerPropListInfo Card))))) ((EQ IdentifierAtom NC.LinksIdentifier) (* Hoping to get healthy links. Try to read three lists: ToLinks, FromLinks, and Global links.) (if (AND (SETQ ToLinks (NC.RobustReadLinks Stream NoteFile)) (SETQ FromLinks (NC.RobustReadLinks Stream NoteFile)) (SETQ GlobalLinks (NC.RobustReadLinks Stream NoteFile)) (NC.AtEndOfItemP Stream EndPtr)) then (NC.SetScavengerLinksInfo Card (CONS (LIST CurPtr Date (LIST (LENGTH (CAR ToLinks)) (LENGTH (CAR FromLinks)) (LENGTH (CAR GlobalLinks))) ) (NC.FetchScavengerLinksInfo Card))))) ((EQ IdentifierAtom NC.ItemIdentifier) (* Hoping to get healthy substance.) (if (AND (SETQ Type (CAR (NC.RobustReadAtom Stream))) (NC.RobustReadRegion Stream EndPtr) (SETQ SubstanceLength (NC.CheckForValidSubstance Stream EndPtr Card Type ReadSubstancesFlg)) (NC.AtEndOfItemP Stream)) then (if (NOT (NCP.ValidCardType Type)) then (* Code for this card part type has not been loaded.) (WINDOWADDPROP MessageWin (QUOTE UNKNOWNCARDTYPESLIST) Type) (* Save the pointer to the substance card part on an assoc list) (COND ((SETQ UnknownCardTypesSubstancePtrs (WINDOWPROP MessageWin (QUOTE UNKNOWNCARDTYPESSUBSTANCEPTRS))) (LISTPUT UnknownCardTypesSubstancePtrs Type (CONS CurPtr (LISTGET UnknownCardTypesSubstancePtrs Type)))) (T (WINDOWPROP MessageWin (QUOTE UNKNOWNCARDTYPESSUBSTANCEPTRS) (LIST Type (LIST CurPtr)))) )) (NC.SetScavengerMainDataInfo Card (CONS (LIST CurPtr Date Type (OR SubstanceLength (QUOTE UNKNOWNCARDTYPE))) (NC.FetchScavengerMainDataInfo Card)))))) then Card))))) ) (PUTPROPS FGHPATCH026 COPYRIGHT ("Xerox Corporation" 1986)) (DECLARE: DONTCOPY (FILEMAP (NIL (592 5876 (NC.RobustReadCardPart 602 . 5874))))) STOP