(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP")
(FILECREATED "22-Jun-88 12:42:00" {QV}<NOTECARDS>1.3LNEXT>PMIPATCH098.;4 5340
changes to%: (FNS NC.PointerIconGetFn NC.ReadPointer NC.PointerIconPutFn
NC.PointerIconDisplayFn NC.PointerIconImageBoxFn)
(VARS PMIPATCH098COMS)
previous date%: "17-Jun-88 18:00:40" {QV}<NOTECARDS>1.3LNEXT>PMIPATCH098.;1)
(* "
Copyright (c) 1988 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT PMIPATCH098COMS)
(RPAQQ PMIPATCH098COMS (
(* ;;; "pmi 6/21/88: This fixes a problem with writing a pointer icon to a file after its destination card has been deleted. The pointer icon put fn now smashes such a pointer into a deleted image object. Also, because the pointer image object get fn has already been written to the file by the time we get a chance to smash it, the object will be read back in as a pointer object. Now the pointer get fn and NC.ReadPointer are smarter about detecting when a deleted image object is really the thing being read.")
(DECLARE%: DONTCOPY (PROPS (PMIPATCH098 MAKEFILE-ENVIRONMENT)
(PMIPATCH098 FILETYPE)))
(* ;; "Changed in NCLINKS")
(FNS NC.PointerIconPutFn NC.PointerIconGetFn NC.ReadPointer)))
(* ;;;
"pmi 6/21/88: This fixes a problem with writing a pointer icon to a file after its destination card has been deleted. The pointer icon put fn now smashes such a pointer into a deleted image object. Also, because the pointer image object get fn has already been written to the file by the time we get a chance to smash it, the object will be read back in as a pointer object. Now the pointer get fn and NC.ReadPointer are smarter about detecting when a deleted image object is really the thing being read."
)
(DECLARE%: DONTCOPY
(PUTPROPS PMIPATCH098 MAKEFILE-ENVIRONMENT (:PACKAGE "INTERLISP" :READTABLE "INTERLISP"))
(PUTPROPS PMIPATCH098 FILETYPE :BCOMPL)
)
(* ;; "Changed in NCLINKS")
(DEFINEQ
(NC.PointerIconPutFn
[LAMBDA (ImageObject Stream) (* ; "Edited 21-Jun-88 09:21 by pmi")
(* ;;
"Writes the Pointer information in the pointer icon specified by ImageObject onto Stream")
(* ;; "pmi 6/21/88: Now checks that pointer has a valid destination card before trying to write it out. If it doesn't, convert it to a deleted imaged obj.")
(LET ((Pointer (NC.FetchLinkFromLinkIcon ImageObject)))
(if (type? NCPointer Pointer)
then
(* ;; "Check for bad Pointer")
(if (NOT (NC.ValidCardP (fetch (NCPointer DestinationCard) of Pointer)))
then
(* ;; "Delete a bad pointer when it is discovered at put time.")
(NC.ReplaceWithDeletedLinkImageObj ImageObject)
(APPLY* (IMAGEOBJPROP ImageObject 'PUTFN)
ImageObject Stream)
else (NC.WritePointer Pointer Stream])
(NC.PointerIconGetFn
[LAMBDA (Stream) (* ; "Edited 22-Jun-88 12:37 by pmi")
(* ;; "Reads the pointer information from Stream and returns a pointer icon image object.")
(* ;; "pmi 6/22/88: Now checks that NC.ReadPointer returns a valid NCPointer object before calling NC.MakePointerIcon. If not, returns NC.DeletedLinkImageObject")
(DECLARE (GLOBALVARS NC.DeletedLinkImageObject))
(LET ((Pointer (NC.ReadPointer Stream)))
(if (type? NCPointer Pointer)
then (NC.MakePointerIcon Pointer)
else NC.DeletedLinkImageObject])
(NC.ReadPointer
[LAMBDA (Stream) (* ; "Edited 22-Jun-88 12:11 by pmi")
(* ;; "Read a single Pointer DATAYPE instance from Stream")
(* ;; "pmi 6/22/88: Now checks for a 1 as the first character in the stream, signifying a Deleted link image obj.")
(DECLARE (GLOBALVARS NC.OrigReadTable NC.DeletedLinkImageObject))
(LET ((FirstChar (NC.ReadPtr Stream 1)))
(COND
((EQ FirstChar 0)
(* ;; "The link info for a version 0 style pointer.")
(PROG1 (create NCPointer
DestinationCard ← (NC.CardOrCardHolderFromUID (NC.ReadUID Stream)
(NC.ReadUID Stream))
Label ← (READ Stream NC.OrigReadTable)
DisplayMode ← (READ Stream NC.OrigReadTable))
(* ;;; "Get that damn CR")
(BIN Stream)))
((EQ FirstChar 1)
NC.DeletedLinkImageObject)
((EQ FirstChar 13)
(* ;;; "KLUDGE to account for fact that some versions of WRITE.IMAGEOBJ put a CR before beginning the actual stuff.")
(NC.ReadPointer Stream])
)
(PUTPROPS PMIPATCH098 COPYRIGHT ("Xerox Corporation" 1988))
(DECLARE%: DONTCOPY
(FILEMAP (NIL (2146 5257 (NC.PointerIconPutFn 2156 . 3282) (NC.PointerIconGetFn 3284 . 3974) (
NC.ReadPointer 3976 . 5255)))))
STOP