(DEFINE-FILE-INFO PACKAGE "IL" READTABLE "INTERLISP" BASE 10) (FILECREATED "12-Jan-88 13:41:30" {QV}<NOTECARDS>1.3LNEXT>PMIPATCH067.;2 23227 changes to%: (VARS PMIPATCH067COMS) previous date%: "14-Dec-87 20:05:55" {QV}<NOTECARDS>1.3KNEXT>PMIPATCH067.;21) (* " Copyright (c) 1987, 1988 by Xerox Corporation. All rights reserved. ") (PRETTYCOMPRINT PMIPATCH067COMS) (RPAQQ PMIPATCH067COMS ((DECLARE%: DONTCOPY (PROPS (PMIPATCH067 MAKEFILE-ENVIRONMENT) (PMIPATCH067 FILETYPE))) (* ;;; "Obsolete in NCLOGGER: NCLOG.FetchLogInfo NCLOG.SetLogInfo") (* ;;; "New in NCLOGGER") (GLOBALVARS NCLOG.ListOfAllEventTypes NCLOG.ListOfEventTypes NCLOG.NumHashArray) (VARS (NCLOG.NumHashArray (HASHARRAY NCLOG.HashArraySize)) (NCLOG.ListOfAllEventTypes '(GetNewCard MakeCard.Begin MakeCard.End EditCard.Begin EditCard.End SaveCard.Begin SaveCard.End QuitCard.Begin QuitCard.End AssignTitle.Begin AssignTitle.End CacheCard UncacheCard DelCard MakeLink DelLink PutMainCardData PutLinks PutTitle PutPropList RecomputeBrowser.Begin RecomputeBrowser.End RelayoutBrowser.Begin RelayoutBrowser.End AddCardType StartLogging)) (NCLOG.ListOfEventTypes NCLOG.ListOfAllEventTypes)) (FNS NCLOG.FetchLogInfoList NCLOG.SetLogInfoList NCLOG.OpenLoggingStream NCLOG.SetEventTypesToLog NCLOG.UIDFromNum) (ADVISE NC.GetNewCard) (* ;;; "Changed in NCLOGGER") (RECORDS NCLogInfo) (FNS NCLOG.StartLogging NCLOG.SuspendLogging NCLOG.StopLogging NCLOG.LoggingOnP NCLOG.LogEvent NCLOG.NumFromUID) (ADVISE NC.DeleteNoteCardInternal NC.DelToLink))) (DECLARE%: DONTCOPY (PUTPROPS PMIPATCH067 MAKEFILE-ENVIRONMENT (:PACKAGE "IL" :READTABLE "INTERLISP" :BASE 10)) (PUTPROPS PMIPATCH067 FILETYPE :TCOMPL) ) (* ;;; "Obsolete in NCLOGGER: NCLOG.FetchLogInfo NCLOG.SetLogInfo") (* ;;; "New in NCLOGGER") (DECLARE%: DOEVAL@COMPILE DONTCOPY (GLOBALVARS NCLOG.ListOfAllEventTypes NCLOG.ListOfEventTypes NCLOG.NumHashArray) ) (RPAQ NCLOG.NumHashArray (HASHARRAY NCLOG.HashArraySize)) (RPAQQ NCLOG.ListOfAllEventTypes (GetNewCard MakeCard.Begin MakeCard.End EditCard.Begin EditCard.End SaveCard.Begin SaveCard.End QuitCard.Begin QuitCard.End AssignTitle.Begin AssignTitle.End CacheCard UncacheCard DelCard MakeLink DelLink PutMainCardData PutLinks PutTitle PutPropList RecomputeBrowser.Begin RecomputeBrowser.End RelayoutBrowser.Begin RelayoutBrowser.End AddCardType StartLogging)) (RPAQ NCLOG.ListOfEventTypes NCLOG.ListOfAllEventTypes) (DEFINEQ (NCLOG.FetchLogInfoList [LAMBDA (NoteFile) (* pmi%: "23-Oct-87 15:03") (* * Fetch the NCLogInfo records from the NoteFile if any. If NoteFile is nil, then return the global one.) (* * pmi 10/23/87%: Was NCLOG.FetchLogInfo, changed to handle a list of NCLogInfos on each notefile.) (DECLARE (GLOBALVARS NCLOG.GlobalLogInfo)) (COND ((type? NoteFile NoteFile) (NCP.NoteFileProp NoteFile 'NCLogInfoList)) ((NULL NoteFile) NCLOG.GlobalLogInfo) (T NIL]) (NCLOG.SetLogInfoList [LAMBDA (NoteFile NewLogInfoRecord) (* pmi%: "28-Oct-87 16:06") (* * Add this NewLogInfoRecord to the list of the NCLogInfo records for NoteFile. If NoteFile is nil, then replace the global one.) (* * pmi 10/28/87%: Was NCLOG.SetLogInfo, changed to keep a list of NCLogInfos on a notefile, instead of just one. Also now reset list of NCLogInfos to NIL if NewLogInfoRecord is NIL.) (DECLARE (GLOBALVARS NCLOG.GlobalLogInfo)) (if (type? NoteFile NoteFile) then (if NewLogInfoRecord then (NCP.NoteFileAddProp NoteFile 'NCLogInfoList NewLogInfoRecord) else (NCP.NoteFileProp NoteFile 'NCLogInfoList NIL)) NewLogInfoRecord elseif (NULL NoteFile) then (SETQ NCLOG.GlobalLogInfo NewLogInfoRecord) NewLogInfoRecord else NIL]) (NCLOG.OpenLoggingStream [LAMBDA (NoteFile LoggingFileName LoggingStream NCLogInfo EventTypesToLog) (* pmi%: "28-Oct-87 17:57") (* * Creates a new NCLogInfo record for this notefile and logging filename. Opens a stream to the logging file and sets the appropriate fields of the NCLogInfo record. Returns the NCLogInfo record, if successful.) (* * pmi 10/28/87%: Now takes EventTypesToLog argument which determines which set of event types will be logged.) (if NCLogInfo else (SETQ NCLogInfo (create NCLogInfo)) (NCLOG.SetLogInfoList NoteFile NCLogInfo)) (if (SETQ LoggingStream (OPENSTREAM (OR LoggingStream LoggingFileName) 'BOTH)) then (replace (NCLogInfo LoggingStream) of NCLogInfo with LoggingStream) (replace (NCLogInfo LoggingOnFlg) of NCLogInfo with T) (replace (NCLogInfo LoggingFileName) of NCLogInfo with (FULLNAME LoggingStream)) (replace (NCLogInfo EventTypesToLog) of NCLogInfo with EventTypesToLog) (NCLOG.WriteLogFileHeader LoggingStream NoteFile) NCLogInfo]) (NCLOG.SetEventTypesToLog [LAMBDA (NoteFile NCLogInfo EventTypesToLog) (* pmi%: "28-Oct-87 11:20") (* * pmi 10/28/87%: Created to change the EventTypesToLog field in the NCLogInfo record of NoteFile. If EventTypesToLog is NIL, then change the EventTypesToLog fields of all NCLogInfo records associated with NoteFile. If NoteFile is NIL, change the EventTypesToLog field of the global NCLogInfo record. If EventTypesToLog is NIL, then use NCLOG.ListOfEventTypes.) (DECLARE (GLOBALVARS NCLOG.GlobalLogInfo NCLOG.ListOfEventTypes)) (LET ((NCLogInfoList (NCLOG.FetchLogInfoList NoteFile))) (OR EventTypesToLog (SETQ EventTypesToLog NCLOG.ListOfEventTypes)) (if NoteFile then (if NCLogInfo then (for NCLogInfoRecord in NCLogInfoList when (EQ NCLogInfoRecord NCLogInfo) do (replace (NCLogInfo EventTypesToLog) of NCLogInfo with EventTypesToLog )) else (for NCLogInfoRecord in NCLogInfoList do (replace (NCLogInfo EventTypesToLog) of NCLogInfo with EventTypesToLog ))) else (replace (NCLogInfo EventTypesToLog) of NCLOG.GlobalLogInfo with EventTypesToLog]) (NCLOG.UIDFromNum [LAMBDA (Num) (* pmi%: "23-Nov-87 12:06") (* * Translate an integer into a UID using a global hash array.) (DECLARE (GLOBALVARS NCLOG.NumHashArray)) (GETHASH Num NCLOG.NumHashArray]) ) [XCL:REINSTALL-ADVICE 'NC.GetNewCard :AFTER '((:LAST (NCLOG.LogEvent 'GetNewCard NoteFile (LIST !VALUE Type] (READVISE NC.GetNewCard) (* ;;; "Changed in NCLOGGER") (DECLARE%: EVAL@COMPILE (DATATYPE NCLogInfo (LoggingStream LoggingOnFlg NoticedUIDs EventTypesToLog LoggingFileName)) ) (/DECLAREDATATYPE 'NCLogInfo '(POINTER POINTER POINTER POINTER POINTER) '((NCLogInfo 0 POINTER) (NCLogInfo 2 POINTER) (NCLogInfo 4 POINTER) (NCLogInfo 6 POINTER) (NCLogInfo 8 POINTER)) '10) (DEFINEQ (NCLOG.StartLogging [LAMBDA (NoteFile LoggingFileNameOrNCLogInfo EventTypesToLog) (* pmi%: "29-Oct-87 10:32") (* * Turn on logging for NoteFile. If logging was already on, then do nothing and return NIL. If LoggingFileName is NIL, then use a {nodircore} file.) (* * pmi 10/23/87%: Add current LoggingFileName to NCLogInfo record for this NoteFile) (* * pmi 10/27/87%: Made changes to accommodate multiple NCLogInfo records per notefile. Also changed so that NIL for NoteFile means turn on global logging. Now returns the relevent NCLogInfo record.) (* * pmi 10/28/87%: Now takes EventTypesToLog argument which determines which set of event types will be logged.) (DECLARE (GLOBALVARS NCLOG.ListOfEventTypes)) (LET ((NCLogInfoList (NCLOG.FetchLogInfoList NoteFile)) NCLogInfo LoggingFileName LoggingStream) (* * Sort out LoggingFileNameOrNCLogInfo) (if (type? NCLogInfo LoggingFileNameOrNCLogInfo) then (SETQ NCLogInfo LoggingFileNameOrNCLogInfo) (SETQ LoggingFileName NIL) elseif LoggingFileNameOrNCLogInfo then (SETQ NCLogInfo NIL) (SETQ LoggingFileName (FULLNAME LoggingFileNameOrNCLogInfo 'NEW)) else (SETQ LoggingFileName '{NODIRCORE}NCLOGFILE)) (OR EventTypesToLog (SETQ EventTypesToLog NCLOG.ListOfEventTypes)) (* * Look for LoggingFileNameOrNCLogInfo as either a NCLogInfo record on this notefile or a filename contained in one of the NCLogInfo records.) (if [AND NoteFile NCLogInfoList (OR (FMEMB NCLogInfo NCLogInfoList) (SETQ NCLogInfo (for NCLogInfoRecord in NCLogInfoList thereis (EQUAL LoggingFileName (fetch (NCLogInfo LoggingFileName ) of NCLogInfoRecord ] then (if (fetch (NCLogInfo LoggingOnFlg) of NCLogInfo) then (* * Logging is already on. Bail out.) NIL elseif (AND (SETQ LoggingStream (fetch (NCLogInfo LoggingStream) of NCLogInfo)) (OPENP LoggingStream 'BOTH)) then (* * Logging file exists and is open.) (replace (NCLogInfo LoggingOnFlg) of NCLogInfo with T) NCLogInfo else (* * There's no LoggingStream or it's closed, so make one using LoggingFileName.) (NCLOG.OpenLoggingStream NoteFile LoggingFileName LoggingStream NCLogInfo EventTypesToLog)) else (* * This notefile has no logging happening; start one op.) (NCLOG.OpenLoggingStream NoteFile LoggingFileName NIL NIL EventTypesToLog]) (NCLOG.SuspendLogging [LAMBDA (NoteFile NCLogInfo) (* pmi%: "27-Oct-87 17:43") (* * Temporarily turn off the logging on NoteFile, but don't close LoggingStream.) (* * pmi 10/27/87%: Changed to handle multiple NCLogInfo records per notefile. If no NCLogInfo is specified, suspend its logging. If not, suspend logging on all NCLogInfo records associated with this notefile. Also changed do that a NIL NoteFile means suspend global logging.) (DECLARE (GLOBALVARS NCLOG.GlobalLogInfo)) (LET (NCLogInfoList (NCLOG.FetchLogInfoList NoteFile)) (if NoteFile then (if NCLogInfo then (AND (MEMBER NCLogInfo NCLogInfoList) (replace (NCLogInfo LoggingOnFlg) of NCLogInfo with NIL)) else (for NCLogInfoRecord in NCLogInfoList do (replace (NCLogInfo LoggingOnFlg) of NCLogInfoRecord with NIL))) else (replace (NCLogInfo LoggingOnFlg) of NCLOG.GlobalLogInfo with NIL]) (NCLOG.StopLogging [LAMBDA (NoteFile NCLogInfo WriteLegendFlg) (* pmi%: "28-Oct-87 12:19") (* * Turn off notefile logging. Return the result of closing the LoggingStream. If WriteLegendFlg is non-nil, then write down a legend mapping numbers to UIDs. Write down the location of the start of the legend at the end of the file.) (* * pmi 10/28/87%: Changed to handle multiple NCLogInfo records per notefile. If a NCLogInfo is specified, then stop logging on it. If not, stop logging on all NCLogInfo records associated with this notefile.) (DECLARE (GLOBALVARS NC.OrigReadTable)) (if (NCLOG.LoggingOnP NoteFile NCLogInfo) then (LET (NCLogInfoList LoggingStream) (NCLOG.SuspendLogging NoteFile NCLogInfo) [SETQ NCLogInfoList (MKLIST (OR NCLogInfo (NCLOG.FetchLogInfoList NoteFile] (for NCLogInfoRecord in NCLogInfoList collect (SETQ LoggingStream (fetch (NCLogInfo LoggingStream) of NCLogInfoRecord) ) (if (AND WriteLegendFlg LoggingStream (OPENP LoggingStream)) then (LET ((StartLegendLoc (GETFILEPTR LoggingStream))) (for UID in (fetch (NCLogInfo NoticedUIDs) of NCLogInfoRecord ) do (PRINT (LIST (NCLOG.NumFromUID UID) UID) LoggingStream NC.OrigReadTable)) (PRINT StartLegendLoc LoggingStream NC.OrigReadTable))) (PROG1 (AND LoggingStream (OPENP LoggingStream) (CLOSEF LoggingStream)) (replace (NCLogInfo LoggingStream) of NCLogInfoRecord with NIL) (replace (NCLogInfo NoticedUIDs) of NCLogInfoRecord with NIL]) (NCLOG.LoggingOnP [LAMBDA (NoteFile NCLogInfo) (* pmi%: " 3-Nov-87 11:55") (* * Return non-nil if logging is turned on for NoteFile.) (* * pmi 10/27/87%: Changed to handle multiple NCLogInfo records per notefile. If no NCLogInfo is specified and there is at least one NCLogInfo record on this notefile with a non-NIL LoggingOnFlg, then T is returned. Also, now returns the LoggingOnFlg for NCLOG.GlobalLogInfo if NoteFile is NIL.) (DECLARE (GLOBALVARS NCLOG.GlobalLogInfo)) (LET ((NCLogInfoList (NCLOG.FetchLogInfoList NoteFile))) (if NoteFile then (if NCLogInfo then (AND (MEMBER NCLogInfo NCLogInfoList) (fetch (NCLogInfo LoggingOnFlg) of NCLogInfo)) else (for NCLogInfoRecord in NCLogInfoList thereis (fetch (NCLogInfo LoggingOnFlg ) of NCLogInfoRecord ))) elseif (type? NCLogInfo NCLOG.GlobalLogInfo) then (fetch (NCLogInfo LoggingOnFlg) of NCLOG.GlobalLogInfo) else NIL]) (NCLOG.LogEvent [LAMBDA (EventType NoteFile EventArgs) (* pmi%: "27-Oct-87 18:09") (* * Log an event of type EventType happening to NoteFile with args EventArgs. NoteFile may be NIL if there's no notefile object. Can log either on global logging stream or on Logging stream for given notefile or both.) (* * pmi 10/27/87%: Changed to handle multiple NCLogInfo records for a notefile.) (LET ((EventTime (IDATE)) GlobalLogInfo NoteFileLogInfo LoggingStream) (* Log on global logging stream if turned on.) (if (AND (NCLOG.LoggingOnP NIL) (SETQ GlobalLogInfo (NCLOG.FetchLogInfo NIL)) (SETQ LoggingStream (fetch (NCLogInfo LoggingStream) of GlobalLogInfo)) (OPENP LoggingStream 'OUTPUT)) then (NCLOG.WriteEventToLogStream LoggingStream GlobalLogInfo EventType NoteFile EventTime (MKLIST EventArgs))) (* Log on local logging stream if turned on.) (if (type? NoteFile NoteFile) then (for NoteFileLogInfo in (NCLOG.FetchLogInfoList NoteFile) when (AND (NCLOG.LoggingOnP NoteFile NoteFileLogInfo) (SETQ LoggingStream (fetch (NCLogInfo LoggingStream) of NoteFileLogInfo )) (OPENP LoggingStream 'OUTPUT) (FMEMB EventType (fetch (NCLogInfo EventTypesToLog) of NoteFileLogInfo ))) do (NCLOG.WriteEventToLogStream LoggingStream NoteFileLogInfo EventType NoteFile EventTime (MKLIST EventArgs]) (NCLOG.NumFromUID [LAMBDA (UID) (* pmi%: "14-Dec-87 19:15") (* * Translate the UID into an integer using a global hash array. This is to save space on the logging file.) (* * pmi 11/24/87%: Added NCLOG.NumHashArray for getting UID's back from numbers later.) (DECLARE (GLOBALVARS NCLOG.UIDHashArray NCLOG.NumHashArray NCLOG.UIDCtr)) (if (GETHASH UID NCLOG.UIDHashArray) else (PUTHASH UID (add NCLOG.UIDCtr 1) NCLOG.UIDHashArray) (PUTHASH NCLOG.UIDCtr UID NCLOG.NumHashArray]) ) [XCL:REINSTALL-ADVICE 'NC.DeleteNoteCardInternal :BEFORE '((:LAST (NCLOG.LogEvent 'DelCard (fetch (Card NoteFile) of Card) Card)) (:LAST (NCLOG.LogEvent 'DelCard (fetch (Card NoteFile) of Card) (LIST Card (NC.FetchTitle Card] [XCL:REINSTALL-ADVICE 'NC.DelToLink :BEFORE '((:LAST (NCLOG.LogEvent 'DelLink (fetch (Card NoteFile) of (fetch (Link SourceCard) of Link)) Link)) (:LAST (LET [(NoteFile (fetch (Card NoteFile) of (fetch (Link SourceCard) of Link] (if (type? Link Link) then (NCLOG.LogEvent 'DelLink NoteFile (LIST Link (fetch (Link SourceCard) of Link) (fetch (Link DestinationCard) of Link) (fetch (Link Label) of Link) (fetch (Link AnchorMode) of Link) (fetch (Link DisplayMode) of Link))) else (NCLOG.LogEvent 'DelLink NoteFile Link] (READVISE NC.DeleteNoteCardInternal NC.DelToLink) (PUTPROPS PMIPATCH067 COPYRIGHT ("Xerox Corporation" 1987 1988)) (DECLARE%: DONTCOPY (FILEMAP (NIL (3078 7958 (NCLOG.FetchLogInfoList 3088 . 3722) (NCLOG.SetLogInfoList 3724 . 4730) ( NCLOG.OpenLoggingStream 4732 . 6082) (NCLOG.SetEventTypesToLog 6084 . 7657) (NCLOG.UIDFromNum 7659 . 7956)) (8809 20688 (NCLOG.StartLogging 8819 . 12651) (NCLOG.SuspendLogging 12653 . 13881) ( NCLOG.StopLogging 13883 . 16374) (NCLOG.LoggingOnP 16376 . 17859) (NCLOG.LogEvent 17861 . 20011) ( NCLOG.NumFromUID 20013 . 20686))))) STOP