pull more newer library lispusers internal(/library) files from envos (#813)
This commit is contained in:
57
internal/COPRFIX
Normal file
57
internal/COPRFIX
Normal file
@@ -0,0 +1,57 @@
|
||||
(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP")
|
||||
(FILECREATED "12-Jun-90 18:10:37" |{DSK}<usr>local>lde>lispcore>internal>COPRFIX.;1| 1909
|
||||
|
||||
|changes| |to:| (FNS FIX-FILE)
|
||||
|
||||
|previous| |date:| "11-Jun-90 13:13:14" |{DSK}<users>sybalsky>COPRFIX.;3|)
|
||||
|
||||
|
||||
; Copyright (c) 1990 by John Sybalsky. All rights reserved.
|
||||
|
||||
(PRETTYCOMPRINT COPRFIXCOMS)
|
||||
|
||||
(RPAQQ COPRFIXCOMS ((FNS FIX-COPYRIGHT FIX-FILE-COPYRIGHT FIX-FILE QUALIFY-FIELDS)))
|
||||
(DEFINEQ
|
||||
|
||||
(FIX-COPYRIGHT
|
||||
(LAMBDA (FILENAME)
|
||||
(LET ((CR (GETPROP FILENAME 'COPYRIGHT)))
|
||||
(COND
|
||||
(CR (RPLACA CR "Venue & Xerox Corporation"))
|
||||
(T (PUTPROP FILENAME 'COPYRIGHT (LIST "Venue" 1990)))))))
|
||||
|
||||
(FIX-FILE-COPYRIGHT
|
||||
(LAMBDA (FILE)
|
||||
(LOADFROM FILE NIL 'PROP)
|
||||
(FIX-COPYRIGHT FILE)
|
||||
(MARKASCHANGED FILE 'FILES)
|
||||
(APPLY* 'CLEANUP FILE)))
|
||||
|
||||
(FIX-FILE
|
||||
(LAMBDA (FILE RECORD-NAMES) (* \; "Edited 11-Jun-90 17:49 by mitani")
|
||||
|
||||
(* |;;| "Perform cleanup tasks on FILE.")
|
||||
|
||||
(LOAD FILE 'PROP)
|
||||
(LOADCOMP FILE 'PROP)
|
||||
(FIX-COPYRIGHT FILE)
|
||||
(AND (FILEFNSLST FILE)
|
||||
(|for| RECNAME |in| RECORD-NAMES |do| (QUALIFY-FIELDS RECNAME FILE)))
|
||||
(MARKASCHANGED FILE 'FILES)
|
||||
(APPLY* 'CLEANUP FILE)))
|
||||
|
||||
(QUALIFY-FIELDS
|
||||
(LAMBDA (RECNAME FILE) (* \; "Edited 28-Sep-87 14:41 by bvm:")
|
||||
(APPLY* 'EDITFNS FILE `(LPQ F ((*ANY* FETCH |fetch| REPLACE |replace| FFETCH |ffetch| FREPLACE
|
||||
|freplace| /REPLACE |/replace|)
|
||||
(*ANY* ,@(APPEND (RECORDFIELDNAMES RECNAME)))
|
||||
--)
|
||||
2
|
||||
(MBD ,RECNAME)
|
||||
0 P))))
|
||||
)
|
||||
(PUTPROPS COPRFIX COPYRIGHT ("John Sybalsky" 1990))
|
||||
(DECLARE\: DONTCOPY
|
||||
(FILEMAP (NIL (460 1834 (FIX-COPYRIGHT 470 . 697) (FIX-FILE-COPYRIGHT 699 . 859) (FIX-FILE 861 . 1291)
|
||||
(QUALIFY-FIELDS 1293 . 1832)))))
|
||||
STOP
|
||||
59
internal/envos/AR-11348-PATCH
Normal file
59
internal/envos/AR-11348-PATCH
Normal file
@@ -0,0 +1,59 @@
|
||||
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
|
||||
(FILECREATED "22-Mar-91 18:37:25" {DSK}<home>crea>mitani>medley>ar>fuji>AR-11348-PATCH.;3 12223
|
||||
|
||||
changes to%: (FNS \UFSDirectoryNameP \UFSGetPrintFileType \UFS.NEXTFILEFN \UFS.FULLNAME \UFSParseNameString)
|
||||
(VARS AR-11348-PATCHCOMS))
|
||||
|
||||
|
||||
(* ; "
|
||||
Copyright (c) 1991 by Fuji Xerox Co., Ltd. All rights reserved.
|
||||
")
|
||||
|
||||
(PRETTYCOMPRINT AR-11348-PATCHCOMS)
|
||||
|
||||
(RPAQQ AR-11348-PATCHCOMS ((FNS \UFS.REMOVE.HOST.FIELD \UFSDirectoryNameP \UFSGenerateFiles \UFSGetFileInfo \UFSSetFileInfo \UFSGetPrintFileType \UFS.NEXTFILEFN \UFS.FULLNAME \UFSParseNameString)))
|
||||
(DEFINEQ
|
||||
|
||||
(\UFS.REMOVE.HOST.FIELD
|
||||
(LAMBDA (FILE DEV) (* ; "Edited 20-Mar-91 16:52 by nm") (* ;; "Accepts a full file representation, and returns the file representaion as a string in which HOST field is removed.") (LET* ((PARSE-LIST (\UFSParseNameString FILE)) (RELATIVEDIRECTORY (MEMB (QUOTE RELATIVEDIRECTORY) PARSE-LIST)) (DIRECTORY (LISTGET PARSE-LIST (QUOTE DIRECTORY))) PACKED-NAME VERSION) (if (DSKP DEV) then (* ;; " Check if FILE contains the valid version field or not so that C code can assume that all file names are valid.") (AND (SETQ VERSION (LISTGET PARSE-LIST (QUOTE VERSION))) (if (STREQUAL VERSION "") then (* ;; "Newest version is specifed. Just removes it.") (LISTPUT PARSE-LIST (QUOTE VERSION) NIL) else (OR (FIXP (MKATOM VERSION)) (CL:ERROR (QUOTE XCL:INVALID-PATHNAME) :PATHNAME FILE))))) (if RELATIVEDIRECTORY then (RPLACA (CDR RELATIVEDIRECTORY) (\UFS.HANDLE.RELATIVEDIRECTORY (CADR RELATIVEDIRECTORY) DEV)) elseif (NOT DIRECTORY) then (LISTPUT PARSE-LIST (QUOTE DIRECTORY) (\UFS.DEFAULT.DIR DEV))) (LISTPUT PARSE-LIST (QUOTE HOST) NIL) (SETQ PACKED-NAME (PACKFILENAME.STRING PARSE-LIST)) (if (STREQUAL (LISTGET PARSE-LIST (QUOTE DIRECTORY)) "<") then (if (LISTGET PARSE-LIST (QUOTE NAME)) then (SUBSTRING PACKED-NAME 2) else "<") else (if (EQ (NTHCHARCODE PACKED-NAME 1) (CHARCODE <)) then (SUBSTRING PACKED-NAME 2) else PACKED-NAME))))
|
||||
)
|
||||
|
||||
(\UFSDirectoryNameP
|
||||
(LAMBDA (DIRSPEC DEV) (* ; "Edited 22-Mar-91 18:22 by nm") (* ;;; " DIRECTORYNAMEP FDEV method. Performs a recognition as well and returns the %"true%" name if it exists.") (LET* ((PARSED-LIST (\UFSParseNameString DIRSPEC (QUOTE RETURN))) (DIRECTORY (OR (LISTGET PARSED-LIST (QUOTE DIRECTORY)) (\UFS.HANDLE.RELATIVEDIRECTORY (LISTGET PARSED-LIST (QUOTE RELATIVEDIRECTORY)) DEV) (\UFS.DEFAULT.DIR DEV))) NAMEAREA LEN) (* ;; " HOST field of DIRSPEC has been defaulted by the generic file system code. Thus we don't have to worry about the subdirectory case.") (SETQ NAMEAREA (ALLOCSTRING MAX-PATHNAME-LEN)) (* ; "NAMEAREA will be modified by C code and hold the %"true%" name of DIRECTORY if DIRECTORY is recognized as a valid directory name.") (SETQ LEN (\UFS.DIRECTORY.NAME DIRECTORY NAMEAREA DEV)) (COND ((FIXP LEN) (* ; "LEN holds the length of the %"true%" name of DIRECTORY.") (\UFS.FULLNAME (SUBSTRING NAMEAREA 1 LEN) DEV NIL)) (T NIL))))
|
||||
)
|
||||
|
||||
(\UFSGenerateFiles
|
||||
(LAMBDA (FDEV PATTERN DESIREDPROPS OPTIONS) (* ; "Edited 20-Mar-91 17:08 by nm") (* ;;; "Returns a file-generator object that will generate exactly those files in the sys-dir of FDEV whose names match PATTERN.") (WITH.MONITOR (\UFSGetMonitor FDEV) (PROG* ((PARSED (\UFSParseNameString PATTERN)) (DIRECTORY (OR (LISTGET PARSED (QUOTE DIRECTORY)) (\UFS.HANDLE.RELATIVEDIRECTORY (LISTGET PARSED (QUOTE RELATIVEDIRECTORY)) FDEV) (\UFS.DEFAULT.DIR FDEV))) (NAMEAREA (ALLOCSTRING MAX-PATHNAME-LEN)) FILTER LEN) (if (STREQUAL DIRECTORY "/") then (SETQ DIRECTORY "<")) (SETQ FILTER (if (STREQUAL DIRECTORY "<") then (CONCAT "{" (LISTGET PARSED (QUOTE HOST)) "}" "<" (PACKFILENAME.STRING (QUOTE NAME) (OR (LISTGET PARSED (QUOTE NAME)) "*") (QUOTE EXTENSION) (OR (LISTGET PARSED (QUOTE EXTENSION)) "*") (QUOTE VERSION) (OR (LISTGET PARSED (QUOTE VERSION)) "*"))) else (PACKFILENAME.STRING (QUOTE DIRECTORY) DIRECTORY (QUOTE HOST) (LISTGET PARSED (QUOTE HOST)) (QUOTE NAME) (OR (LISTGET PARSED (QUOTE NAME)) "*") (QUOTE EXTENSION) (OR (LISTGET PARSED (QUOTE EXTENSION)) "*") (QUOTE VERSION) (OR (LISTGET PARSED (QUOTE VERSION)) "*")))) (SETQ LEN (\UFS.DIRECTORY.NAME DIRECTORY NAMEAREA FDEV)) (if (NOT (FIXP LEN)) then (* ; "No such directory. We go thru this recognition step so that \UFSFindFile gives us name in the correct case") (PRINTOUT PROMPTWINDOW T "Can't enumerate " PATTERN " because no such directory") (RETURN (\NULLFILEGENERATOR))) (SETQ DIRECTORY (SUBSTRING NAMEAREA 1 LEN)) (* ;; "The information about enumerated files are cached in the emulator. We receive the ID and the total number of enumerated files. The ID is used to identify the object corresponding to the enumerated file.") (LET ((ID (CREATECELL \FIXP)) (ERRNO (CREATECELL \FIXP)) (PROPP (\UFS.VALID.PROPP DESIREDPROPS)) TOTALNUM) (SETQ TOTALNUM (\UFSReadDir-C FILTER PROPP ID ERRNO)) (if (< TOTALNUM 0) then (OR (\UFSError DIRECTORY ERRNO FDEV) (RETURN (\NULLFILEGENERATOR))) else (if (ZEROP TOTALNUM) then (RETURN (\NULLFILEGENERATOR)) else (AND (OR (AND (NOT (LISTP OPTIONS)) (EQ OPTIONS (QUOTE RESETLST))) (FMEMB (QUOTE RESETLST) OPTIONS)) (RESETSAVE NIL (QUOTE (AND RESETSTATE (\UFSFinishFileInfo-C ID))))) (RETURN (create FILEGENOBJ NEXTFILEFN _ (FUNCTION \UFS.NEXTFILEFN) FILEINFOFN _ (FUNCTION \UFS.FILEINFOFN) GENFILESTATE _ (\UFS.REGISTER.GFS (create UFSGENFILESTATE FINFOID _ ID FILEID _ 0 TOTALNUM _ TOTALNUM DIRECTORY _ DIRECTORY DEV _ FDEV PROPP _ PROPP NAME _ (ALLOCSTRING MAX-PATHNAME-LEN) AUTHOR _ (AND PROPP (ALLOCSTRING MAX-UNAME-LEN))))))))))))
|
||||
)
|
||||
|
||||
(\UFSGetFileInfo
|
||||
(LAMBDA (STREAM ATTRIBUTE DEVICE) (* ; "Edited 20-Mar-91 20:17 by nm") (* ;;; "Get the value of the attribute for a file.") (* ;;; "Allocate buffer to store the value.") (* ;;; "If attribute is AUTHOR, the type of the buffer is STRING.") (* ;;; "Otherwise the type of the buffer is FIXP.") (WITH.MONITOR (\UFSGetMonitor DEVICE) (LET ((FILENAME (if (type? STREAM STREAM) then (fetch (UFSSTREAM UNIXNAME) of STREAM) else (\UFS.ADD.HOST.FIELD (\UFS.RECOGNIZE.FILE STREAM (QUOTE OLD) DEVICE) DEVICE))) (ERRNO (CREATECELL \FIXP)) BUFFER NAMESIZE) (if FILENAME then (SELECTQ ATTRIBUTE (LENGTH (SETQ BUFFER (CREATECELL \FIXP)) (if (\UFSGetFileInfo-C FILENAME ATTR-LENGTH BUFFER ERRNO) then BUFFER else (\UFSError FILENAME ERRNO DEVICE))) (SIZE (SETQ BUFFER (CREATECELL \FIXP)) (if (\UFSGetFileInfo-C FILENAME ATTR-LENGTH BUFFER ERRNO) then (FOLDHI BUFFER BYTESPERPAGE) else (\UFSError FILENAME ERRNO DEVICE))) (TYPE (\UFSGetFileType FILENAME)) ((CREATIONDATE WRITEDATE) (SETQ BUFFER (CREATECELL \FIXP)) (if (\UFSGetFileInfo-C FILENAME ATTR-WDATE BUFFER ERRNO) then (GDATE BUFFER) else (\UFSError FILENAME ERRNO DEVICE))) (READDATE (SETQ BUFFER (CREATECELL \FIXP)) (if (\UFSGetFileInfo-C FILENAME ATTR-RDATE BUFFER ERRNO) then (GDATE BUFFER) else (\UFSError FILENAME ERRNO DEVICE))) ((ICREATIONDATE IWRITEDATE) (SETQ BUFFER (CREATECELL \FIXP)) (if (\UFSGetFileInfo-C FILENAME ATTR-WDATE BUFFER ERRNO) then BUFFER else (\UFSError FILENAME ERRNO DEVICE))) (IREADDATE (SETQ BUFFER (CREATECELL \FIXP)) (if (\UFSGetFileInfo-C FILENAME ATTR-RDATE BUFFER ERRNO) then BUFFER else (\UFSError FILENAME ERRNO DEVICE))) (AUTHOR (SETQ BUFFER (ALLOCSTRING MAX-UNAME-LEN)) (if (SETQ NAMESIZE (\UFSGetFileInfo-C FILENAME ATTR-AUTHOR BUFFER ERRNO)) then (CL:SUBSEQ BUFFER 0 NAMESIZE) else (\UFSError FILENAME ERRNO DEVICE))) (PROTECTION (SETQ BUFFER (CREATECELL \FIXP)) (if (\UFSGetFileInfo-C FILENAME ATTR-PROTECTION BUFFER ERRNO) then BUFFER else (\UFSError FILENAME ERRNO DEVICE))) (ALL (SETQ BUFFER (\UFS.CREATE.PROPS)) (if (SETQ NAMESIZE (\UFSGetFileInfo-C FILENAME ATTR-ALL BUFFER ERRNO)) then (LET ((ALIST (ASSOC (QUOTE AUTHOR) BUFFER))) (* ; "Copy string out of buffer") (RPLACD ALIST (CL:SUBSEQ (CDR ALIST) 0 NAMESIZE)) BUFFER) else (\UFSError FILENAME ERRNO DEVICE))) NIL)))))
|
||||
)
|
||||
|
||||
(\UFSSetFileInfo
|
||||
(LAMBDA (STREAM ATTRIBUTE VALUE DEVICE) (* ; "Edited 20-Mar-91 20:17 by nm") (* ;;; "Get the VALUE of the ATTRIBUTE for a file.") (* ;;; "Allocate buffer to store the value.") (* ;;; "If attribute is AUTOR, the type of the buffer is STRING.") (* ;;; " Otherwise the type of the buffer is FIXP.") (WITH.MONITOR (\UFSGetMonitor DEVICE) (LET ((FILENAME (if (type? STREAM STREAM) then (fetch (UFSSTREAM UNIXNAME) of STREAM) else (\UFS.ADD.HOST.FIELD (\UFS.RECOGNIZE.FILE STREAM (QUOTE OLD) DEVICE) DEVICE))) (ERRNO (CREATECELL \FIXP)) BUFFER NAMESIZE PATHNAME) (if FILENAME then (SELECTQ ATTRIBUTE (TYPE (\UFSSetFileType FILENAME VALUE)) ((CREATIONDATE WRITEDATE) (if (AND (STRINGP VALUE) (SETQ VALUE (IDATE VALUE))) then (OR (\UFSSetFileInfo-C FILENAME ATTR-WDATE VALUE ERRNO) (\UFSError FILENAME ERRNO DEVICE)) else (ERROR "Invalid argument" VALUE))) ((ICREATIONDATE IWRITEDATE) (if (FIXP VALUE) then (OR (\UFSSetFileInfo-C FILENAME ATTR-WDATE VALUE ERRNO) (\UFSError FILENAME ERRNO DEVICE)) else (ERROR "Invalid argument" VALUE))) (PROTECTION (if (FIXP VALUE) then (OR (\UFSSetFileInfo-C FILENAME ATTR-PROTECTION VALUE ERRNO) (\UFSError FILENAME ERRNO DEVICE)) else (ERROR "Invalid argument" VALUE))) NIL)))))
|
||||
)
|
||||
|
||||
(\UFSGetPrintFileType
|
||||
(LAMBDA (FILENAME) (* ; "Edited 22-Mar-91 18:30 by nm") (COND ((OR (NOT (STREAMP FILENAME)) (SETQ FILENAME (fetch (STREAM FULLFILENAME) of FILENAME))) (LET ((TYPE (UNPACKFILENAME.STRING FILENAME (QUOTE EXTENSION)))) (SETQ TYPE (COND ((AND (EQ (NCHARS TYPE) 0) (CDR (CL:ASSOC NIL DEFAULTFILETYPELIST)))) ((CDR (CL:ASSOC TYPE DEFAULTFILETYPELIST :TEST (QUOTE STRING-EQUAL)))) (T (\UFSGetFileTypeConfirm FILENAME)))) (SELECTQ TYPE ((TEXT BINARY) TYPE) (CL:ERROR "Invalid File Type ~A for ~A" TYPE FILENAME))))))
|
||||
)
|
||||
|
||||
(\UFS.NEXTFILEFN
|
||||
(LAMBDA (GENFILESTATE NAMEONLY) (* ; "Edited 22-Mar-91 18:29 by nm") (LET* ((FINFOID (fetch (UFSGENFILESTATE FINFOID) of GENFILESTATE)) (FILEID (fetch (UFSGENFILESTATE FILEID) of GENFILESTATE)) (ERRNO (LOCF (fetch (UFSGENFILESTATE ERRONO) of GENFILESTATE))) FILENAME NAMELEN NEWNAME) (AND (> FINFOID -1) (< FILEID (fetch (UFSGENFILESTATE TOTALNUM) of GENFILESTATE)) (CL:UNWIND-PROTECT (if (> (SETQ NAMELEN (\UFSNextFile-C GENFILESTATE)) 0) then (replace (UFSGENFILESTATE THISFILE) of GENFILESTATE with (SETQ FILENAME (\UFS.FULLNAME (SETQ NEWNAME (CL:SUBSEQ (fetch (UFSGENFILESTATE NAME) of GENFILESTATE) 0 NAMELEN)) (fetch (UFSGENFILESTATE DEV) of GENFILESTATE) NIL (fetch (UFSGENFILESTATE DIRECTORY) of GENFILESTATE)))) (if (= (add FILEID 1) (fetch (UFSGENFILESTATE TOTALNUM) of GENFILESTATE)) then (* ; "Generator exhausted. ") (\UFS.UNREGISTER.GFS GENFILESTATE T) else (replace (UFSGENFILESTATE FILEID) of GENFILESTATE with FILEID)) (if NAMEONLY then NEWNAME else FILENAME)) (AND RESETSTATE (\UFS.UNREGISTER.GFS GENFILESTATE T))))))
|
||||
)
|
||||
|
||||
(\UFS.FULLNAME
|
||||
(LAMBDA (NAME DEV ATOMP DIRECTORY) (DECLARE (GLOBALVARS *DSK-HOST-NAME* *UFS-HOST-NAME*)) (* ; "Edited 22-Mar-91 18:35 by nm") (* ;; "NAME is a name string returned from UNIX. We turn it into a Lisp %"full file name%". This function is redefinable by code that hacks ufs names.") (if NAME then (* ; "Pass NIL thru transparently") (if (DSKP DEV) then (SETQ NAME (CL:CONCATENATE (QUOTE STRING) *DSK-HOST-NAME* DIRECTORY NAME)) (if *DSK-UPPER-CASE-FILE-NAMES* then (* ;; "DSK code uses *DSK-UPPER-CASE-FILE-NAMES* instead of *UPPER-CASE-FILE-NAMES*. I think the capability of case insensitive file recognition in Medley-S {DSK} device is essentially optional and implemented only to keep the compatibility with D-Machines. Actually the case insensitive file recognition is significantly slower than on the correct case (AR 11074). There is no reasonable way to solve this problem because the underlying UNIX file ysystem is case sensitive. Thus, I introduced the new parameter *DSK-UPPER-CASE-FILE-NAMES* with its default value NIL.") (if ATOMP then (MKATOM (U-CASE NAME)) else (U-CASE NAME)) else (if ATOMP then (MKATOM NAME) else NAME)) else (SETQ NAME (CL:CONCATENATE (QUOTE STRING) *UFS-HOST-NAME* DIRECTORY NAME)) (if ATOMP then (MKATOM NAME) else NAME))))
|
||||
)
|
||||
|
||||
(\UFSParseNameString
|
||||
(LAMBDA (FILE DIRFLG) (* ; "Edited 22-Mar-91 18:19 by nm") (* ;; "\UFS.ADJUST.HOST is a hook for NFS module") (\UFS.ADJUST.HOST (UNPACKFILENAME.STRING FILE NIL DIRFLG)))
|
||||
)
|
||||
)
|
||||
(PUTPROPS AR-11348-PATCH COPYRIGHT ("Fuji Xerox Co., Ltd" 1991))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (625 12135 (\UFS.REMOVE.HOST.FIELD 635 . 1996) (\UFSDirectoryNameP 1998 . 2970) (
|
||||
\UFSGenerateFiles 2972 . 5532) (\UFSGetFileInfo 5534 . 7818) (\UFSSetFileInfo 7820 . 9051) (
|
||||
\UFSGetPrintFileType 9053 . 9589) (\UFS.NEXTFILEFN 9591 . 10649) (\UFS.FULLNAME 10651 . 11935) (
|
||||
\UFSParseNameString 11937 . 12133)))))
|
||||
STOP
|
||||
119
internal/envos/AR-PIECETREE-PATCH
Normal file
119
internal/envos/AR-PIECETREE-PATCH
Normal file
@@ -0,0 +1,119 @@
|
||||
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
|
||||
(FILECREATED "15-Jun-90 10:42:39"
|
||||
{DSK}<usr>local>lde>lispcore>internal>library>AR-PIECETREE-PATCH.;2 6122
|
||||
|
||||
changes to%: (VARS AR-PIECETREE-PATCHCOMS)
|
||||
(FNS TEDIT.FAST.RAW.INCLUDE AR.PIECE.CHANGED)
|
||||
|
||||
previous date%: "20-Apr-90 12:21:43"
|
||||
{DSK}<usr>local>lde>lispcore>internal>library>AR-PIECETREE-PATCH.;1)
|
||||
|
||||
|
||||
(* ; "
|
||||
Copyright (c) 1990 by Venue & Xerox Corporation. All rights reserved.
|
||||
")
|
||||
|
||||
(PRETTYCOMPRINT AR-PIECETREE-PATCHCOMS)
|
||||
|
||||
(RPAQQ AR-PIECETREE-PATCHCOMS ((COMS
|
||||
(* ;;
|
||||
"PATCH for AREDIT for TEDIT modification. (Replace piece table info balanced tree.)")
|
||||
|
||||
|
||||
(* ;;
|
||||
"following functions depend on piece table structure.")
|
||||
|
||||
(FILES TEDITDECLS)
|
||||
(FNS TEDIT.FAST.RAW.INCLUDE AR.PIECE.CHANGED))))
|
||||
|
||||
|
||||
|
||||
(* ;; "PATCH for AREDIT for TEDIT modification. (Replace piece table info balanced tree.)")
|
||||
|
||||
|
||||
|
||||
|
||||
(* ;; "following functions depend on piece table structure.")
|
||||
|
||||
|
||||
(FILESLOAD TEDITDECLS)
|
||||
(DEFINEQ
|
||||
|
||||
(TEDIT.FAST.RAW.INCLUDE
|
||||
[LAMBDA (TEXTSTREAM INSTREAM START END INSERTCH#) (* ; "Edited 15-Jun-90 10:42 by jds")
|
||||
|
||||
(* ;; "takes a text stream and an OPEN stream to include at character INSERTCH#. Note: Start and End are inclusive ptrs, unlike in copybytes and friends. No interpretation (alternate file type e.g. Bravo) takes place. INSTREAM is not copied, so you'd better not be changing it.")
|
||||
|
||||
(LET* [(TEXTOBJ (TEXTOBJ TEXTSTREAM))
|
||||
(PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ))
|
||||
(INSPC# (OR (\CHTOPCNO INSERTCH# PCTB)
|
||||
(INDEX (fetch CHNUM of (\LASTNODE PCTB))
|
||||
PCTB)))
|
||||
(INSPC (fetch PCE of (FINDNODE-INDEX PCTB INSPC#)))
|
||||
(LEN (- (OR END (GETEOFPTR INSTREAM))
|
||||
(OR START (SETQ START 0] (* ;
|
||||
"INSPC is the piece to make the insertion in")
|
||||
(COND
|
||||
([AND (NEQ INSPC 'LASTPIECE)
|
||||
(> INSERTCH# (fetch CHNUM of (FINDNODE-INDEX PCTB INSPC#]
|
||||
(* ; "Must split the piece.")
|
||||
(SETQ INSPC (\SPLITPIECE INSPC INSERTCH# TEXTOBJ INSPC#))
|
||||
(add INSPC# 1)))
|
||||
(\TEDIT.INSERT.PIECES TEXTOBJ INSERTCH#
|
||||
(create PIECE
|
||||
PFILE _ INSTREAM
|
||||
PFPOS _ START
|
||||
PLEN _ LEN
|
||||
PREVPIECE _ NIL
|
||||
NEXTPIECE _ NIL
|
||||
PLOOKS _ (fetch (TEXTOBJ DEFAULTCHARLOOKS) of TEXTOBJ)
|
||||
PPARALAST _ NIL
|
||||
PPARALOOKS _ (fetch (TEXTOBJ FMTSPEC) of TEXTOBJ))
|
||||
LEN INSPC INSPC#)
|
||||
(add (fetch (TEXTOBJ TEXTLEN) of TEXTOBJ)
|
||||
LEN])
|
||||
|
||||
(AR.PIECE.CHANGED
|
||||
[LAMBDA (TEXTOBJ TEXTSTREAM CH# REFSTREAM START LEN) (* ; "Edited 15-Jun-90 10:42 by jds")
|
||||
|
||||
(* ;; "Compares TEXTOBJ/TEXTSTREAM at position CH# with the contents of REFSTREAM from filepointer START for the next LEN bytes. If they're different, returns T.")
|
||||
|
||||
(* ;; "Do this by comparing pieces. This is fast in the average case (the piece is unchanged), and takes into account the fact that the textstream may be backed by REFSTREAM, so file pointers would step on each other.")
|
||||
|
||||
(LET* ((PCTB (fetch (TEXTOBJ PCTB) of TEXTOBJ))
|
||||
(PIECE# (\CHTOPCNO CH# PCTB))
|
||||
PIECE)
|
||||
(if (NULL PIECE#)
|
||||
then (* ; "Shouldn't happen")
|
||||
T
|
||||
else (SETQ PIECE (fetch PCE of (FINDNODE-INDEX PCTB PIECE#)))
|
||||
(do (if (ATOM PIECE)
|
||||
then (* ; "Shouldn't happen")
|
||||
(RETURN NIL))
|
||||
(if [NOT (if (EQ (fetch (PIECE PFILE) of PIECE)
|
||||
REFSTREAM)
|
||||
then (* ;
|
||||
"Same as reference stream--they're same if starts match, assume different otherwise")
|
||||
(= (fetch (PIECE PFPOS) of PIECE)
|
||||
START)
|
||||
else (* ;
|
||||
"Somewhere else, so compare byte by byte")
|
||||
(SETFILEPTR TEXTSTREAM (SUB1 CH#))
|
||||
(SETFILEPTR REFSTREAM START)
|
||||
(to (fetch (PIECE PLEN) of PIECE)
|
||||
always (EQ (BIN TEXTSTREAM)
|
||||
(BIN REFSTREAM]
|
||||
then (RETURN T))
|
||||
(if (> (SETQ LEN (- LEN (fetch (PIECE PLEN) of PIECE)))
|
||||
0)
|
||||
then (add START (fetch (PIECE PLEN) of PIECE))
|
||||
(add CH# (fetch (PIECE PLEN) of PIECE))
|
||||
(SETQ PIECE (fetch (PIECE NEXTPIECE) of PIECE))
|
||||
else (* ;
|
||||
"That's all the way to the end, so we succeeded")
|
||||
(RETURN NIL])
|
||||
)
|
||||
(PUTPROPS AR-PIECETREE-PATCH COPYRIGHT ("Venue & Xerox Corporation" 1990))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (1274 6024 (TEDIT.FAST.RAW.INCLUDE 1284 . 3221) (AR.PIECE.CHANGED 3223 . 6022)))))
|
||||
STOP
|
||||
727
internal/envos/ARADMIN
Normal file
727
internal/envos/ARADMIN
Normal file
@@ -0,0 +1,727 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
|
||||
(FILECREATED "27-Nov-90 10:25:47" |{PALLAS:MV:ENVOS}<LISPARS>ADMIN>ARADMIN.;32| 42686
|
||||
|
||||
|changes| |to:| (VARS ARADMINCOMS)
|
||||
(FNS |Smart-Trickle|)
|
||||
(FUNCTIONS START-EMULATOR-TRICKLES START-NOTECARDS-TRICKLES START-LISPCORE-TRICKLES RESTART-TRICKLES)
|
||||
|
||||
|previous| |date:| "26-Nov-90 12:25:05" |{PALLAS:MV:ENVOS}<LISPARS>ADMIN>ARADMIN.;31|)
|
||||
|
||||
|
||||
; Copyright (c) 1990 by Venue. All rights reserved.
|
||||
|
||||
(PRETTYCOMPRINT ARADMINCOMS)
|
||||
|
||||
(RPAQQ ARADMINCOMS (
|
||||
(* |;;| "Functions for helping do the routine chores of AR Administration. Set up to run things automatically.")
|
||||
|
||||
(VARS (IDLE.PROFILE '(TIMEOUT NIL FORGET NIL ALLOWED.LOGINS NIL DISPLAYFN (LAMBDA (W)
|
||||
(IDLE.BOUNCING.BOX W "Auto AR Cleanup Machine"))))
|
||||
(IDLE.TIMEOUT NIL)
|
||||
(IDLE.DEFAULTMODE 'UNLOCKED))
|
||||
(ADDVARS (INITIALSLST (SYBALSKY |John| |jds|)))
|
||||
(VARS (LOGINHOST/DIR '|{AR:MV:ENVOS}<LISPARS>ADMIN>|)
|
||||
(SYSOUTGAG T)
|
||||
(PROMPT#FLG T)
|
||||
(DEFAULTREGISTRY '|envos|)
|
||||
(CH.DEFAULT.DOMAIN 'MV)
|
||||
(CH.DEFAULT.ORGANIZATION 'ENVOS)
|
||||
(DIRECTORIES '("{DSK}/USR/LOCAL/LDE/LISPCORE/SOURCES/" "{DSK}/USR/LOCAL/LDE/LISPCORE/LIBRARY/" "{DSK}/USR/LOCAL/LDE/LISPCORE/INTERNAL/LIBRARY/" "{DSK}/USR/LOCAL/LDE/LISPUSERS/" "{DSK}<usr>local>lde>rooms>sources>" "{DSK}<usr>local>lde>rooms>users-src>" {DSK}))
|
||||
(DISPLAYFONTDIRECTORIES '("{DSK}/usr/local/lde/fonts/display/publishing/" "{DSK}/usr/local/lde/fonts/display/presentation/" "{DSK}/usr/local/lde/lispcore/XeroxPrivate/Fonts" "{DSK}/usr/local/lde/fonts/display/chinese/" "{DSK}/usr/local/lde/fonts/display/JIS1/" "{DSK}/usr/local/lde/fonts/display/JIS2/" "{DSK}/usr/local/lde/fonts/display/miscellaneous/" "{DSK}/usr/local/lde/fonts/display/printwheel/"))
|
||||
(DISPLAYFONTEXTENSIONS '(AC DISPLAYFONT STRIKE))
|
||||
(INTERPRESSFONTDIRECTORIES '("{DSK}/usr/local/lde/fonts/interpress/publishing/" "{DSK}/usr/local/lde/fonts/interpress/presentation/" "{DSK}/usr/local/lde/lispcore/XeroxPrivate/Fonts" "{DSK}/usr/local/lde/fonts/interpress/chinese/" "{DSK}/usr/local/lde/fonts/interpress/JIS1/" "{DSK}/usr/local/lde/fonts/interpress/JIS2/" "{DSK}/usr/local/lde/fonts/interpress/miscellaneous/" "{DSK}/usr/local/lde/fonts/interpress/printwheel/"))
|
||||
(DEFAULTPRINTINGHOST '("Twister:" "Tremor:")))
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
|
||||
(* |;;| "Tools to load")
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
(DECLARE\: DONTEVAL@LOAD DOCOPY (FILES PROMPTREMINDERS CROCK WHO-LINE FILEWATCH)
|
||||
(P (LAFITEMODE 'NS)
|
||||
(LOGOW "AR & Trickle")
|
||||
(CROCK (CREATEREGION 900 800 100 100))))
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
|
||||
(* |;;| " The AR stuff")
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
|
||||
(* |;;| "Every other day AR.CLEANUP to create new summaries &c")
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
(FNS PERIODIC-AR-CLEANUP DO-PERIODIC-AR-CLEANUP)
|
||||
|
||||
(* |;;| "Weekly creation of the list of ARs to review.")
|
||||
|
||||
(FNS PERIODIC-AR-REVIEW DO-WEEKLY-AR-REVIEW)
|
||||
(FNS MY-FLOOR)
|
||||
(DECLARE\: DONTEVAL@LOAD DOCOPY (FILES ARCLEANUP ARHACK)
|
||||
(VARS (STARTING-MONDAY (IDATE "5-DEC-88 07:00:00"))
|
||||
(ONE-WEEK 604800)
|
||||
(ONE-DAY 86400))
|
||||
(P (PERIODIC-AR-CLEANUP 24)
|
||||
(PERIODIC-AR-REVIEW)))
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
|
||||
(* |;;| "The trickle stuff")
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
(FUNCTIONS RESTART-TRICKLES START-EMULATOR-TRICKLES START-NOTECARDS-TRICKLES START-LISPCORE-TRICKLES FILE-SERVER-UPP)
|
||||
(FNS |Smart-Identifier| |Smart-Trickle| |TrickleProcessLogfile|)
|
||||
(DECLARE\: DONTEVAL@LOAD DOCOPY (FILES (SYSLOAD)
|
||||
PROMPTREMINDERS COPYFILES)
|
||||
(INITVARS (*FUJI-TRICKLE-MAIL-ADDRESS* "AR-MANAGERS:MV:envos, Shunko Inoue:KSPA:Fuji Xerox"))
|
||||
|
||||
(* |;;| "Start the Trickle Stuff")
|
||||
|
||||
(P (START-EMULATOR-TRICKLES)
|
||||
(START-LISPCORE-TRICKLES)
|
||||
(START-NOTECARDS-TRICKLES)))))
|
||||
|
||||
|
||||
|
||||
(* |;;| "Functions for helping do the routine chores of AR Administration. Set up to run things automatically.")
|
||||
|
||||
|
||||
(RPAQQ IDLE.PROFILE (TIMEOUT NIL FORGET NIL ALLOWED.LOGINS NIL DISPLAYFN (LAMBDA (W)
|
||||
(IDLE.BOUNCING.BOX W "Auto AR Cleanup Machine"))))
|
||||
|
||||
(RPAQQ IDLE.TIMEOUT NIL)
|
||||
|
||||
(RPAQQ IDLE.DEFAULTMODE UNLOCKED)
|
||||
|
||||
(ADDTOVAR INITIALSLST (SYBALSKY |John| |jds|))
|
||||
|
||||
(RPAQQ LOGINHOST/DIR |{AR:MV:ENVOS}<LISPARS>ADMIN>|)
|
||||
|
||||
(RPAQQ SYSOUTGAG T)
|
||||
|
||||
(RPAQQ PROMPT#FLG T)
|
||||
|
||||
(RPAQQ DEFAULTREGISTRY |envos|)
|
||||
|
||||
(RPAQQ CH.DEFAULT.DOMAIN MV)
|
||||
|
||||
(RPAQQ CH.DEFAULT.ORGANIZATION ENVOS)
|
||||
|
||||
(RPAQQ DIRECTORIES ("{DSK}/USR/LOCAL/LDE/LISPCORE/SOURCES/" "{DSK}/USR/LOCAL/LDE/LISPCORE/LIBRARY/" "{DSK}/USR/LOCAL/LDE/LISPCORE/INTERNAL/LIBRARY/" "{DSK}/USR/LOCAL/LDE/LISPUSERS/" "{DSK}<usr>local>lde>rooms>sources>" "{DSK}<usr>local>lde>rooms>users-src>" {DSK}))
|
||||
|
||||
(RPAQQ DISPLAYFONTDIRECTORIES ("{DSK}/usr/local/lde/fonts/display/publishing/" "{DSK}/usr/local/lde/fonts/display/presentation/" "{DSK}/usr/local/lde/lispcore/XeroxPrivate/Fonts" "{DSK}/usr/local/lde/fonts/display/chinese/" "{DSK}/usr/local/lde/fonts/display/JIS1/" "{DSK}/usr/local/lde/fonts/display/JIS2/" "{DSK}/usr/local/lde/fonts/display/miscellaneous/" "{DSK}/usr/local/lde/fonts/display/printwheel/"))
|
||||
|
||||
(RPAQQ DISPLAYFONTEXTENSIONS (AC DISPLAYFONT STRIKE))
|
||||
|
||||
(RPAQQ INTERPRESSFONTDIRECTORIES ("{DSK}/usr/local/lde/fonts/interpress/publishing/" "{DSK}/usr/local/lde/fonts/interpress/presentation/" "{DSK}/usr/local/lde/lispcore/XeroxPrivate/Fonts" "{DSK}/usr/local/lde/fonts/interpress/chinese/" "{DSK}/usr/local/lde/fonts/interpress/JIS1/" "{DSK}/usr/local/lde/fonts/interpress/JIS2/" "{DSK}/usr/local/lde/fonts/interpress/miscellaneous/" "{DSK}/usr/local/lde/fonts/interpress/printwheel/"))
|
||||
|
||||
(RPAQQ DEFAULTPRINTINGHOST ("Twister:" "Tremor:"))
|
||||
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
|
||||
|
||||
|
||||
(* |;;| "Tools to load")
|
||||
|
||||
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
(DECLARE\: DONTEVAL@LOAD DOCOPY
|
||||
|
||||
(FILESLOAD PROMPTREMINDERS CROCK WHO-LINE FILEWATCH)
|
||||
|
||||
|
||||
(LAFITEMODE 'NS)
|
||||
|
||||
(LOGOW "AR & Trickle")
|
||||
|
||||
(CROCK (CREATEREGION 900 800 100 100))
|
||||
)
|
||||
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
|
||||
|
||||
|
||||
(* |;;| " The AR stuff")
|
||||
|
||||
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
|
||||
|
||||
|
||||
(* |;;| "Every other day AR.CLEANUP to create new summaries &c")
|
||||
|
||||
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
(DEFINEQ
|
||||
|
||||
(PERIODIC-AR-CLEANUP
|
||||
(LAMBDA (HRS-BETWEEN-CLEANUPS START-TIME) (* \; "Edited 7-Dec-88 04:49 by kk")
|
||||
|
||||
(* |;;|
|
||||
"Schedule regular AR Cleanups to happen at 04:00 daily (or at whatever start time is specified)")
|
||||
|
||||
(LET* ((1AM-TODAY (IDATE (CONCAT (SUBSTRING (DATE)
|
||||
1 10)
|
||||
"00:01:00")))
|
||||
(NEXT-START (COND
|
||||
((>= (IDATE)
|
||||
1AM-TODAY)
|
||||
(+ 1AM-TODAY 86400))
|
||||
(T 1AM-TODAY))))
|
||||
(SETREMINDER '|AR-Cleanup| (TIMES HRS-BETWEEN-CLEANUPS 3600)
|
||||
'(ADD.PROCESS '(DO-PERIODIC-AR-CLEANUP))
|
||||
(OR START-TIME (GDATE NEXT-START))
|
||||
(+ (IDATE)
|
||||
(CL:* 365 86400))))))
|
||||
|
||||
(DO-PERIODIC-AR-CLEANUP
|
||||
(LAMBDA NIL (* \; "Edited 27-Sep-90 15:30 by gadener")
|
||||
|
||||
(* |;;| "Do the actual work for periodic AR cleanups: Do the cleanup, then delete the excess files on the summary subdirectory.")
|
||||
|
||||
(DRIBBLE "{LPT}")
|
||||
(PRINTOUT T ";;;" T)
|
||||
(PAGEHEIGHT 0)
|
||||
(WINDOWPROP (PROCESS.WINDOW (THIS.PROCESS))
|
||||
'PAGEFULLFN
|
||||
'NILL)
|
||||
(PRINTOUT T ";;; * * * * * * * * * * * * * * * * * * * * * * * * *" T
|
||||
";;; * * * * * * * * * * * * * * * * * * * * * * * * *" T ";;;" T
|
||||
";;; A R C L E A N U P" T ";;;" T ";;; Started at " (DATE)
|
||||
T)
|
||||
(PRINTOUT T ";;; Deleting {DSK}AR.INDEX ... ")
|
||||
(AND (> (LENGTH (DIRECTORY '|{dsk}AR.INDEX|))
|
||||
1)
|
||||
(DELFILE '|{dsk}AR.INDEX|))
|
||||
(PRINTOUT T "done." T ";;; Starting AR.CLEANUP" T)
|
||||
(AR.CLEANUP T '{DSK} T '{DSK})
|
||||
(PRINTOUT T T T ";;; AR.CLEANUP finished at " (DATE)
|
||||
T ";;; Deleting .TXT & .IP files ..." T)
|
||||
(DIRECTORY "{AR:MV:ENVOS}<LISPARS>SUMMARIES>*.TXT;L" '(DELETE))
|
||||
(DIRECTORY "{AR:MV:ENVOS}<LISPARS>SUMMARIES>*.IP;L" '(DELETE))
|
||||
(AND (> (LENGTH (DIRECTORY "{AR:MV:ENVOS}<LISPARS>AR.INDEX"))
|
||||
2)
|
||||
(PRINTOUT T ";;; Deleting AR.INDEX ... " (DELFILE "{AR:MV:ENVOS}<LISPARS>AR.INDEX")
|
||||
T))
|
||||
(PRINTOUT T ";;; Setting cleanup to run again at " (GDATE (+ ONE-DAY
|
||||
(IDATE (CONCAT (SUBSTRING (DATE)
|
||||
1 10)
|
||||
"00:01:00"))))
|
||||
"." T)
|
||||
(REMINDER.NEXTREMINDDATE '|AR-Cleanup| (GDATE (+ ONE-DAY (IDATE (CONCAT (SUBSTRING (DATE)
|
||||
1 10)
|
||||
"00:01:00")))))
|
||||
(DRIBBLE)))
|
||||
)
|
||||
|
||||
|
||||
|
||||
(* |;;| "Weekly creation of the list of ARs to review.")
|
||||
|
||||
(DEFINEQ
|
||||
|
||||
(PERIODIC-AR-REVIEW
|
||||
(LAMBDA (INITIAL-DELAY) (* \; "Edited 27-Sep-90 15:46 by gadener")
|
||||
|
||||
(* |;;| "Schedule regular AR Reviews to happen at 07:00 every Monday")
|
||||
|
||||
(LET* ((7AM-TODAY (IDATE (CONCAT (SUBSTRING (DATE)
|
||||
1 10)
|
||||
"00:07:00")))
|
||||
(NEXT-START (COND
|
||||
((>= (IDATE)
|
||||
7AM-TODAY)
|
||||
(+ 7AM-TODAY 86400))
|
||||
(T 7AM-TODAY))))
|
||||
(SETREMINDER '|AR-Review| ONE-WEEK '(ADD.PROCESS '(DO-WEEKLY-AR-REVIEW))
|
||||
(COND
|
||||
(INITIAL-DELAY INITIAL-DELAY)
|
||||
(T (GDATE NEXT-START)))
|
||||
(+ (IDATE)
|
||||
(CL:* 365 86400))))))
|
||||
|
||||
(DO-WEEKLY-AR-REVIEW
|
||||
(LAMBDA NIL (* \; "Edited 28-Sep-90 13:49 by gadener")
|
||||
(LET ((LAST-REVIEWED-AR (CAR (READFILE "{AR:MV:ENVOS}<LispARs>ADMIN>LAST-REVIEWED-AR")))
|
||||
LAST-FOUND-AR MESSAGE)
|
||||
(PRINTOUT T ";;;" T)
|
||||
(DRIBBLE "{LPT}")
|
||||
(PAGEHEIGHT 0)
|
||||
(WINDOWPROP (PROCESS.WINDOW (THIS.PROCESS))
|
||||
'PAGEFULLFN
|
||||
'NILL)
|
||||
(PRINTOUT T T ";;; * * * * * * * * * * * * * * * * * * * * * * * * *" T
|
||||
";;; * * * * * * * * * * * * * * * * * * * * * * * * *" T
|
||||
";;; A R R E V I E W" T ";;;" T ";;; Starting at " (DATE)
|
||||
T)
|
||||
(SETQ LAST-FOUND-AR LAST-REVIEWED-AR)
|
||||
(|for| TRIAL-AR |from| LAST-REVIEWED-AR |while| (<= TRIAL-AR (+ LAST-FOUND-AR 50
|
||||
))
|
||||
|when| (INFILEP (PACKFILENAME.STRING 'NAME TRIAL-AR 'BODY
|
||||
"{AR:MV:ENVOS}<LISPARS>FOO.AR")) |do| (SETQ LAST-FOUND-AR
|
||||
TRIAL-AR))
|
||||
(LAFITEMODE 'NS)
|
||||
(SETQ MESSAGE (CONCAT "Subject: ARs to Review
|
||||
" "To: AR-Managers:MV:envos
|
||||
|
||||
" (CL:FORMAT NIL "Printing for review ARs ~d-~d. " (ADD1 LAST-REVIEWED-AR)
|
||||
LAST-FOUND-AR)
|
||||
"John will be around with them...." "
|
||||
|
||||
--The AR Daemon
|
||||
"))
|
||||
(LAFITE.SENDMESSAGE (OPENTEXTSTREAM MESSAGE))
|
||||
(AR.HARDCOPY (|for| I |from| (ADD1 LAST-REVIEWED-AR) |to| LAST-FOUND-AR
|
||||
|collect| I))
|
||||
(CL:WITH-OPEN-FILE (NEW-AR "{AR:MV:ENVOS}<LispARs>ADMIN>LAST-REVIEWED-AR" :DIRECTION :OUTPUT
|
||||
:IF-EXISTS :NEW-VERSION)
|
||||
(PRINT LAST-FOUND-AR NEW-AR))
|
||||
(PRINTOUT T ";;; AR Review copies printed at" (DATE)
|
||||
"." T)
|
||||
|
||||
(* |;;| "Set up to run next week at the same time:")
|
||||
|
||||
(REMINDER.NEXTREMINDDATE '|AR-Review| (GDATE (+ STARTING-MONDAY (CL:* ONE-WEEK
|
||||
(CL:CEILING
|
||||
(- (IDATE)
|
||||
STARTING-MONDAY)
|
||||
ONE-WEEK))))))))
|
||||
)
|
||||
(DEFINEQ
|
||||
|
||||
(MY-FLOOR
|
||||
(LAMBDA (NUMBER DIVISOR)
|
||||
(CL:* DIVISOR (CL:FLOOR NUMBER DIVISOR))))
|
||||
)
|
||||
(DECLARE\: DONTEVAL@LOAD DOCOPY
|
||||
|
||||
(FILESLOAD ARCLEANUP ARHACK)
|
||||
|
||||
|
||||
(RPAQ STARTING-MONDAY (IDATE "5-DEC-88 07:00:00"))
|
||||
|
||||
(RPAQQ ONE-WEEK 604800)
|
||||
|
||||
(RPAQQ ONE-DAY 86400)
|
||||
|
||||
|
||||
(PERIODIC-AR-CLEANUP 24)
|
||||
|
||||
(PERIODIC-AR-REVIEW)
|
||||
)
|
||||
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
|
||||
|
||||
|
||||
(* |;;| "The trickle stuff")
|
||||
|
||||
|
||||
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
|
||||
(CL:DEFUN RESTART-TRICKLES ()
|
||||
(FOR REMINDER IN (ACTIVEREMINDERNAMES) DO (COND
|
||||
((NOT (OR (EQL REMINDER '|AR-Cleanup|)
|
||||
(EQL REMINDER '|AR-Review|)))
|
||||
(DELDEF REMINDER 'REMINDERS))))
|
||||
|
||||
(* |;;| "Got rid of the old reminder, now ready to restart everything again")
|
||||
|
||||
(START-EMULATOR-TRICKLES)
|
||||
(START-LISPCORE-TRICKLES)
|
||||
(START-NOTECARDS-TRICKLES)
|
||||
T)
|
||||
|
||||
(CL:DEFUN START-EMULATOR-TRICKLES ()
|
||||
(DECLARE (GLOBAL *FUJI-TRICKLE-MAIL-ADDRESS*))
|
||||
(SETREMINDER NIL NIL `(|Smart-Trickle| "{DSK}<users>maiko>working>src>*" "{Fuusen:KSPA:Fuji Xerox}<Venue>Emul>working>src>*" "{DSK}<python>medley-trickles/emulator/src-" ,*FUJI-TRICKLE-MAIL-ADDRESS* "06:00" NIL NIL)
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL `(|Smart-Trickle| "{DSK}<users>maiko>working>inc>*" "{Fuusen:KSPA:Fuji Xerox}<Venue>Emul>working>inc>*" "{DSK}<python>medley-trickles/emulator/inc-" ,*FUJI-TRICKLE-MAIL-ADDRESS* "07:00" NIL NIL)
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL `(|Smart-Trickle| "{DSK}<users>maiko>working>bin>*" "{Fuusen:KSPA:Fuji Xerox}<Venue>Emul>working>bin>*" "{DSK}<python>medley-trickles/emulator/bin-" ,*FUJI-TRICKLE-MAIL-ADDRESS* "08:00" NIL NIL)
|
||||
(TIMES 60 (RAND 10 60))))
|
||||
|
||||
(CL:DEFUN START-NOTECARDS-TRICKLES ()
|
||||
|
||||
(* |;;;| "")
|
||||
|
||||
(* |;;;| "Setup all the NoteCards Core Trickles ")
|
||||
|
||||
(* |;;;| "")
|
||||
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{Pika:MV:ENVOS}<NoteCards>system>*" "{DSK}/usr/local/lde/lispcore/notecards/system/*" "{DSK}/python/medley-trickles/notecards/system-" "SA" "20:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{Pika:MV:ENVOS}<NoteCards>library>*" "{DSK}/usr/local/lde/lispcore/notecards/library/*" "{DSK}/python/medley-trickles/notecards/library-" "SA" "23:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{Pika:MV:ENVOS}<NoteCards>lispusers>*" "{DSK}/usr/local/lde/lispcore/notecards/lispusers/*" "{DSK}/python/medley-trickles/notecards/lispusers-" "SA" "23:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{Pika:MV:ENVOS}<NoteCards>internal>*" "{DSK}/usr/local/lde/lispcore/notecards/internal/*" "{DSK}/python/medley-trickles/notecards/internal-" "SA" "23:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{Pika:MV:ENVOS}<NoteCards>tools>*" "{DSK}/usr/local/lde/lispcore/notecards/tools/*" "{DSK}/python/medley-trickles/notecards/tools-" "SA" "23:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{Pika:MV:ENVOS}<NoteCards>patches>*" "{DSK}/usr/local/lde/lispcore/notecards/patches/*" "{DSK}/python/medley-trickles/notecards/patches-" "SA" "23:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60))))
|
||||
|
||||
(CL:DEFUN START-LISPCORE-TRICKLES ()
|
||||
|
||||
(* |;;;| "")
|
||||
|
||||
(* |;;;| "Set up all the Lispcore trickles")
|
||||
|
||||
(* |;;;| "")
|
||||
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{PELE:MV:ENVOS}<LISPCORE>SOURCES>*" "{dsk}/usr/local/lde/lispcore/sources/*" "{DSK}/python/medley-trickles/lispcore/sources-" "SA" "00:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{PELE:MV:ENVOS}<LISPCORE>LIBRARY>*" "{dsk}/usr/local/lde/lispcore/library/*" "{DSK}/python/medley-trickles/lispcore/library-" "SA" "04:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{PELE:MV:ENVOS}<LISPCORE>INTERNAL>LIBRARY>*" "{dsk}/usr/local/lde/lispcore/internal/library/*" "{DSK}/python/medley-trickles/lispcore/internal-library-" "SA" "06:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60)))
|
||||
(SETREMINDER NIL NIL '(|Smart-Trickle| "{PELE:MV:ENVOS}<LISPCORE>INTERNAL>DOC>*" "{DSK}/usr/local/lde/lispcore/internal/doc/*" "{DSK}/python/medley-trickles/lispore/internal-doc-" "SA" "07:00" T '(STATUS DATABASE))
|
||||
(TIMES 60 (RAND 10 60))))
|
||||
|
||||
(CL:DEFUN FILE-SERVER-UPP (SERVER &KEY (MESSAGE NIL MESSAGEP)
|
||||
(TIMEOUT 30))
|
||||
|
||||
(* |;;| "Checks for a certain period of time if server is up. It will try to find a directory specific for the type of server. ")
|
||||
|
||||
(CL:BLOCK FILE-SERVER-UP-P
|
||||
(CL:UNLESS (NULL SERVER)
|
||||
(LET* ((DIRECTORYNAME (COND
|
||||
((CL:SEARCH ":" SERVER) (* \; "This is an NS-server")
|
||||
"DESKTOPS")
|
||||
((CL:SEARCH "/N" SERVER) (* \; "This is an NFS-server")
|
||||
"/")
|
||||
((AND (EQL (MACHINETYPE)
|
||||
'MAIKO)
|
||||
(OR (STRING-EQUAL SERVER "DSK")
|
||||
(STRING-EQUAL SERVER "UNIX"))) (* \; " This should be local disk ")
|
||||
"/")
|
||||
(T (* \; "Assume it is an IFS-server ")
|
||||
"SYSTEM")))
|
||||
(PROCESS-RESULT (CONS))
|
||||
(PROCESS-HANDLE (ADD.PROCESS `(COND
|
||||
((DIRECTORYNAMEP ,DIRECTORYNAME ,SERVER)
|
||||
(RPLACA ',PROCESS-RESULT T)))
|
||||
'NAME "file-server-upp")))
|
||||
(DISMISS 500)
|
||||
(|forDuration| TIMEOUT |timerUnits| 'SECONDS |until| (CAR PROCESS-RESULT) |do| (DISMISS 500) |finally| (DEL.PROCESS PROCESS-HANDLE))
|
||||
(CL:IF (CAR PROCESS-RESULT)
|
||||
T
|
||||
(CL:WHEN MESSAGEP
|
||||
(CL:FORMAT T ">>~%>> ~A but server ~A is down ~%>>~%" MESSAGE SERVER)
|
||||
(MENU (CREATE MENU
|
||||
TITLE _ (CL:CONCATENATE 'STRING " Server " (STRING SERVER)
|
||||
" is down ")
|
||||
ITEMS _ '((WAIT T "Wait until server is up")
|
||||
(CONDITIONS:CONTINUE NIL "Continue to load the rest"))
|
||||
CENTERFLG _ T))))))))
|
||||
(DEFINEQ
|
||||
|
||||
(|Smart-Identifier|
|
||||
(LAMBDA (|Source| |Destination|) (* \; "Edited 22-Oct-90 17:27 by gadener")
|
||||
|
||||
(* |;;| "Will return a string composed of <Common-Directories>-<Source-Host>-to-(Destination-Host> if there is a common denominator between the two, otherwise the Common-Directories will consist of the Source-Directory")
|
||||
|
||||
(LET* ((|Src-Host| (FILENAMEFIELD |Source| 'HOST))
|
||||
(|Dst-Host| (FILENAMEFIELD |Destination| 'HOST))
|
||||
(|Src-Dir| (STRING (U-CASE (FILENAMEFIELD |Source| 'DIRECTORY))))
|
||||
(|Dst-Dir| (STRING (U-CASE (FILENAMEFIELD |Destination| 'DIRECTORY))))
|
||||
(|Common-point| (CL:MISMATCH |Src-Dir| |Dst-Dir| :TEST 'STRING-EQUAL :FROM-END T)))
|
||||
(CONCAT (IF (OR (NULL |Common-point|)
|
||||
(EQL (CL:LENGTH |Src-Dir|)
|
||||
|Common-point|))
|
||||
THEN
|
||||
|
||||
(* |;;| "Could not find a common denominator, just return the Src-Dir")
|
||||
|
||||
|Src-Dir|
|
||||
ELSE
|
||||
|
||||
(* |;;|
|
||||
"Just Return the common part, Should be the common directory part.")
|
||||
|
||||
(CL:SUBSEQ |Src-Drir| |Common-point|))
|
||||
"-" |Src-Host| " to " |Dst-Host|))))
|
||||
|
||||
(|Smart-Trickle|
|
||||
(LAMBDA (|Source| |Destination| |RootLogfileName| |MailAddress| |ScheduleAnotherOne| |DontReplaceOldVersions| |DontCopyExtensions| |Retries|) (* \; "Edited 27-Nov-90 10:13 by automgr")
|
||||
|
||||
(* |;;;| "The Smart-Trickle will first check to see that the file-server of both the Source and Destination are up and running before trying to copy files between them . If either is down, it will retry every 15 minutes up to four times before giving up. If it fails to connect and ScheduleAnotherOne has a value other than () , then it will reschedule for that time, 24 hrs later. If a server is playing hard to catch, FILE-SERVER-UP-P will try harder (wait longer) for each time around. .")
|
||||
|
||||
(LET ((RETRY-TIMES 4) (* \; "How many retries.")
|
||||
(RETRY-PERIOD 15) (* \; "How many minutes between retries")
|
||||
(TIMEOUT-PERIOD 60) (* \; "Give up on fileserver after multiples of this period (seconds)")
|
||||
(|Identifier| (|Smart-Identifier| |Source| |Destination|))
|
||||
|DateString| |LogfileName|)
|
||||
(IF (NOT (AND (OR |Retries| (SETQ |Retries| RETRY-TIMES)) (* \; "This is the first time around")
|
||||
(FILE-SERVER-UPP (STRING (FILENAMEFIELD |Source| 'HOST))
|
||||
:TIMEOUT
|
||||
(CL:* (+ (- RETRY-TIMES |Retries|)
|
||||
1)
|
||||
TIMEOUT-PERIOD))
|
||||
(FILE-SERVER-UPP (STRING (FILENAMEFIELD |Destination| 'HOST))
|
||||
:TIMEOUT
|
||||
(CL:* (+ (- RETRY-TIMES |Retries|)
|
||||
1)
|
||||
TIMEOUT-PERIOD))))
|
||||
THEN
|
||||
|
||||
(* |;;| "At least one of the servers is not up, reschedule a new Smart-trickle to try again in 15 minutes , more correctly , the value of RETRY-PERIOD")
|
||||
|
||||
(IF (> |Retries| 0)
|
||||
THEN
|
||||
|
||||
(* |;;| "Just Retry")
|
||||
|
||||
(SETREMINDER (MKATOM (CONCAT "Retry-" |Identifier| "-" (GENSYM)))
|
||||
NIL
|
||||
`(|Smart-Trickle| ,|Source| ,|Destination| ,|RootLogfileName| ,|MailAddress| ,|ScheduleAnotherOne| ,|DontReplaceOldVersions| ',|DontCopyExtensions| ,(- |Retries| 1))
|
||||
(GDATE (PLUS (IDATE)
|
||||
(TIMES 60 RETRY-PERIOD))))
|
||||
ELSE
|
||||
|
||||
(* |;;| "Could not connect to either, or both of the servers after retrying several times.")
|
||||
|
||||
(PRINTOUT PROMPTWINDOW "Trickle: Tried to connect to " (FILENAMEFIELD |Source| 'HOST)
|
||||
" and "
|
||||
(FILENAMEFIELD |Destination| 'HOST)
|
||||
" , but one or both, are down!" T (IF |ScheduleAnotherOne|
|
||||
THEN "Rescheduling another TRICKLE for tomorrow!"))
|
||||
|
||||
(* |;;| "Will reschedule another one for tomorrow")
|
||||
|
||||
(IF |ScheduleAnotherOne|
|
||||
THEN (SETREMINDER (MKATOM (CONCAT |Identifier| "-" (GENSYM)))
|
||||
NIL
|
||||
`(|Smart-Trickle| ,|Source| ,|Destination| ,|RootLogfileName| ,|MailAddress| ,|ScheduleAnotherOne| ,|DontReplaceOldVersions| ',|DontCopyExtensions|)
|
||||
(CONCAT (SUBSTRING (GDATE (PLUS (IDATE)
|
||||
(TIMES 60 60 24)))
|
||||
1 10)
|
||||
(IF (EQ |ScheduleAnotherOne| T)
|
||||
THEN (CONCAT (RAND 1 5)
|
||||
":"
|
||||
(RAND 0 59))
|
||||
ELSE |ScheduleAnotherOne|))))
|
||||
|
||||
(* |;;| "Send a message about this")
|
||||
|
||||
(IF (AND (\\CH.FIND.ORG.SERVER 'ENVOS T)
|
||||
(GETD 'LAFITEMODE)
|
||||
(GETD 'LAFITE.SENDMESSAGE)
|
||||
(OR (EQL (LAFITEMODE)
|
||||
'NS)
|
||||
(MEMBER (LAFITEMODE)
|
||||
'NS)))
|
||||
THEN (LAFITE.SENDMESSAGE (CONCAT "To: " "AR-MANAGERS:MV:ENVOS" "
|
||||
Subject: Trickle had trouble accessing servers." "
|
||||
Format: Text
|
||||
|
||||
Trickle tried to access:
|
||||
|
||||
" (FILENAMEFIELD |Source| 'HOST)
|
||||
" and "
|
||||
(FILENAMEFIELD |Destination| 'HOST)
|
||||
"
|
||||
|
||||
several times, but gave up at "
|
||||
(DATE)
|
||||
" ; one of the servers, or both, were down!" "
|
||||
|
||||
Source : " |Source| "
|
||||
Destination : " |Destination| (IF |ScheduleAnotherOne|
|
||||
THEN "
|
||||
|
||||
Rescheduling another TRICKLE for tomorrow!")
|
||||
"
|
||||
|
||||
<-- Grettings from your friendly Trickler -->" "
|
||||
"))))
|
||||
ELSE
|
||||
|
||||
(* |;;| " OK, servers were up, run the Trickler.")
|
||||
|
||||
(SETQ |DateString| (DATE (DATEFORMAT SPACES NUMBER.OF.MONTH NO.TIME)))
|
||||
(SETQ |LogfileName| (PACK* (OR |RootLogfileName| '|{UNIX}<tmp>Trickle-log-|)
|
||||
(SUBSTRING |DateString| 7 8)
|
||||
(SUBSTRING |DateString| 4 5)
|
||||
(SUBSTRING |DateString| 1 2)
|
||||
'.COPYLOG))
|
||||
(IF (EQ '\ (NTHCHAR |LogfileName| -10))
|
||||
THEN (SETQ |LogfileName| (MKATOM (RPLSTRING |LogfileName| -10 "0"))))
|
||||
|
||||
(* |;;| "ensure that the logfile has one line per file operated on")
|
||||
|
||||
(RESETVAR FILELINELENGTH 1000 (COPYFILES |Source| |Destination| (APPEND (LIST '>A (LIST 'OUTPUT |LogfileName|))
|
||||
(|if| (NULL |DontReplaceOldVersions|)
|
||||
|then| (LIST 'REPLACE))
|
||||
(|if| |DontCopyExtensions|
|
||||
|then| `((DONTCOPY ,@|DontCopyExtensions|))))))
|
||||
(|TrickleProcessLogfile| |LogfileName| |MailAddress| |Identifier|)
|
||||
|
||||
(* |;;| "Will reschedule another trickle for tomorrow")
|
||||
|
||||
(IF |ScheduleAnotherOne|
|
||||
THEN (SETREMINDER (MKATOM (CONCAT |Identifier| "-" (GENSYM)))
|
||||
NIL
|
||||
`(|Smart-Trickle| ,|Source| ,|Destination| ,|RootLogfileName| ,|MailAddress| ,|ScheduleAnotherOne| ,|DontReplaceOldVersions| ',|DontCopyExtensions|)
|
||||
(CONCAT (SUBSTRING (GDATE (PLUS (IDATE)
|
||||
(TIMES 60 60 24)))
|
||||
1 10)
|
||||
(IF (EQ |ScheduleAnotherOne| T)
|
||||
THEN (CONCAT (RAND 1 5)
|
||||
":"
|
||||
(RAND 0 59))
|
||||
ELSE |ScheduleAnotherOne|))))))))
|
||||
|
||||
(|TrickleProcessLogfile|
|
||||
(LAMBDA (|LogfileName| |MailAddress| |Identifier|) (* \; "Edited 22-Oct-90 18:20 by gadener")
|
||||
(PROG ((|LogfileStream| (OPENTEXTSTREAM |LogfileName|))
|
||||
|EndsOfLines|
|
||||
(|NewLine| (CHARACTER (CHARCODE EOL)))
|
||||
|EndOfLine| |Deletions| |FailedP|)
|
||||
(IF (ZEROP (GETEOFPTR |LogfileStream|))
|
||||
THEN
|
||||
|
||||
(* |;;| "Probably an error, people usually don't Trickle empty directories")
|
||||
|
||||
(IF |MailAddress|
|
||||
THEN (TEDIT.INSERT |LogfileStream|
|
||||
(PACK* "Subject: (Error?) Trickle: " |Identifier| |NewLine|
|
||||
"To: " |MailAddress| |NewLine| |NewLine|)
|
||||
1)
|
||||
(LAFITE.SENDMESSAGE |LogfileStream|)
|
||||
(CLOSEF |LogfileStream|)
|
||||
(RETURN)))
|
||||
(TEDIT.SETSEL |LogfileStream| 1 1 'LEFT)
|
||||
(SETQ |EndsOfLines| (CONS 0 (WHILE (SETQ |EndOfLine| (TEDIT.FIND |LogfileStream|
|
||||
|NewLine|))
|
||||
COLLECT (TEDIT.SETSEL |LogfileStream| |EndOfLine| 1
|
||||
'RIGHT)
|
||||
|EndOfLine|)))
|
||||
|
||||
(* |;;| "Find lines with skipped and collect for deletion, TEDIT.FIND is very poor on long files, see AR# 4220")
|
||||
|
||||
(FOR |EndOfPreviousLine| |on| |EndsOfLines| BIND |StartOfLine| |EndOfLine|
|
||||
EACHTIME (SETQ |StartOfLine| (AND |EndOfPreviousLine| (ADD1 (CAR |EndOfPreviousLine|
|
||||
))))
|
||||
(SETQ |EndOfLine| (CADR |EndOfPreviousLine|))
|
||||
WHEN (AND |EndOfLine|
|
||||
|
||||
(* |;;| " This little sequence will always return T. It is used to check if copying of a file failed. It is put here to avoid having to go through the LogFile several times. Once an error was found, don't bother looking at the file any more.")
|
||||
|
||||
(OR (NOT (NULL |FailedP|))
|
||||
(IF (STRPOS "failed" (TEDIT.SEL.AS.STRING
|
||||
|LogfileStream|
|
||||
(TEDIT.SETSEL |LogfileStream| |StartOfLine|
|
||||
(ADD1 (IDIFFERENCE |EndOfLine|
|
||||
|StartOfLine|)))))
|
||||
THEN (SETQ |FailedP| T))
|
||||
T)
|
||||
(STRPOS "skipped" (TEDIT.SEL.AS.STRING |LogfileStream|
|
||||
(TEDIT.SETSEL |LogfileStream| |StartOfLine|
|
||||
(ADD1 (IDIFFERENCE |EndOfLine|
|
||||
|StartOfLine|))))))
|
||||
DO
|
||||
|
||||
(* |;;| " if this deletion is an extension of the previous one, extend it, otherwise add it to the collection. This collapsing makes the actual deletion more efficient, since we expect to keep few of the lines.")
|
||||
|
||||
(IF (AND |Deletions| (EQUAL (PLUS (CAAR |Deletions|)
|
||||
(CDAR |Deletions|))
|
||||
|StartOfLine|))
|
||||
THEN (RPLACD (CAR |Deletions|)
|
||||
(PLUS (CDAR |Deletions|)
|
||||
(DIFFERENCE |EndOfLine| (CAR |EndOfPreviousLine|))))
|
||||
ELSE (|push| |Deletions| (CONS |StartOfLine| (DIFFERENCE |EndOfLine|
|
||||
(CAR
|
||||
|EndOfPreviousLine|
|
||||
))))))
|
||||
|
||||
(* |;;| "Collected deletions")
|
||||
|
||||
(FOR |Deletion| |in| |Deletions| DO (TEDIT.DELETE |LogfileStream| (CAR
|
||||
|Deletion|
|
||||
)
|
||||
(CDR |Deletion|)))
|
||||
|
||||
(* |;;|
|
||||
"KLUDGE!. TEDIT.PUT bombs after putting the file if the stream is not associated with a window.")
|
||||
|
||||
(NLSETQ (TEDIT.PUT |LogfileStream| |LogfileName| T T))
|
||||
|
||||
(* |;;| "Construct a mail message and send it")
|
||||
|
||||
(IF |MailAddress|
|
||||
THEN (TEDIT.INSERT |LogfileStream|
|
||||
(CONCAT "Subject: " (IF (ZEROP (GETEOFPTR |LogfileStream|))
|
||||
THEN "(Empty) "
|
||||
ELSE "")
|
||||
(IF (NOT (NULL |FailedP|))
|
||||
THEN "(Failed) "
|
||||
ELSE "")
|
||||
"Trickle: " |Identifier| |NewLine| "To: " |MailAddress|
|
||||
|NewLine| |NewLine|
|
||||
(IF (NOT (NULL |FailedP|))
|
||||
THEN (CONCAT
|
||||
"***********************************************************"
|
||||
|NewLine|
|
||||
"WARNING! Some of the files where not copied. Please check this message,"
|
||||
|NewLine| "or the log: " |LogfileName|
|
||||
|NewLine|
|
||||
"***********************************************************"
|
||||
|NewLine| |NewLine|)
|
||||
ELSE ""))
|
||||
1)
|
||||
(LAFITE.SENDMESSAGE |LogfileStream|))
|
||||
(CLOSEF |LogfileStream|))))
|
||||
)
|
||||
(DECLARE\: DONTEVAL@LOAD DOCOPY
|
||||
|
||||
(FILESLOAD (SYSLOAD)
|
||||
PROMPTREMINDERS COPYFILES)
|
||||
|
||||
|
||||
(RPAQ? *FUJI-TRICKLE-MAIL-ADDRESS* "AR-MANAGERS:MV:envos, Shunko Inoue:KSPA:Fuji Xerox")
|
||||
|
||||
|
||||
(START-EMULATOR-TRICKLES)
|
||||
|
||||
(START-LISPCORE-TRICKLES)
|
||||
|
||||
(START-NOTECARDS-TRICKLES)
|
||||
)
|
||||
(PUTPROPS ARADMIN COPYRIGHT ("Venue" 1990))
|
||||
(DECLARE\: DONTCOPY
|
||||
(FILEMAP (NIL (7786 10686 (PERIODIC-AR-CLEANUP 7796 . 8657) (DO-PERIODIC-AR-CLEANUP 8659 . 10684)) (10752 14133 (PERIODIC-AR-REVIEW 10762 . 11601) (DO-WEEKLY-AR-REVIEW 11603 . 14131)) (14134 14233 (MY-FLOOR 14144 . 14231)) (23289 42338 (|Smart-Identifier| 23299 . 24650) (|Smart-Trickle| 24652 . 35808) (|TrickleProcessLogfile| 35810 . 42336)))))
|
||||
STOP
|
||||
1
internal/envos/AREDIT.STATUS
Normal file
1
internal/envos/AREDIT.STATUS
Normal file
@@ -0,0 +1 @@
|
||||
"SYBALSKY.ENVOS" "25-Jun-90 17:42:20"
|
||||
365
internal/envos/CLMAIL
Normal file
365
internal/envos/CLMAIL
Normal file
@@ -0,0 +1,365 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
(FILECREATED "14-Jun-90 20:54:42" {DSK}<usr>local>lde>lispcore>internal>library>CLMAIL.;2 17296
|
||||
|
||||
changes to%: (VARS CLMAILCOMS)
|
||||
(FNS CLMAILSHOW CLMAILDISPLAY CLMAILDISPLAYMSG CLMAILSEARCH CLMAILMSGHASH
|
||||
CLMAILMERGE CLMAILREDOMENU CLMAILHEADSTRING CLMAILFIRST CLMAILLAST CLMAILFWD
|
||||
CLMAILBKWD CLMAILQUIT MAKECMLHEADHASH MAKECMLMAILHASH UPDATEHASHFILES
|
||||
CMLMAIL1 CMLMAIL2 CMLMAIL3 CMLMAIL4 CMLMAIL5 CMLMAIL6 CMLMAIL7 CMLMAIL8
|
||||
CMLMAIL9 CMLMAIL0)
|
||||
|
||||
previous date%: "23-Jan-87 16:37:36" {DSK}<usr>local>lde>lispcore>internal>library>CLMAIL.;1)
|
||||
|
||||
|
||||
(* ; "
|
||||
Copyright (c) 1986, 1987, 1990 by Venue & Xerox Corporation. All rights reserved.
|
||||
")
|
||||
|
||||
(PRETTYCOMPRINT CLMAILCOMS)
|
||||
|
||||
(RPAQQ CLMAILCOMS
|
||||
((FNS CLMAILSHOW CLMAILDISPLAY CLMAILDISPLAYMSG CLMAILSEARCH CLMAILMSGHASH CLMAILMERGE
|
||||
CLMAILREDOMENU CLMAILHEADSTRING CLMAILFIRST CLMAILLAST CLMAILFWD CLMAILBKWD CLMAILQUIT
|
||||
MAKECMLHEADHASH MAKECMLMAILHASH UPDATEHASHFILES CMLMAIL1 CMLMAIL2 CMLMAIL3 CMLMAIL4
|
||||
CMLMAIL5 CMLMAIL6 CMLMAIL7 CMLMAIL8 CMLMAIL9 CMLMAIL0)
|
||||
(VARS CLM.MENUFORMAT (* "Format list for Free Menu")
|
||||
CLM.MAILHASHNAME CLM.HEADHASHNAME (* "Names of hashfiles")
|
||||
CLM.MAILDATANAME CLM.HEADDATANAME (* "Names of unhashed data files")
|
||||
CLM.VAXCDIR CLM.MSGDIR (* "Names of magic directories"))
|
||||
(GLOBALVARS CLM.HEADITEMS (*
|
||||
"A pointer to the first message menu item in CLM.MENUFORMAT for easy referencing"
|
||||
)
|
||||
CLM.ABOVEITEM CLM.BELOWITEM CLM.WORD (* "Points at Above:, Below:, and THEWORD fields"
|
||||
)
|
||||
CLM.MSGHASH CLM.HEADHASH (* "Streams for message and head line hash files")
|
||||
CLM.MENUWINDOW
|
||||
(* "The menu window")
|
||||
CLM.HEADARRAY CLM.HEAD# (* "Array of head lines for menu and an index into it"))))
|
||||
(DEFINEQ
|
||||
|
||||
(CLMAILSHOW
|
||||
[LAMBDA NIL (* "Pavel" "29-May-86 15:52")
|
||||
|
||||
(* * "First, open the the hash files")
|
||||
|
||||
(SETQ CLM.MSGHASH (OPENHASHFILE CLM.MAILHASHNAME 'INPUT))
|
||||
(SETQ CLM.HEADHASH (OPENHASHFILE CLM.HEADHASHNAME 'INPUT))
|
||||
|
||||
(* * "Then create the menu window")
|
||||
|
||||
(SETQ CLM.MENUWINDOW (FREEMENU CLM.MENUFORMAT))
|
||||
|
||||
(* *
|
||||
"Set various pointers into the FM.ITEMS list so we can find the first message menu item easily")
|
||||
|
||||
[LET [(WP (WINDOWPROP CLM.MENUWINDOW 'FM.ITEMS]
|
||||
[SETQ CLM.WORD (for X in WP thereis (EQ 'THEWORD (FM.ITEMPROP X 'ID]
|
||||
[SETQ CLM.HEADITEMS (for X on WP thereis (EQ 'LINE1 (FM.ITEMPROP (CAR X)
|
||||
'ID]
|
||||
[SETQ CLM.ABOVEITEM (for X in WP thereis (EQ 'ABOVEFIELD (FM.ITEMPROP
|
||||
X
|
||||
'ID]
|
||||
(SETQ CLM.BELOWITEM (for X in WP thereis (EQ 'BELOWFIELD (FM.ITEMPROP
|
||||
X
|
||||
'ID]
|
||||
|
||||
(* * "Finally let user move the menu window (which will open it as a nice side effect)")
|
||||
|
||||
(MOVEW CLM.MENUWINDOW (GETBOXPOSITION (WINDOWPROP CLM.MENUWINDOW 'WIDTH)
|
||||
(WINDOWPROP CLM.MENUWINDOW 'HEIGHT)
|
||||
100 100 NIL "Specify the position of the menu window"))
|
||||
(OPENW CLM.MENUWINDOW])
|
||||
|
||||
(CLMAILDISPLAY
|
||||
[LAMBDA (SLOT#) (* jrb%: "29-Oct-86 12:39")
|
||||
(LET ((MSG# (+ SLOT# CLM.HEAD#)))
|
||||
(CL:UNLESS (> MSG# (ARRAYSIZE CLM.HEADARRAY))
|
||||
(CLMAILDISPLAYMSG (CAR (ELT CLM.HEADARRAY MSG#))))])
|
||||
|
||||
(CLMAILDISPLAYMSG
|
||||
[LAMBDA (MSG) (* jrb%: "29-Oct-86 12:39")
|
||||
(if (NUMBERP MSG)
|
||||
then (TEDIT (MKATOM (CONCAT CLM.MSGDIR MSG)))
|
||||
else (ERROR "This isn't a CL message number" MSG])
|
||||
|
||||
(CLMAILSEARCH
|
||||
[LAMBDA NIL (* jrb%: "22-Aug-86 14:24")
|
||||
(LET [(MSGS (CLMAILMERGE (FM.ITEMPROP CLM.WORD 'LABEL]
|
||||
(if MSGS
|
||||
then (SETQ CLM.HEADARRAY (ARRAY (LENGTH MSGS)
|
||||
'POINTER))
|
||||
(for I from 1 to (ARRAYSIZE CLM.HEADARRAY)
|
||||
do (SETA CLM.HEADARRAY I (pop MSGS)))
|
||||
(SETQ CLM.HEAD# 1)
|
||||
(CLMAILLAST)
|
||||
else (FM.CHANGELABEL CLM.WORD "Sorry, that word isn't indexed" CLM.MENUWINDOW])
|
||||
|
||||
(CLMAILMSGHASH
|
||||
[LAMBDA (WORD) (* jrb%: "29-Oct-86 12:38")
|
||||
(if (CL:SYMBOLP WORD)
|
||||
then (GETHASHFILE WORD CLM.MSGHASH)
|
||||
else (CL:ERROR "~S is not a word" WORD])
|
||||
|
||||
(CLMAILMERGE
|
||||
[LAMBDA (STRING) (* ; "Edited 23-Jan-87 16:37 by jrb:")
|
||||
(LET ((STRINGSTREAM (CL:MAKE-STRING-INPUT-STREAM STRING))
|
||||
TERM TERMLIST (RESULT 'FIRSTTIME))
|
||||
(while (NOT (EOFP STRINGSTREAM))
|
||||
do (CL:TYPECASE (SETQ TERM (READ STRINGSTREAM))
|
||||
(CL:SYMBOL (SETQ TERMLIST (CLMAILMSGHASH TERM)))
|
||||
(LIST
|
||||
(SETQ TERMLIST NIL)
|
||||
(for TR in TERM do (SETQ TERMLIST (UNION (CLMAILMSGHASH
|
||||
TR)
|
||||
TERMLIST))))
|
||||
(T (CL:ERROR "~S is not a word or list of words" TERM)))
|
||||
(SETQ RESULT (if (EQ RESULT 'FIRSTTIME)
|
||||
then TERMLIST
|
||||
else (INTERSECTION TERMLIST RESULT)))
|
||||
(if (NULL RESULT)
|
||||
then (RETURN NIL)))
|
||||
RESULT])
|
||||
|
||||
(CLMAILREDOMENU
|
||||
[LAMBDA NIL (* jrb%: "17-May-86 00:21")
|
||||
(FM.CHANGELABEL CLM.ABOVEITEM (SUB1 CLM.HEAD#)
|
||||
CLM.MENUWINDOW)
|
||||
(FM.CHANGELABEL CLM.BELOWITEM (MAX 0 (IDIFFERENCE (ARRAYSIZE CLM.HEADARRAY)
|
||||
(IPLUS CLM.HEAD# 9)))
|
||||
CLM.MENUWINDOW)
|
||||
(for ITM in CLM.HEADITEMS bind (APTR _ CLM.HEAD#) do (FM.CHANGELABEL ITM
|
||||
(CLMAILHEADSTRING
|
||||
APTR)
|
||||
CLM.MENUWINDOW)
|
||||
(SETQ APTR (ADD1 APTR])
|
||||
|
||||
(CLMAILHEADSTRING
|
||||
[LAMBDA (HEAD#) (* jrb%: "31-Mar-86 21:19")
|
||||
|
||||
(* * If the index is outside the array, return a null string to blank out that
|
||||
slot in the menu)
|
||||
|
||||
(* * If the array element is a number, it hasn't been fetched from the hashfile
|
||||
yet; do so)
|
||||
|
||||
(* * Otherwise just return it)
|
||||
|
||||
(COND
|
||||
((GREATERP HEAD# (ARRAYSIZE CLM.HEADARRAY))
|
||||
"")
|
||||
((NUMBERP (ELT CLM.HEADARRAY HEAD#))
|
||||
(SETA CLM.HEADARRAY HEAD# (CONS (ELT CLM.HEADARRAY HEAD#)
|
||||
(GETHASHFILE (ELT CLM.HEADARRAY HEAD#)
|
||||
CLM.HEADHASH)))
|
||||
(CDR (ELT CLM.HEADARRAY HEAD#)))
|
||||
(T (CDR (ELT CLM.HEADARRAY HEAD#])
|
||||
|
||||
(CLMAILFIRST
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 19:50")
|
||||
(SETQ CLM.HEAD# 1)
|
||||
(CLMAILREDOMENU])
|
||||
|
||||
(CLMAILLAST
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:58")
|
||||
(SETQ CLM.HEAD# (MAX 1 (IDIFFERENCE (ARRAYSIZE CLM.HEADARRAY)
|
||||
9)))
|
||||
(CLMAILREDOMENU])
|
||||
|
||||
(CLMAILFWD
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 22:05")
|
||||
[SETQ CLM.HEAD# (MAX 1 (MIN (IPLUS CLM.HEAD# 10)
|
||||
(IDIFFERENCE (ARRAYSIZE CLM.HEADARRAY)
|
||||
9]
|
||||
(CLMAILREDOMENU])
|
||||
|
||||
(CLMAILBKWD
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 22:05")
|
||||
(SETQ CLM.HEAD# (MAX 1 (IDIFFERENCE CLM.HEAD# 10)))
|
||||
(CLMAILREDOMENU])
|
||||
|
||||
(CLMAILQUIT
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 19:52")
|
||||
(CLOSEHASHFILE CLM.MSGHASH)
|
||||
(CLOSEHASHFILE CLM.HEADHASH)
|
||||
(CLOSEW CLM.MENUWINDOW])
|
||||
|
||||
(MAKECMLHEADHASH
|
||||
[LAMBDA (DATAFILENAME HASHFILENAME) (* jrb%: "26-Mar-86 10:19")
|
||||
(LET ((HF (CREATEHASHFILE HASHFILENAME 'SMALLEXPR 70 4100))
|
||||
(DF (OPENSTREAM DATAFILENAME 'INPUT))
|
||||
KEY SUBJECT SENDER DATE)
|
||||
(while (NOT (EOFP DF)) do (SETQ KEY (READ DF))
|
||||
(SETQ SUBJECT (READ DF))
|
||||
(SETQ SENDER (READ DF))
|
||||
(SETQ DATE (READ DF))
|
||||
(PUTHASHFILE KEY (CONCAT SUBJECT " " SENDER " " DATE)
|
||||
HF) finally (CLOSEHASHFILE HF)
|
||||
(CLOSEF DF])
|
||||
|
||||
(MAKECMLMAILHASH
|
||||
[LAMBDA (DATAFILENAME HASHFILENAME) (* jrb%: "29-Oct-86 12:43")
|
||||
(LET ((HF (CREATEHASHFILE HASHFILENAME 'EXPR 80 23000))
|
||||
(DF (OPENSTREAM DATAFILENAME 'INPUT))
|
||||
KEY VLIST NEXTITEM)
|
||||
(SETQ KEY (READ DF))
|
||||
(CL:UNWIND-PROTECT
|
||||
(while (NOT (EOFP DF)) do (if (NUMBERP (SETQ NEXTITEM (READ DF)))
|
||||
then (push VLIST NEXTITEM)
|
||||
else (PUTHASHFILE KEY (CL:NREVERSE VLIST)
|
||||
HF)
|
||||
(SETQ KEY NEXTITEM)
|
||||
(SETQ VLIST NIL))
|
||||
finally (PUTHASHFILE KEY (CL:NREVERSE VLIST)
|
||||
HF))
|
||||
(CLOSEHASHFILE HF)
|
||||
(CLOSEF DF))])
|
||||
|
||||
(UPDATEHASHFILES
|
||||
[LAMBDA NIL (* jrb%: "28-May-86 13:32")
|
||||
|
||||
(* * First open all the files)
|
||||
|
||||
(LET [(MDF (OPENSTREAM CLM.MAILDATANAME 'INPUT))
|
||||
(HDF (OPENSTREAM CLM.HEADDATANAME 'INPUT))
|
||||
(MHF (OPENHASHFILE CLM.MAILHASHNAME 'BOTH))
|
||||
(HHF (OPENHASHFILE CLM.HEADHASHNAME 'BOTH]
|
||||
|
||||
(* * Then hash out all the new header lines)
|
||||
|
||||
(while (READP HDF) bind KEY SUBJECT VAXCFILE do (SETQ KEY (READ HDF))
|
||||
(SETQ SUBJECT (READ HDF))
|
||||
(PUTHASHFILE KEY SUBJECT HHF)
|
||||
(COPYFILE (SETQ VAXCFILE
|
||||
(CONCAT CLM.VAXCDIR
|
||||
KEY))
|
||||
(CONCAT CLM.MSGDIR KEY))
|
||||
(DELFILE VAXCFILE)
|
||||
(PRINTOUT T KEY %,)
|
||||
finally (CLOSEHASHFILE HHF)
|
||||
(CLOSEF HDF)
|
||||
(TERPRI))
|
||||
|
||||
(* * And then update the message hash file)
|
||||
|
||||
(while (READP MDF) bind (KEY _ (READ MDF))
|
||||
NEXTITEM VLIST
|
||||
do (if (NUMBERP (SETQ NEXTITEM (READ MDF)))
|
||||
then (push VLIST NEXTITEM)
|
||||
else (PUTHASHFILE KEY (NCONC (GETHASHFILE KEY MHF)
|
||||
(DREVERSE VLIST))
|
||||
MHF)
|
||||
(PRINTOUT T KEY %,)
|
||||
(SETQ KEY NEXTITEM)
|
||||
(SETQ VLIST NIL)) finally (PUTHASHFILE KEY (NCONC (GETHASHFILE KEY MHF
|
||||
)
|
||||
(DREVERSE VLIST))
|
||||
MHF)
|
||||
(CLOSEF MDF)
|
||||
(CLOSEHASHFILE MHF)
|
||||
(PRINTOUT T T "DONE!" T])
|
||||
|
||||
(CMLMAIL1
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:47")
|
||||
(CLMAILDISPLAY 1])
|
||||
|
||||
(CMLMAIL2
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:47")
|
||||
(CLMAILDISPLAY 2])
|
||||
|
||||
(CMLMAIL3
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:50")
|
||||
(CLMAILDISPLAY 3])
|
||||
|
||||
(CMLMAIL4
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:50")
|
||||
(CLMAILDISPLAY 4])
|
||||
|
||||
(CMLMAIL5
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:50")
|
||||
(CLMAILDISPLAY 5])
|
||||
|
||||
(CMLMAIL6
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:50")
|
||||
(CLMAILDISPLAY 6])
|
||||
|
||||
(CMLMAIL7
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:50")
|
||||
(CLMAILDISPLAY 7])
|
||||
|
||||
(CMLMAIL8
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:52")
|
||||
(CLMAILDISPLAY 8])
|
||||
|
||||
(CMLMAIL9
|
||||
[LAMBDA NIL (* jrb%: "31-Mar-86 21:52")
|
||||
(CLMAILDISPLAY 9])
|
||||
|
||||
(CMLMAIL0
|
||||
[LAMBDA NIL (* jrb%: " 1-Apr-86 09:35")
|
||||
(CLMAILDISPLAY 0])
|
||||
)
|
||||
|
||||
(RPAQQ CLM.MENUFORMAT
|
||||
((PROPS FORMAT ROW)
|
||||
((TYPE DISPLAY LABEL "Common Lisp Mailing List Index" FONT (MODERN 10 BOLD)
|
||||
HJUSTIFY CENTER))
|
||||
((TYPE EDITSTART LABEL "Word (implicit AND):" LINKS (EDIT THEWORD)
|
||||
FONT
|
||||
(MODERN 10 BOLD))
|
||||
(TYPE EDIT ID THEWORD LABEL ""))
|
||||
((TYPE DISPLAY LABEL "Above:" FONT (MODERN 10 BOLD))
|
||||
(TYPE DISPLAY ID ABOVEFIELD LABEL " ")
|
||||
(TYPE DISPLAY LABEL "Below:" FONT (MODERN 10 BOLD))
|
||||
(TYPE DISPLAY ID BELOWFIELD LABEL " "))
|
||||
((TYPE MOMENTARY LABEL "Search!" FONT (MODERN 10 BOLD)
|
||||
SELECTEDFN CLMAILSEARCH)
|
||||
(TYPE MOMENTARY LABEL "First!" FONT (MODERN 10 BOLD)
|
||||
SELECTEDFN CLMAILFIRST)
|
||||
(TYPE MOMENTARY LABEL "Last!" FONT (MODERN 10 BOLD)
|
||||
SELECTEDFN CLMAILLAST)
|
||||
(TYPE MOMENTARY LABEL "Forwards!" FONT (MODERN 10 BOLD)
|
||||
SELECTEDFN CLMAILFWD)
|
||||
(TYPE MOMENTARY LABEL "Backwards!" FONT (MODERN 10 BOLD)
|
||||
SELECTEDFN CLMAILBKWD)
|
||||
(TYPE MOMENTARY LABEL "Quit!" FONT (MODERN 10 BOLD)
|
||||
SELECTEDFN CLMAILQUIT))
|
||||
((TYPE MOMENTARY LABEL
|
||||
" " ID
|
||||
LINE1 SELECTEDFN CMLMAIL0))
|
||||
((TYPE MOMENTARY LABEL "" SELECTEDFN CMLMAIL1))
|
||||
((TYPE MOMENTARY LABEL "" SELECTEDFN CMLMAIL2))
|
||||
((TYPE MOMENTARY LABEL "" SELECTEDFN CMLMAIL3))
|
||||
((TYPE MOMENTARY LABEL "" SELECTEDFN CMLMAIL4))
|
||||
((TYPE MOMENTARY LABEL "" SELECTEDFN CMLMAIL5))
|
||||
((TYPE MOMENTARY LABEL "" SELECTEDFN CMLMAIL6))
|
||||
((TYPE MOMENTARY LABEL "" SELECTEDFN CMLMAIL7))
|
||||
((TYPE MOMENTARY LABEL "" SELECTEDFN CMLMAIL8))
|
||||
((TYPE MOMENTARY LABEL "" SELECTEDFN CMLMAIL9))))
|
||||
|
||||
(RPAQQ CLM.MAILHASHNAME {ERIS}<COMMONLISP>CLMAIL>MSGHASH)
|
||||
|
||||
(RPAQQ CLM.HEADHASHNAME {ERIS}<COMMONLISP>CLMAIL>HEADHASH)
|
||||
|
||||
(RPAQQ CLM.MAILDATANAME {VAXC}/user/xais/bane/clmail/newwords)
|
||||
|
||||
(RPAQQ CLM.HEADDATANAME {VAXC}/user/xais/bane/clmail/newheads)
|
||||
|
||||
(RPAQQ CLM.VAXCDIR {VAXC}/user/xais/bane/clmail/)
|
||||
|
||||
(RPAQQ CLM.MSGDIR {ERIS}<COMMONLISP>CLMAIL>)
|
||||
(DECLARE%: DOEVAL@COMPILE DONTCOPY
|
||||
|
||||
(GLOBALVARS CLM.HEADITEMS CLM.ABOVEITEM CLM.BELOWITEM CLM.WORD CLM.MSGHASH CLM.HEADHASH
|
||||
CLM.MENUWINDOW CLM.HEADARRAY CLM.HEAD#)
|
||||
)
|
||||
(PUTPROPS CLMAIL COPYRIGHT ("Venue & Xerox Corporation" 1986 1987 1990))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (2142 14793 (CLMAILSHOW 2152 . 3870) (CLMAILDISPLAY 3872 . 4146) (CLMAILDISPLAYMSG 4148
|
||||
. 4407) (CLMAILSEARCH 4409 . 5038) (CLMAILMSGHASH 5040 . 5280) (CLMAILMERGE 5282 . 6419) (
|
||||
CLMAILREDOMENU 6421 . 7262) (CLMAILHEADSTRING 7264 . 8073) (CLMAILFIRST 8075 . 8233) (CLMAILLAST 8235
|
||||
. 8474) (CLMAILFWD 8476 . 8775) (CLMAILBKWD 8777 . 8967) (CLMAILQUIT 8969 . 9171) (MAKECMLHEADHASH
|
||||
9173 . 9946) (MAKECMLMAILHASH 9948 . 10911) (UPDATEHASHFILES 10913 . 13441) (CMLMAIL1 13443 . 13576) (
|
||||
CMLMAIL2 13578 . 13711) (CMLMAIL3 13713 . 13846) (CMLMAIL4 13848 . 13981) (CMLMAIL5 13983 . 14116) (
|
||||
CMLMAIL6 14118 . 14251) (CMLMAIL7 14253 . 14386) (CMLMAIL8 14388 . 14521) (CMLMAIL9 14523 . 14656) (
|
||||
CMLMAIL0 14658 . 14791)))))
|
||||
STOP
|
||||
209
internal/envos/CMLHELP
Normal file
209
internal/envos/CMLHELP
Normal file
@@ -0,0 +1,209 @@
|
||||
(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "LISP")
|
||||
(IL:FILECREATED "15-Jun-90 11:50:26" IL:|{DSK}<usr>local>lde>lispcore>internal>library>CMLHELP.;2| 12901
|
||||
|
||||
IL:|changes| IL:|to:| (IL:VARS IL:CMLHELPCOMS)
|
||||
|
||||
IL:|previous| IL:|date:| "20-Oct-86 11:42:05"
|
||||
IL:|{DSK}<usr>local>lde>lispcore>internal>library>CMLHELP.;1|)
|
||||
|
||||
|
||||
; Copyright (c) 1985, 1986, 1990 by Venue & Xerox Corporation. All rights reserved.
|
||||
|
||||
(IL:PRETTYCOMPRINT IL:CMLHELPCOMS)
|
||||
|
||||
(IL:RPAQQ IL:CMLHELPCOMS ((IL:INITVARS (IL:CMLPATH '(IL:|{ERIS}<CommonLoops>PCL>|
|
||||
IL:{ERIS}<COMMONLISP>CODE>
|
||||
IL:{ERIS}<COMMONLISP>CLC>))
|
||||
(IL:CMLWINDOW))
|
||||
(IL:FNS IL:ADDHASHFILE IL:CMLSHOW IL:MAKECMLINDEX IL:CMLWINDOW
|
||||
IL:CMLHASHFILE)
|
||||
(IL:INITVARS (IL:CMLDEFS)
|
||||
(IL:CMLMANHASH))))
|
||||
|
||||
(IL:RPAQ? IL:CMLPATH '(IL:|{ERIS}<CommonLoops>PCL>| IL:{ERIS}<COMMONLISP>CODE>
|
||||
IL:{ERIS}<COMMONLISP>CLC>))
|
||||
|
||||
(IL:RPAQ? IL:CMLWINDOW )
|
||||
(IL:DEFINEQ
|
||||
|
||||
(il:addhashfile
|
||||
(il:lambda (il:name il:val il:harray)
|
||||
(il:puthashfile il:name (cons il:val (il:gethashfile il:name il:harray))
|
||||
il:harray)))
|
||||
|
||||
(il:cmlshow
|
||||
(il:lambda (il:name il:to il:manp) (il:* il:|lmm| " 9-May-86 17:13")
|
||||
(let
|
||||
((il:out (or il:to (il:|if| il:manp il:|then| (il:setq il:to t)
|
||||
il:|else|
|
||||
(il:openstream 'il:{scratch} 'il:both 'il:new))))
|
||||
il:window
|
||||
(il:found 0)
|
||||
il:str)
|
||||
(il:|for|
|
||||
il:hf il:|inside| (il:cmlhashfile il:manp)
|
||||
il:|do|
|
||||
(let
|
||||
((il:lst (il:gethashfile (il:u-case il:name)
|
||||
(car il:hf))))
|
||||
(il:|for|
|
||||
il:|occurence| il:|inside| (remove-duplicates il:lst :test 'il:equal)
|
||||
il:|do|
|
||||
(il:resetlst (il:resetsave nil (list 'il:closef? (il:setq il:str
|
||||
(il:|for| il:file il:|inside| (cdr il:hf)
|
||||
il:|bind| il:fn il:|when|
|
||||
(il:setq il:fn
|
||||
(il:infilep (il:packfilename
|
||||
'il:body
|
||||
(car il:|occurence|)
|
||||
'il:body il:file)))
|
||||
il:|do|
|
||||
(return (il:openstream il:fn
|
||||
'il:input
|
||||
'il:old))))))
|
||||
(il:|if| il:str il:|then| (il:* il:|we| il:|found| il:|the|
|
||||
il:|file| il:|on| il:|this| il:|dir|)
|
||||
(let ((il:end (or (il:filepos (il:|if| il:manp il:|then|
|
||||
(il:* il:|end| il:|of| il:|definition|)
|
||||
"
|
||||
@ENDDEF" il:|else| (il:* il:|dunno| il:|where| il:|it|
|
||||
il:|ends,| il:|just| il:|get| il:|the|
|
||||
il:|next| il:|one|)
|
||||
"
|
||||
(def")
|
||||
il:str
|
||||
(il:plus 4 (cadr il:|occurence|))
|
||||
nil nil nil (il:uppercasearray))
|
||||
(il:geteofptr il:str))))
|
||||
(il:selectq il:out
|
||||
(il:tedit (il:opentextstream il:str (il:|if| il:window il:|then|
|
||||
(il:createw nil
|
||||
"CML definitions")
|
||||
il:|else|
|
||||
(il:setq il:window (
|
||||
il:cmlwindow
|
||||
)))
|
||||
(cadr il:|occurence|)
|
||||
il:end
|
||||
(and (not il:manp)
|
||||
'(il:font (il:terminal 10)
|
||||
il:paralooks
|
||||
(il:tabs (48))))))
|
||||
((il:allfile t)
|
||||
(il:setq il:window (il:|if| il:window il:|then|
|
||||
(il:createw nil "CML definitions")
|
||||
il:|else|
|
||||
(il:cmlwindow)))
|
||||
(il:windowprop il:window 'il:title (il:fullname il:str))
|
||||
(il:tedit.setsel (il:setq il:str
|
||||
(il:opentextstream
|
||||
il:str nil nil nil
|
||||
(and (not il:manp)
|
||||
'(il:font (il:terminal 10)
|
||||
il:paralooks
|
||||
(il:tabs (48))))))
|
||||
(cadr il:|occurence|)
|
||||
(il:difference il:end (cadr il:|occurence|)))
|
||||
(il:opentextstream il:str il:window nil nil
|
||||
(and (not il:manp)
|
||||
'(il:font (il:terminal 10)
|
||||
il:paralooks
|
||||
(il:tabs (48))))))
|
||||
(progn (il:printout il:out "(from " (il:fullname il:str)
|
||||
")" t)
|
||||
(il:copybytes il:str il:out (cadr il:|occurence|)
|
||||
il:end)
|
||||
(il:terpri il:out)))
|
||||
(il:|add| il:found 1)))))))
|
||||
(il:|if| (not il:to)
|
||||
il:|then|
|
||||
(il:opentextstream il:out (let ((il:w (il:cmlwindow)))
|
||||
(il:windowprop il:w 'il:title "Common Lisp definition")
|
||||
il:w)
|
||||
nil nil '(il:font (il:terminal 10)
|
||||
il:paralooks
|
||||
(il:tabs (48))))
|
||||
(let ((il:pw (il:getpromptwindow (il:cmlwindow))))
|
||||
(il:clearw il:pw)
|
||||
(il:selectq il:found
|
||||
(0 (il:printout il:pw "No occurences of" il:\, il:name "."))
|
||||
(1 (il:printout il:pw il:found il:\, "occurence of" il:\, il:name "."))
|
||||
(il:printout il:pw il:found il:\, "occurences of" il:\, il:name "."))))
|
||||
il:found)))
|
||||
|
||||
(il:makecmlindex
|
||||
(il:lambda (il:pattern il:hf il:manp) (il:* il:|lmm| "28-Apr-86 11:44")
|
||||
(il:setq il:hf (il:openhashfile (or il:hf "CML.HASH")
|
||||
'il:new 40 3080))
|
||||
(il:|bind| il:str il:nf (il:readtable il:_ (il:|if| il:manp il:|then|
|
||||
(let ((il:rt (il:copyreadtable il:cmlrdtbl)))
|
||||
(il:setsyntax (il:charcode ",")
|
||||
'il:sepr il:rt)
|
||||
(il:setsyntax (il:charcode il:})
|
||||
'il:sepr il:rt)
|
||||
(il:setsyntax (il:charcode il:{)
|
||||
'il:sepr il:rt)
|
||||
il:rt)
|
||||
il:|else| il:cmlrdtbl))
|
||||
il:|for| il:file il:|in| (il:fildir (il:packfilename 'il:body il:pattern 'il:extension
|
||||
'il:*
|
||||
'il:version "" 'il:name 'il:*))
|
||||
il:|do|
|
||||
(il:resetlst (il:resetsave nil (list 'il:closef? (il:setq il:str (il:openstream
|
||||
il:file
|
||||
'il:input
|
||||
'il:old))))
|
||||
(il:setq il:nf (il:namefield il:file t))
|
||||
(il:printout t il:file t)
|
||||
(il:|while| (il:filepos (il:|if| il:manp il:|then| "
|
||||
@Def" il:|else| "
|
||||
(def")
|
||||
il:str nil nil nil nil (il:uppercasearray))
|
||||
il:|do|
|
||||
(il:readc il:str)
|
||||
(let ((il:pos (il:getfileptr il:str))
|
||||
(il:deffer (progn (il:bin il:str)
|
||||
(il:read il:str il:readtable)))
|
||||
(il:defd (il:read il:str il:readtable)))
|
||||
(il:printout t ".")
|
||||
(let ((il:defa (il:|if| (il:listp il:defd)
|
||||
il:|then|
|
||||
(il:|if| il:manp il:|then| (cadr il:defd)
|
||||
il:|else|
|
||||
(car il:defd))
|
||||
il:|else| il:defd)))
|
||||
(il:|if| (symbolp il:defa)
|
||||
il:|then|
|
||||
(il:addhashfile il:defa (list il:nf il:pos)
|
||||
il:hf)))))))))
|
||||
|
||||
(il:cmlwindow
|
||||
(il:lambda nil
|
||||
(or il:cmlwindow (il:setq il:cmlwindow (il:createw '(0 0 500 300) "CML definitions")))))
|
||||
|
||||
(il:cmlhashfile
|
||||
(il:lambda (il:manp) (il:* il:|lmm| "28-Apr-86 11:59")
|
||||
(il:|if| il:manp il:|then| (or il:cmlmanhash (il:setq il:cmlmanhash
|
||||
(list (cons (il:openhashfile '
|
||||
il:{eris}<commonlisp>manual>cml.hash
|
||||
'il:input)
|
||||
'il:{eris}<commonlisp>manual>))))
|
||||
il:|else|
|
||||
(or il:cmldefs (il:setq il:cmldefs (il:|for| il:|path| il:|inside| il:cmlpath il:|bind|
|
||||
il:file il:|when| (il:setq il:file
|
||||
(il:findfile "CML.HASH" t
|
||||
(il:mklist il:|path|))
|
||||
)
|
||||
il:|collect|
|
||||
(cons (il:openhashfile il:file 'il:input)
|
||||
il:|path|)))))))
|
||||
)
|
||||
|
||||
(IL:RPAQ? IL:CMLDEFS )
|
||||
|
||||
(IL:RPAQ? IL:CMLMANHASH )
|
||||
(IL:PUTPROPS IL:CMLHELP IL:COPYRIGHT ("Venue & Xerox Corporation" 1985 1986 1990))
|
||||
(IL:DECLARE\: IL:DONTCOPY
|
||||
(IL:FILEMAP (NIL (1218 12730 (IL:ADDHASHFILE 1231 . 1391) (IL:CMLSHOW 1393 . 8243) (IL:MAKECMLINDEX
|
||||
8245 . 11324) (IL:CMLWINDOW 11326 . 11453) (IL:CMLHASHFILE 11455 . 12728)))))
|
||||
IL:STOP
|
||||
48
internal/envos/COLORFONTHACK
Normal file
48
internal/envos/COLORFONTHACK
Normal file
@@ -0,0 +1,48 @@
|
||||
(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP")
|
||||
(FILECREATED "15-Jun-90 12:33:48" |{DSK}<usr>local>lde>lispcore>internal>library>COLORFONTHACK.;2| 2214
|
||||
|
||||
|changes| |to:| (VARS COLORFONTHACKCOMS)
|
||||
|
||||
|previous| |date:| " 6-Dec-88 21:52:32"
|
||||
|{DSK}<usr>local>lde>lispcore>internal>library>COLORFONTHACK.;1|)
|
||||
|
||||
|
||||
; Copyright (c) 1990 by Venue. All rights reserved.
|
||||
|
||||
(PRETTYCOMPRINT COLORFONTHACKCOMS)
|
||||
|
||||
(RPAQQ COLORFONTHACKCOMS ((FNS COLORFONTHACK)))
|
||||
(DEFINEQ
|
||||
|
||||
(COLORFONTHACK
|
||||
(LAMBDA NIL (* \; "Edited 6-Dec-88 21:46 by shih")
|
||||
|
||||
(* |;;| "Run through all the color fonts, replacing their bitmaps with appropriate ones.")
|
||||
|
||||
(* |;;| "Should be run *after* (COLORDISPLAY 'ON) is called.")
|
||||
|
||||
(* |;;| "")
|
||||
|
||||
(LET (FONTS FONTDESC CSINFO CSBITMAP NEWBM)
|
||||
(SETQ FONTS (FONTSAVAILABLE '* '* '* 0 '8DISPLAY))
|
||||
(FOR FONT IN FONTS DO (SETQ FONTDESC (FONTCREATE FONT))
|
||||
(SETQ CSINFO (\\GETCHARSETINFO 0 FONTDESC))
|
||||
(SETQ CSBITMAP (FETCH (CHARSETINFO CHARSETBITMAP)
|
||||
OF CSINFO))
|
||||
(IF (NEQ 8 (BITSPERPIXEL CSBITMAP))
|
||||
THEN (SETQ NEWBM (BITMAPCREATE (BITMAPWIDTH
|
||||
CSBITMAP)
|
||||
(BITMAPHEIGHT CSBITMAP)
|
||||
8))
|
||||
|
||||
(* |;;|
|
||||
"Bitblt knows how to coerce a 1 bppixel to an 8 bppixel.")
|
||||
|
||||
(BITBLT CSBITMAP NIL NIL NEWBM)
|
||||
(REPLACE (CHARSETINFO CHARSETBITMAP)
|
||||
OF CSINFO WITH NEWBM))))))
|
||||
)
|
||||
(PUTPROPS COLORFONTHACK COPYRIGHT ("Venue" 1990))
|
||||
(DECLARE\: DONTCOPY
|
||||
(FILEMAP (NIL (477 2141 (COLORFONTHACK 487 . 2139)))))
|
||||
STOP
|
||||
32
internal/envos/COMMON-LISP-PACKAGE
Normal file
32
internal/envos/COMMON-LISP-PACKAGE
Normal file
@@ -0,0 +1,32 @@
|
||||
(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP")
|
||||
(FILECREATED " 2-Feb-91 14:33:36" |{DSK}<usr>local>lde>lispcore>sources2>COMMON-LISP-PACKAGE.;7| 7002
|
||||
|
||||
|changes| |to:| (VARIABLES OLDCLSYMS *COMMON-LISP-PACKAGE*) (VARS COMMON-LISP-PACKAGECOMS) (FUNCTIONS CRUNCH-FILES CREATE-CL-PACKAGE)
|
||||
|
||||
|previous| |date:| " 2-Feb-91 13:17:24"
|
||||
|{DSK}<usr>local>lde>lispcore>sources2>COMMON-LISP-PACKAGE.;5|)
|
||||
|
||||
|
||||
; Copyright (c) 1991 by Venue Corporation. All rights reserved.
|
||||
|
||||
(PRETTYCOMPRINT COMMON-LISP-PACKAGECOMS)
|
||||
|
||||
(RPAQQ COMMON-LISP-PACKAGECOMS ((VARIABLES *COMMON-LISP-PACKAGE* NEWCLSYMS OLDCLSYMS SPLITCLSYMS) (FUNCTIONS CRUNCH-FILES FLIP-CL CREATE-CL-PACKAGE)))
|
||||
|
||||
(DEFGLOBALVAR *COMMON-LISP-PACKAGE* NIL "Place holder for the COMMON-LISP package variable")
|
||||
|
||||
(LISP:DEFPARAMETER NEWCLSYMS (QUOTE ("REAL" "BASE-CHARACTER" "EXTENDED-CHARACTER" "READTABLE-CASE" "SIMPLE-STRING" "BASE-STRING" "SIMPLE-BASE-STRING" "BROADCAST-STREAM" "CONCATENATED-STREAM" "ECHO-STREAM" "SYNONYM-STREAM" "STRING-STREAM" "FILE-STREAM" "TWO-WAY-STREAM" "UPGRADED-ARRAY-ELEMENT-TYPE" "UPGRADED-COMPLEX-PART-TYPE" "LOAD-TIME-EVAL" "REALP" "FDEFINITION" "NTH-VALUE" "DESTRUCTURING-BIND" "DEFINE-COMPILER-MACRO" "COMPILER-MACRO-FUNCTION" "COMPILER-MACROEXPAND" "COMPILER-MACROEXPAND-1" "VARIABLE-INFORMATION" "FUNCTION-INFORMATION" "DECLARATION-INFORMATION" "AUGMENT-ENVIRONMENT" "DEFINE-DECLARATION" "PARSE-MACRO" "ENCLOSE" "DECLAIM" "DYNAMIC-EXTENT" "*GENSYM-COUNTER*" "DELETE-PACKAGE" "DEFPACKAGE" "WITH-PACKAGE-ITERATOR" "LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT" "LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT" "LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT" "LEAST-POSITIVE-NORMALIZED-LONG-FLOAT" "LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT" "LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT" "LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT" "LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT" "COMPLEMENT" "MAP-INTO" "WITH-HASH-TABLE-ITERATOR" "HASH-TABLE-REHASH-SIZE" "HASH-TABLE-REHASH-THRESHOLD" "HASH-TABLE-SIZE" "HASH-TABLE-TEST" "ROW-MAJOR-AREF" "OPEN-STREAM-P" "BROADCAST-STREAM-STREAMS" "CONCATENATED-STREAM-STREAMS" "ECHO-STREAM-INPUT-STREAM" "ECHO-STREAM-OUTPUT-STREAM" "SYNONYM-STREAM-SYMBOL" "TWO-WAY-STREAM-INPUT-STREAM" "TWO-WAY-STREAM-OUTPUT-STREAM" "INTERACTIVE-STREAM-P" "STREAM-EXTERNAL-FORMAT" "*READ-EVAL*" "READTABLE-CASE" "*PRINT-READABLY*" "WITH-STANDARD-IO-SYNTAX" "PRINT-UNREADABLE-OBJECT" "WILD-PATHNAME-P" "PATHNAME-MATCH-P" "TRANSLATE-PATHNAME" "LOGICAL-PATHNAME" "TRANSLATE-LOGICAL-PATHNAME" "LOGICAL-PATHNAME-TRANSLATIONS" "LOAD-LOGICAL-PATHNAME-TRANSLATIONS" "COMPILE-FILE-PATHNAME" "FILE-STRING-LENGTH" "*LOAD-PRINT*" "*LOAD-PATHNAME*" "*LOAD-TRUENAME*" "MAKE-LOAD-FORM" "MAKE-LOAD-FORM-SAVING-SLOTS" "*COMPILE-VERBOSE" "*COMPILE-PRINT*" "*COMPILE-FILE-PATHNAME*" "*COMPILE-FILE-TRUENAME*" "LOAD-TIME-VALUE" "FUNCTION-LAMBDA-EXPRESSION" "WITH-COMPILATION-UNIT")))
|
||||
|
||||
(LISP:DEFPARAMETER OLDCLSYMS (QUOTE ("COMMON" "COMMONP" "STRING-CHAR" "STRING-CHAR-P" "INT-CHAR" "COMPILER-LET" "CHAR-BIT" "SET-CHAR-BIT" "*MODULES*" "PROVIDE" "REQUIRE" "CHAR-FONT-LIMIT" "CHAR-BITS-LIMIT" "CHAR-BITS" "CHAR-FONT" "MAKE-CHAR" "CHAR-CONTROL-BIT" "CHAR-META-BIT" "CHAR-SUPER-BIT" "CHAR-HYPER-BIT" "*BREAK-ON-WARNINGS*")) "Symbols in LISP and not in COMMON-LISP")
|
||||
|
||||
(LISP:DEFPARAMETER SPLITCLSYMS (QUOTE ("LOCALLY" "IN-PACKAGE")))
|
||||
|
||||
(LISP:DEFUN CRUNCH-FILES (FL) (LISP:WHEN (AND FL (LISP:SYMBOLP FL)) (LISP:SETQ FL (LIST FL))) (LISP:DOLIST (F FL) (LISP:FORMAT T "Crunching ~a~%" F) (FLIP-CL :LISP) (LOAD F (QUOTE ALLPROP)) (FLIP-CL :NOWHERE) (MAKEFILE F (QUOTE NEW)) (LISP:IF (LISP:PROBE-FILE (CONCAT F ".DFASL")) (LISP:COMPILE-FILE F) (FAKE-COMPILE-FILE F)) (LISP:FORMAT T "Done crunching ~a~%" F)))
|
||||
|
||||
(LISP:DEFUN FLIP-CL (WHERE) (LISP:ECASE WHERE (:LISP (LISP:RENAME-PACKAGE *COMMON-LISP-PACKAGE* "COMMON-LISP" NIL NIL) (LISP:RENAME-PACKAGE *LISP-PACKAGE* "LISP" (QUOTE ("CL")) "CL")) (:COMMON-LISP (LISP:RENAME-PACKAGE *LISP-PACKAGE* "LISP" NIL NIL) (LISP:RENAME-PACKAGE *COMMON-LISP-PACKAGE* "COMMON-LISP" (QUOTE ("CL")) "CL")) (:NOWHERE (LISP:RENAME-PACKAGE *LISP-PACKAGE* "LISP" NIL NIL) (LISP:RENAME-PACKAGE *COMMON-LISP-PACKAGE* "COMMON-LISP" NIL NIL))))
|
||||
|
||||
(LISP:DEFUN CREATE-CL-PACKAGE NIL (* |;;| "First, rename the LISP package to get its nicknames out of our way") (LISP:RENAME-PACKAGE (LISP:FIND-PACKAGE "LISP") "LISP" NIL NIL) (* |;;| "Then create the COMMON-LISP package and friends") (LISP:UNLESS (LISP:FIND-PACKAGE "COMMON-LISP") (* |;;| "For the moment, no nicknames for COMMON-LISP; FLIP-CL can be used to fix this later.") (SETQ *COMMON-LISP-PACKAGE* (LISP:MAKE-PACKAGE "COMMON-LISP" :USE NIL)) (* |;;| "We probably want to have COMMON-LISP-USER use XCL; this needs to be discussed") (LISP:MAKE-PACKAGE "COMMON-LISP-USER" :USE (QUOTE ("COMMON-LISP")))) (LET ((WEIRDTAG (CONS NIL NIL)) (OLDPROP (CONS NIL NIL)) (UNSHAREDPROP (CONS NIL NIL)) I) (* |;;| "Flag the atoms in LISP that are not going to be shared into COMMON-LISP") (LISP:DOLIST (I OLDCLSYMS) (PUT (LISP:FIND-SYMBOL I *LISP-PACKAGE*) WEIRDTAG OLDPROP)) (LISP:DOLIST (I SPLITCLSYMS) (PUT (LISP:FIND-SYMBOL I *LISP-PACKAGE*) WEIRDTAG UNSHAREDPROP)) (* |;;| "OK, crunch the external symbols in LISP. We may eventually rehome these symbols into COMMON-LISP") (LISP:DO-EXTERNAL-SYMBOLS (I *LISP-PACKAGE*) (LET ((WEIRD? (GET I WEIRDTAG)) S) (COND ((EQ WEIRD? OLDPROP) (* \; "Just leave it alone") (REMPROP I WEIRDTAG)) ((EQ WEIRD? UNSHAREDPROP) (* \; "Export a new, unshared symbol") (EXPORT (LISP:INTERN (LISP:SYMBOL-NAME I) *COMMON-LISP-PACKAGE*) *COMMON-LISP-PACKAGE*) (REMPROP I WEIRDTAG)) ((NULL WEIRD?) (* \; "Share symbol; if it's already there, shadow it") (LISP:IF (SETQ S (LISP:FIND-SYMBOL (LISP:SYMBOL-NAME I) *COMMON-LISP-PACKAGE*)) (LISP:UNLESS (EQ S I) (LISP:SHADOWING-IMPORT I *COMMON-LISP-PACKAGE*)) (IMPORT I *COMMON-LISP-PACKAGE*)) (EXPORT I *COMMON-LISP-PACKAGE*)) (T (* \; "VERY unlikely...") (ERROR "Garbage on property list during LISP->COMMON-LISP import" (CONS I WEIRD?)))))) (* |;;| "Hose out the new COMMON-LISP symbols") (LISP:DOLIST (I NEWCLSYMS) (EXPORT (LISP:INTERN I *COMMON-LISP-PACKAGE*) *COMMON-LISP-PACKAGE*)) (* |;;| "If these other packages are around, grab their symbols") (LET (P S) (LISP:WHEN (SETQ P (LISP:FIND-PACKAGE "XP")) (LISP:DOLIST (I (QUOTE ("*PRINT-PPRINT-DISPATCH*" "*PPRINT-RIGHT-MARGIN*" "*PPRINT-MISER-WIDTH*" "PPRINT-NEWLINE" "PPRINT-LOGICAL-BLOCK" "PPRINT-EXIT-IF-LIST-EXHAUSTED" "PPRINT-POP" "PPRINT-INDENT" "PPRINT-TAB" "PPRINT-FILL" "PPRINT-LINEAR" "PPRINT-TABULAR" "FORMATTER" "COPY-PPRINT-DISPATCH" "PPRINT-DISPATCH" "SET-PPRINT-DISPATCH"))) (SETQ S (LISP:FIND-SYMBOL I P)) (IMPORT S *COMMON-LISP-PACKAGE*) (EXPORT S *COMMON-LISP-PACKAGE*))) (* |;;| "This will have to be changed somewhat as we change the CONDITIONS system to comply with CLtL2") (LISP:WHEN (SETQ P (LISP:FIND-PACKAGE "CONDITIONS")) (LISP:DO-EXTERNAL-SYMBOLS (I P) (IMPORT I *COMMON-LISP-PACKAGE*) (EXPORT I *COMMON-LISP-PACKAGE*))) (FLIP-CL :COMMON-LISP))))
|
||||
(PUTPROPS COMMON-LISP-PACKAGE COPYRIGHT ("Venue Corporation" 1991))
|
||||
(DECLARE\: DONTCOPY
|
||||
(FILEMAP (NIL)))
|
||||
STOP
|
||||
1144
internal/envos/DSKTEST
Normal file
1144
internal/envos/DSKTEST
Normal file
File diff suppressed because it is too large
Load Diff
BIN
internal/envos/DSKTEST.TEDIT
Normal file
BIN
internal/envos/DSKTEST.TEDIT
Normal file
Binary file not shown.
305
internal/envos/FILEBANGER
Normal file
305
internal/envos/FILEBANGER
Normal file
@@ -0,0 +1,305 @@
|
||||
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
|
||||
(FILECREATED "14-Jun-90 21:20:39" {DSK}<usr>local>lde>lispcore>internal>library>FILEBANGER.;2 16050
|
||||
|
||||
chnges to%: (VARS FILEBANGERCOMS)
|
||||
(FNS CHECKFORZEROS)
|
||||
|
||||
previous date%: " 1-Oct-87 18:36:57" {DSK}<usr>local>lde>lispcore>internal>library>FILEBANGER.;1
|
||||
)
|
||||
|
||||
|
||||
(* ; "
|
||||
Copyright (c) 1983, 1987, 1990 by Venue & Xerox Corporation. All rights reserved.
|
||||
")
|
||||
|
||||
(PRETTYCOMPRINT FILEBANGERCOMS)
|
||||
|
||||
(RPAQQ FILEBANGERCOMS
|
||||
((FNS DOFILEBANGER DOMAKEFILEBANGER DOZEROBANGER FILEBANGER FBCOPYBYTES FBMAKETESTFILE
|
||||
MAKEBANGERWINDOW MAKEFILEBANGER ZEROBANGER SUSPEND.FILEBANGER WATCHDISKPAGES)
|
||||
(FNS BINCOM)
|
||||
(FNS CHECKFORZEROS)
|
||||
(INITVARS (FBREPEATCOUNT 4)
|
||||
(FILEBANGERS))
|
||||
(PROP FILETYPE FILEBANGER)))
|
||||
(DEFINEQ
|
||||
|
||||
(DOFILEBANGER
|
||||
[LAMBDA (DESTINATION LENGTH NOBREAK) (* ; "Edited 1-Oct-87 18:00 by Daniels")
|
||||
|
||||
(push FILEBANGERS (ADD.PROCESS `(FILEBANGER ',LENGTH ',DESTINATION T ',NOBREAK])
|
||||
|
||||
(DOMAKEFILEBANGER
|
||||
[LAMBDA (SOURCE) (* bvm%: "14-AUG-83 13:53")
|
||||
(push FILEBANGERS (ADD.PROCESS `(MAKEFILEBANGER (QUOTE %, SOURCE])
|
||||
|
||||
(DOZEROBANGER
|
||||
[LAMBDA (TESTFILE1 TESTFILE2 TMPFILENAME) (* bvm%: "14-AUG-83 13:54")
|
||||
(push FILEBANGERS (ADD.PROCESS `(ZEROBANGER (QUOTE %, TESTFILE1)
|
||||
(QUOTE %, TESTFILE2)
|
||||
(QUOTE %, TMPFILENAME])
|
||||
|
||||
(FILEBANGER
|
||||
[LAMBDA (TESTFILE DESTINATION MAKEWINDOW NOBREAK INPARMS OUTPARMS)
|
||||
(* ; "Edited 1-Oct-87 18:31 by Daniels")
|
||||
|
||||
(DECLARE (SPECVARS ERRCNT LOOPCNT))
|
||||
(RESETLST (PROG ((ERRCNT 0)
|
||||
(LOOPCNT 0)
|
||||
(OPTION (AND (NOT NOBREAK)
|
||||
'BREAK))
|
||||
MYFILE NEWFILE LASTFILE TMPFILENAME OUTPUTSTREAM)
|
||||
[COND
|
||||
[(OR (NULL TESTFILE)
|
||||
(FIXP TESTFILE))
|
||||
(SETQ TESTFILE (SETQ MYFILE (FBMAKETESTFILE TESTFILE
|
||||
(PACKFILENAME 'EXTENSION 'SOURCE
|
||||
'BODY
|
||||
(OR DESTINATION 'FILEBANGER]
|
||||
(T (SETQ TESTFILE (CL:PROBE-FILE (OR TESTFILE (RETURN "No TESTFILE supplied"]
|
||||
[COND
|
||||
[MAKEWINDOW (SETQ OUTPUTSTREAM (GETSTREAM (MAKEBANGERWINDOW TESTFILE
|
||||
"File Banger")
|
||||
'OUTPUT]
|
||||
(T (SETQ OUTPUTSTREAM (GETSTREAM T 'OUTPUT]
|
||||
(COND
|
||||
((NOT MYFILE)
|
||||
[SETQ MYFILE (CL:WITH-OPEN-FILE (TESTFILE TESTFILE :DIRECTION :INPUT)
|
||||
(COPYFILE TESTFILE (PACKFILENAME 'EXTENSION 'FBTESTER
|
||||
'VERSION NIL 'BODY TESTFILE]
|
||||
(BINCOM MYFILE TESTFILE OPTION OUTPUTSTREAM)))
|
||||
[SETQ TMPFILENAME (OR DESTINATION (PACKFILENAME 'EXTENSION 'FBTEMP 'VERSION NIL
|
||||
'BODY
|
||||
(OR MYFILE 'FILEBANGER]
|
||||
LP (PRIN1 (add LOOPCNT 1)
|
||||
OUTPUTSTREAM)
|
||||
(RESETLST [RESETSAVE (SETQ NEWFILE (OPENFILE TMPFILENAME 'OUTPUT NIL NIL OUTPARMS
|
||||
))
|
||||
'(PROGN (CLOSEF OLDVALUE]
|
||||
(CL:WITH-OPEN-FILE (MYFILE MYFILE :DIRECTION :INPUT)
|
||||
(COPYBYTES MYFILE NEWFILE)))
|
||||
(AND LASTFILE (DELFILE LASTFILE))
|
||||
[RPTQ FBREPEATCOUNT (PROGN (BLOCK)
|
||||
(PRIN1 '%. OUTPUTSTREAM)
|
||||
(COND
|
||||
((NEQ (BINCOM MYFILE NEWFILE OPTION OUTPUTSTREAM)
|
||||
T)
|
||||
(add ERRCNT 1]
|
||||
(SETQ LASTFILE NEWFILE)
|
||||
(BLOCK)
|
||||
(GO LP])
|
||||
|
||||
(FBCOPYBYTES
|
||||
[LAMBDA (INSTREAM ECHOSTREAM START) (* bvm%: "24-JUN-83 19:00")
|
||||
(SETFILEPTR INSTREAM START)
|
||||
(RPTQ 40 (\OUTCHAR ECHOSTREAM (\BIN INSTREAM])
|
||||
|
||||
(FBMAKETESTFILE
|
||||
[LAMBDA (LENGTH NAME) (* ; "Edited 1-Oct-87 18:20 by Daniels")
|
||||
|
||||
(LET ((PATHNAME))
|
||||
[CL:WITH-OPEN-FILE (FILE (OR NAME "FILEBANGER.TMP")
|
||||
:DIRECTION :OUTPUT :IF-EXISTS :NEW-VERSION)
|
||||
(SETQ PATHNAME (CL:TRUENAME FILE))
|
||||
(for I from 1 to (OR LENGTH 1000) do (\OUTCHAR FILE (RAND 32 127]
|
||||
PATHNAME])
|
||||
|
||||
(MAKEBANGERWINDOW
|
||||
[LAMBDA (FILE TYPE) (* bvm%: "12-AUG-83 13:06")
|
||||
(PROG (W)
|
||||
[RESETSAVE (TTYDISPLAYSTREAM (SETQ W (CREATEW NIL (CONCAT TYPE " for " FILE]
|
||||
(DSPFONT '(GACHA 8) W)
|
||||
[WINDOWPROP W 'CLOSEFN (FUNCTION (LAMBDA (W P)
|
||||
(AND [PROCESSP (SETQ P (WINDOWPROP W 'PROCESS]
|
||||
(PROCESS.EVAL P '(ERROR!]
|
||||
(WINDOWPROP W 'PAGEFULLFN (FUNCTION NILL))
|
||||
(RETURN W])
|
||||
|
||||
(MAKEFILEBANGER
|
||||
[LAMBDA (TESTFILE) (* bvm%: "14-AUG-83 13:56")
|
||||
(DECLARE (SPECVARS ERRCNT LOOPCNT))
|
||||
(RESETLST (PROG ((LOOPCNT 0)
|
||||
NEWFILE LASTFILE)
|
||||
[SETQ TESTFILE (LOADFROM (OR TESTFILE (RETURN "No TESTFILE supplied"]
|
||||
(MAKEBANGERWINDOW TESTFILE "MAKEFILE Banger")
|
||||
(SETQ TESTFILE (NAMEFIELD TESTFILE T))
|
||||
LP (SETQ NEWFILE (MAKEFILE TESTFILE))
|
||||
(AND (CHECKFORZEROS NEWFILE)
|
||||
(HELP "Zeros found"))
|
||||
[COND
|
||||
(LASTFILE (DELFILE LASTFILE)
|
||||
(REMPROP LASTFILE 'PAGES]
|
||||
(SETQ LASTFILE NEWFILE)
|
||||
(GO LP])
|
||||
|
||||
(ZEROBANGER
|
||||
[LAMBDA (TESTFILE1 TESTFILE2 TMPFILENAME N NOBREAK OUTPUTSTREAM)
|
||||
(* bvm%: "12-AUG-83 13:07")
|
||||
(DECLARE (SPECVARS ERRCNT LOOPCNT))
|
||||
(RESETLST (PROG ((ERRCNT 0)
|
||||
(LOOPCNT 0)
|
||||
(OPTION (AND (NOT NOBREAK)
|
||||
'BREAK))
|
||||
THISFILE NEWFILE LASTFILE)
|
||||
[SETQ THISFILE (CLOSEF (SETQ TESTFILE1 (OPENFILE (OR TESTFILE1 (RETURN
|
||||
"No TESTFILE supplied"
|
||||
))
|
||||
'INPUT]
|
||||
(RESETSAVE NIL (LIST 'CLOSEF? TESTFILE1))
|
||||
[CLOSEF (SETQ TESTFILE2 (OPENFILE (OR TESTFILE2 (RETURN "No TESTFILE supplied"))
|
||||
'INPUT]
|
||||
(RESETSAVE NIL (LIST 'CLOSEF? TESTFILE2))
|
||||
[CLOSEF (SETQ TMPFILENAME (OPENFILE (OR TMPFILENAME 'ZEROBANGER.TMP)
|
||||
'OUTPUT]
|
||||
(RESETSAVE NIL (LIST 'CLOSEF? TMPFILENAME))
|
||||
(SETQ OUTPUTSTREAM (GETSTREAM (OR OUTPUTSTREAM (MAKEBANGERWINDOW THISFILE
|
||||
"Zero Banger"))r
|
||||
'OUTPUT))
|
||||
LP (COND
|
||||
((AND N (ILESSP (add N -1)
|
||||
0))
|
||||
(RETURN ERRCNT)))
|
||||
(printout OUTPUTSTREAM (add LOOPCNT 1)
|
||||
%,)
|
||||
(OPENFILE TMPFILENAME 'BOTH 'OLD)
|
||||
(OPENFILE THISFILE 'INPUT)
|
||||
(COPYBYTES THISFILE TMPFILENAME 0 -1)
|
||||
(CLOSEF THISFILE)
|
||||
(SETFILEINFO TMPFILENAME 'LENGTH (GETFILEPTR TMPFILENAME))
|
||||
(CLOSEF TMPFILENAME) (* (AND LASTFILE (DELFILE LASTFILE)))
|
||||
(COND
|
||||
((NEQ (BINCOM THISFILE TMPFILENAME OPTION OUTPUTSTREAM)
|
||||
T)
|
||||
(add ERRCNT 1))) (* (SETQ LASTFILE NEWFILE))
|
||||
(SETQ THISFILE (COND
|
||||
((EQ THISFILE TESTFILE1)
|
||||
TESTFILE2)
|
||||
(T TESTFILE1)))
|
||||
(GO LP])
|
||||
|
||||
(SUSPEND.FILEBANGER
|
||||
[LAMBDA NIL (* bvm%: "10-AUG-83 17:39")
|
||||
(for PROC in FILEBANGERS when (AND (PROCESSP PROC)
|
||||
(NEQ PROC (THIS.PROCESS))) do (SUSPEND.PROCESS PROC))
|
||||
(CLOSEF (PROG1 PUPTRACEFILE (SETQ PUPTRACEFILE (PUPTRACE PUPTRACEFLG '(832 416 190 336])
|
||||
|
||||
(WATCHDISKPAGES
|
||||
[LAMBDA (THRESHOLD) (* bvm%: "10-AUG-83 17:11")
|
||||
(OR THRESHOLD (SETQ THRESHOLD 2000))
|
||||
(while T bind (MARGIN _ THRESHOLD)
|
||||
LASTFILE do (COND
|
||||
((ILESSP (DISKFREEPAGES)
|
||||
(IPLUS THRESHOLD MARGIN))
|
||||
(COND
|
||||
(LASTFILE (DELFILE LASTFILE)))
|
||||
(SETQ LASTFILE (CLOSEF PUPTRACEFILE))
|
||||
(SETQ PUPTRACEFILE (OPENFILE '{DSK}PUPTRACE.TMP 'OUTPUT
|
||||
'NEW))
|
||||
(SETQ MARGIN 0)))
|
||||
(BLOCK 60000])
|
||||
)
|
||||
(DEFINEQ
|
||||
|
||||
(BINCOM
|
||||
[LAMBDA (FILE1 FILE2 OPTION OUTPUTSTREAM) (* ; "Edited 1-Oct-87 18:36 by Daniels")
|
||||
|
||||
(RESETLST (PROG ((STRM1 (OPENSTREAM FILE1 'INPUT 'OLD))
|
||||
(STRM2 (OPENSTREAM FILE2 'INPUT 'OLD))
|
||||
HERE B1 B2)
|
||||
(RESETSAVE NIL (LIST 'CLOSEF STRM1))
|
||||
(RESETSAVE NIL (LIST 'CLOSEF STRM2))
|
||||
(SETQ OUTPUTSTREAM (GETSTREAM (OR OUTPUTSTREAM T)
|
||||
'OUTPUT))
|
||||
(RETURN (COND
|
||||
((IEQP (GETEOFPTR STRM1)
|
||||
(GETEOFPTR STRM2))
|
||||
(for I from 1 to (GETEOFPTR STRM1)
|
||||
do (IF (ZEROP (MOD I 5120))
|
||||
THEN (BLOCK))
|
||||
(COND
|
||||
((NEQ (SETQ B1 (\BIN STRM1))
|
||||
(SETQ B2 (\BIN STRM2)))
|
||||
(COND
|
||||
((NEQ OPTION 'NOMSG)
|
||||
(printout OUTPUTSTREAM T (FULLNAME STRM1)
|
||||
" and "
|
||||
(FULLNAME STRM2)
|
||||
" differ at byte " |.P2| (SETQ HERE
|
||||
(SUB1 (GETFILEPTR
|
||||
STRM1)))
|
||||
" (page " |.P2| (fetch (BYTEPTR PAGE)
|
||||
of HERE)
|
||||
", byte " |.P2| (fetch (BYTEPTR OFFSET)
|
||||
of HERE)
|
||||
"): ")
|
||||
(\OUTCHAR OUTPUTSTREAM B1)
|
||||
(printout OUTPUTSTREAM "[" |.P2| B1 "] vs. ")
|
||||
(\OUTCHAR OUTPUTSTREAM B2)
|
||||
(printout OUTPUTSTREAM "[" |.P2| B2 "]" T (FULLNAME
|
||||
STRM1)
|
||||
" reads:" T)
|
||||
(FBCOPYBYTES STRM1 OUTPUTSTREAM HERE)
|
||||
(printout OUTPUTSTREAM T (FULLNAME STRM2)
|
||||
" reads:" T)
|
||||
(FBCOPYBYTES STRM2 OUTPUTSTREAM HERE)
|
||||
(TERPRI T)))
|
||||
(COND
|
||||
((EQ OPTION 'BREAK)
|
||||
(HELP STRM1 STRM2)))
|
||||
(RETURN I))) finally (RETURN T)))
|
||||
(T (COND
|
||||
((NEQ OPTION 'NOMSG)
|
||||
(printout OUTPUTSTREAM T (FULLNAME STRM1)
|
||||
" has length " |.P2| (GETEOFPTR STRM1)
|
||||
", but "
|
||||
(FULLNAME STRM2)
|
||||
" has length " |.P2| (GETEOFPTR STRM2)
|
||||
T)))
|
||||
(COND
|
||||
((EQ OPTION 'BREAK)
|
||||
(HELP STRM1 STRM2)))
|
||||
(LIST (GETEOFPTR STRM1)
|
||||
(GETEOFPTR STRM2])
|
||||
)
|
||||
(DEFINEQ
|
||||
|
||||
(CHECKFORZEROS
|
||||
[LAMBDA (FILE MINZEROS) (* ; "Edited 14-Jun-90 21:18 by jds")
|
||||
(RESETLST
|
||||
(PROG ((STREAM (OPENSTREAM FILE 'INPUT))
|
||||
(%#FAILURES 0)
|
||||
N)
|
||||
(RESETSAVE NIL (LIST 'CLOSEF STREAM))
|
||||
(OR MINZEROS (SETQ MINZEROS 20))
|
||||
(replace (STREAM ENDOFSTREAMOP) of STREAM with (FUNCTION NILL))
|
||||
(printout T (FULLNAME STREAM)
|
||||
": " T)
|
||||
(do (SELECTQ (BIN STREAM)
|
||||
(NIL (RETURN))
|
||||
(0 (SETQ N 1)
|
||||
(while (ZEROP (BIN STREAM)) do (add N 1))
|
||||
(COND
|
||||
((IGREATERP N MINZEROS)
|
||||
(printout T |.P2| N " zeros starting at byte " |.P2|
|
||||
(SUB1 (IDIFFERENCE (GETFILEPTR STREAM)
|
||||
N))
|
||||
T)
|
||||
(add %#FAILURES 1))))
|
||||
NIL))
|
||||
(RETURN (AND (NOT (ZEROP %#FAILURES))
|
||||
%#FAILURES))))])
|
||||
)
|
||||
|
||||
(RPAQ? FBREPEATCOUNT 4)
|
||||
|
||||
(RPAQ? FILEBANGERS )
|
||||
|
||||
(PUTPROPS FILEBANGER FILETYPE :COMPILE-FILE)
|
||||
(PUTPROPS FILEBANGER COPYRIGHT ("Venue & Xerox Corporation" 1983 1987 1990))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (853 10546 (DOFILEBANGER 863 . 1083) (DOMAKEFILEBANGER 1085 . 1282) (DOZEROBANGER 1284
|
||||
. 1606) (FILEBANGER 1608 . 4686) (FBCOPYBYTES 4688 . 4884) (FBMAKETESTFILE 4886 . 5345) (
|
||||
MAKEBANGERWINDOW 5347 . 5899) (MAKEFILEBANGER 5901 . 6714) (ZEROBANGER 6716 . 9360) (
|
||||
SUSPEND.FILEBANGER 9362 . 9739) (WATCHDISKPAGES 9741 . 10544)) (10547 14583 (BINCOM 10557 . 14581)) (
|
||||
14584 15841 (CHECKFORZEROS 14594 . 15839)))))
|
||||
STOP
|
||||
105
internal/envos/FLOPPYTESTER
Normal file
105
internal/envos/FLOPPYTESTER
Normal file
@@ -0,0 +1,105 @@
|
||||
(FILECREATED "24-Mar-86 15:18:14" {ERIS}<LISPCORE>SOURCES>FLOPPYTESTER.;9 4308
|
||||
|
||||
changes to: (FNS STARTTEST STOPTEST KILLTEST)
|
||||
(VARS FLOPPYTESTERCOMS)
|
||||
|
||||
previous date: "20-Mar-86 21:06:46" {ERIS}<LISPCORE>SOURCES>FLOPPYTESTER.;5)
|
||||
|
||||
|
||||
(* Copyright (c) 1985, 1986 by Xerox Corporation. All rights reserved.)
|
||||
|
||||
(PRETTYCOMPRINT FLOPPYTESTERCOMS)
|
||||
|
||||
(RPAQQ FLOPPYTESTERCOMS ((* * FLOPPYTESTER -- Runs FILEBANGER on FLOPPY. *)
|
||||
(P (LOAD? (QUOTE {ERINYES}<TEST>TOOLS>FILEBANGER.DCOM)))
|
||||
(INITVARS (ALLOCATIONSW NIL))
|
||||
(FNS STARTTEST STOPTEST KILLTEST BLTALLOCS BLTALLOC)))
|
||||
(* * FLOPPYTESTER -- Runs FILEBANGER on FLOPPY. *)
|
||||
|
||||
(LOAD? (QUOTE {ERINYES}<TEST>TOOLS>FILEBANGER.DCOM))
|
||||
|
||||
(RPAQ? ALLOCATIONSW NIL)
|
||||
(DEFINEQ
|
||||
|
||||
(STARTTEST
|
||||
(LAMBDA (N) (* kbr: "24-Mar-86 15:15")
|
||||
(SETQ STARTTIME (GDATE))
|
||||
(CNDIR (QUOTE {FLOPPY}))
|
||||
(FLOPPY.FORMAT (QUOTE TEST))
|
||||
(DIRECTORY (QUOTE {FLOPPY}*))
|
||||
(BLTALLOCS)
|
||||
(for I from 1 to N do (DOFILEBANGER (PACK* (QUOTE {FLOPPY})
|
||||
(QUOTE TESTFILE)
|
||||
I)
|
||||
(RAND 10 30)))))
|
||||
|
||||
(STOPTEST
|
||||
(LAMBDA NIL (* kbr: "24-Mar-86 15:16")
|
||||
(SETQ STOPTIME (GDATE))
|
||||
(for P in FILEBANGERS when (NOT (EQ P (THIS.PROCESS))) do (SUSPEND.PROCESS P))))
|
||||
|
||||
(KILLTEST
|
||||
(LAMBDA NIL (* kbr: "22-Mar-86 17:18")
|
||||
(for P in FILEBANGERS do (DEL.PROCESS P))
|
||||
(SETQ FILEBANGERS NIL)))
|
||||
|
||||
(BLTALLOCS
|
||||
[LAMBDA NIL (* kbr: "18-Nov-85 12:32")
|
||||
(* Debugging fn. Puts up a window representation of
|
||||
allocations on floppy. *)
|
||||
(PROG (PIXELS XLENGTH YLENGTH)
|
||||
(SETQ PIXELS 5)
|
||||
(SETQ XLENGTH (ITIMES \FLOPPY.TRACKSPERCYLINDER \FLOPPY.SECTORSPERTRACK))
|
||||
(SETQ YLENGTH \FLOPPY.CYLINDERS)
|
||||
[COND
|
||||
((NULL ALLOCATIONSW)
|
||||
(SETQ ALLOCATIONSW (CREATEW (GETBOXREGION (WIDTHIFWINDOW (ITIMES PIXELS
|
||||
XLENGTH))
|
||||
(HEIGHTIFWINDOW (ITIMES PIXELS
|
||||
YLENGTH)
|
||||
T)
|
||||
NIL NIL NIL
|
||||
"Position FLOPPY ALLOCATIONS window")
|
||||
"FLOPPY ALLOCATIONS"))
|
||||
(UNADVISE (QUOTE \PFLOPPY.ALLOCATE))
|
||||
(ADVISE (QUOTE \PFLOPPY.ALLOCATE)
|
||||
(QUOTE AFTER)
|
||||
(QUOTE (COND (!VALUE (BLTALLOC !VALUE]
|
||||
(BITBLT NIL NIL NIL ALLOCATIONSW NIL NIL NIL NIL (QUOTE TEXTURE)
|
||||
(QUOTE REPLACE)
|
||||
WHITESHADE)
|
||||
(for Y from 0 to (SUB1 YLENGTH) do (for X from 0 to (SUB1 XLENGTH)
|
||||
do (BITMAPBIT ALLOCATIONSW
|
||||
(ITIMES PIXELS X)
|
||||
(ITIMES PIXELS Y)
|
||||
1)))
|
||||
(for PFALLOC in (fetch (PFLOPPYFDEV PFALLOCS) of \FLOPPYFDEV)
|
||||
when [NOT (EQUAL (fetch (PFALLOC FILENAME) of PFALLOC)
|
||||
(QUOTE (FREE]
|
||||
do (BLTALLOC PFALLOC])
|
||||
|
||||
(BLTALLOC
|
||||
[LAMBDA (PFALLOC) (* kbr: "18-Nov-85 12:21")
|
||||
(PROG (SHADE OPSHADE LEFT BOTTOM PIXELS XLENGTH)
|
||||
(SETQ PIXELS 5)
|
||||
(SETQ XLENGTH (ITIMES \FLOPPY.TRACKSPERCYLINDER \FLOPPY.SECTORSPERTRACK))
|
||||
(SETQ SHADE (COND
|
||||
((EQUAL (fetch (PFALLOC FILENAME) of PFALLOC)
|
||||
(QUOTE (FREE)))
|
||||
WHITESHADE)
|
||||
(T BLACKSHADE)))
|
||||
(SETQ OPSHADE (IDIFFERENCE BLACKSHADE SHADE))
|
||||
(for I from (fetch (PFALLOC START) of PFALLOC) to (fetch (PFALLOC END)
|
||||
of PFALLOC)
|
||||
do (SETQ LEFT (ITIMES PIXELS (IREMAINDER (SUB1 I)
|
||||
XLENGTH)))
|
||||
(SETQ BOTTOM (ITIMES PIXELS (IQUOTIENT (SUB1 I)
|
||||
XLENGTH)))
|
||||
(BLTSHADE SHADE ALLOCATIONSW LEFT BOTTOM PIXELS PIXELS (QUOTE REPLACE))
|
||||
(BLTSHADE OPSHADE ALLOCATIONSW LEFT BOTTOM 1 1 (QUOTE REPLACE])
|
||||
)
|
||||
(PUTPROPS FLOPPYTESTER COPYRIGHT ("Xerox Corporation" 1985 1986))
|
||||
(DECLARE: DONTCOPY
|
||||
(FILEMAP (NIL (745 4220 (STARTTEST 755 . 1203) (STOPTEST 1205 . 1463) (KILLTEST 1465 . 1665) (
|
||||
BLTALLOCS 1667 . 3253) (BLTALLOC 3255 . 4218)))))
|
||||
STOP
|
||||
70
internal/envos/FLOPPYWORK
Normal file
70
internal/envos/FLOPPYWORK
Normal file
@@ -0,0 +1,70 @@
|
||||
(FILECREATED "19-Jun-86 12:32:16" {ERIS}<LISPCORE>SOURCES>FLOPPYWORK.;1 3836
|
||||
|
||||
changes to: (VARS FLOPPYWORKCOMS)
|
||||
(FNS \PFLOPPY.SCAVENGE.PMPAGE.AFTER1))
|
||||
|
||||
|
||||
(* Copyright (c) 1986 by Xerox Corporation. All rights reserved.)
|
||||
|
||||
(PRETTYCOMPRINT FLOPPYWORKCOMS)
|
||||
|
||||
(RPAQQ FLOPPYWORKCOMS ((FNS \PFLOPPY.SCAVENGE.PMPAGE.AFTER1)))
|
||||
(DEFINEQ
|
||||
|
||||
(\PFLOPPY.SCAVENGE.PMPAGE.AFTER1
|
||||
(LAMBDA (PLOCATION PPMPAGE LOCATION PMPAGE) (* kbr: "19-Jun-86 12:29")
|
||||
(PROG (LENGTH TYPE FILETYPE FILEID)
|
||||
RETRY
|
||||
(COND
|
||||
((NOT (\PFLOPPY.READPAGENO LOCATION PMPAGE T))
|
||||
(* Couldn't read this LOCATION.
|
||||
Assume misformatted track. *)
|
||||
(GLOBALRESOURCE \FLOPPY.IBMD512.FLOPPYIOCB (\FLOPPY.FORMATTRACKS
|
||||
\FLOPPY.IBMD512.FLOPPYIOCB
|
||||
(
|
||||
\PFLOPPY.PAGENOTODISKADDRESS
|
||||
LOCATION)
|
||||
1 T))
|
||||
(GO RETRY)))
|
||||
(COND
|
||||
((NOT (OR (fetch (PMPAGE INTACT) of PMPAGE)
|
||||
(IEQP LOCATION \PFLOPPYLASTDATAPAGE)))
|
||||
(RETURN))) (* Force PMPAGE to be a legal marker page.
|
||||
*)
|
||||
(replace (PMPAGE SEAL) of PMPAGE with SEAL.PMPAGE)
|
||||
(replace (PMPAGE VERSION) of PMPAGE with VERSION.PMPAGE)
|
||||
(SETQ LENGTH (IPLUS LOCATION (IMINUS PLOCATION)
|
||||
-1))
|
||||
(COND
|
||||
((ZEROP LENGTH)
|
||||
(SETQ TYPE PMPAGEETYPE.FREE)
|
||||
(SETQ FILETYPE FILETYPE.FREE)
|
||||
(SETQ FILEID 0))
|
||||
(T (SETQ TYPE (fetch (PMPAGE NTYPE) of PPMPAGE))
|
||||
(SETQ FILETYPE (fetch (PMPAGE NFILETYPE) of PPMPAGE))
|
||||
(SETQ FILEID (COND
|
||||
((EQ TYPE PMPAGEETYPE.PFILELIST)
|
||||
1)
|
||||
(T 0)))))
|
||||
(replace (PMPAGE PLENGTH) of PMPAGE with LENGTH)
|
||||
(replace (PMPAGE PTYPE) of PMPAGE with TYPE)
|
||||
(replace (PMPAGE PFILETYPE) of PMPAGE with FILETYPE)
|
||||
(replace (PMPAGE PFILEID) of PMPAGE with FILEID)
|
||||
(* Fix PPMPAGE wrt PMPAGE now *)
|
||||
(replace (PMPAGE NLENGTH) of PPMPAGE with LENGTH)
|
||||
(replace (PMPAGE NTYPE) of PPMPAGE with TYPE)
|
||||
(replace (PMPAGE NFILETYPE) of PPMPAGE with FILETYPE)
|
||||
(replace (PMPAGE NFILEID) of PPMPAGE with FILEID)
|
||||
(\PFLOPPY.WRITEPAGENO PLOCATION PPMPAGE)
|
||||
(COND
|
||||
((IEQP LOCATION \PFLOPPYLASTDATAPAGE)
|
||||
(replace (PMPAGE NLENGTH) of PMPAGE with 0)
|
||||
(replace (PMPAGE NTYPE) of PMPAGE with PMPAGEETYPE.FREE)
|
||||
(replace (PMPAGE NFILETYPE) of PMPAGE with FILETYPE.FREE)
|
||||
(replace (PMPAGE NFILEID) of PMPAGE with 0)
|
||||
(\PFLOPPY.WRITEPAGENO LOCATION PMPAGE))))))
|
||||
)
|
||||
(PUTPROPS FLOPPYWORK COPYRIGHT ("Xerox Corporation" 1986))
|
||||
(DECLARE: DONTCOPY
|
||||
(FILEMAP (NIL (355 3755 (\PFLOPPY.SCAVENGE.PMPAGE.AFTER1 365 . 3753)))))
|
||||
STOP
|
||||
1
internal/envos/GIVE-AND-TAKE.STATUS
Normal file
1
internal/envos/GIVE-AND-TAKE.STATUS
Normal file
@@ -0,0 +1 @@
|
||||
"GADENER.ENVOS" "13-Apr-90 12:31:11"
|
||||
1362
internal/envos/GRAPEVINE
Normal file
1362
internal/envos/GRAPEVINE
Normal file
File diff suppressed because it is too large
Load Diff
71
internal/envos/LARGESKETCHPATCH
Normal file
71
internal/envos/LARGESKETCHPATCH
Normal file
@@ -0,0 +1,71 @@
|
||||
(DEFINE-FILE-INFO READTABLE "XCL" PACKAGE "INTERLISP")
|
||||
(FILECREATED "15-Jun-90 17:09:55"
|
||||
|{DSK}<usr>local>lde>lispcore>internal>library>LARGESKETCHPATCH.;2| 3370
|
||||
|
||||
|changes| |to:| (VARS LARGESKETCHPATCHCOMS)
|
||||
|
||||
|previous| |date:| "27-Feb-87 18:22:14"
|
||||
|{DSK}<usr>local>lde>lispcore>internal>library>LARGESKETCHPATCH.;1|)
|
||||
|
||||
|
||||
; Copyright (c) 1987, 1990 by Venue & Xerox Corporation. All rights reserved.
|
||||
|
||||
(PRETTYCOMPRINT LARGESKETCHPATCHCOMS)
|
||||
|
||||
(RPAQQ LARGESKETCHPATCHCOMS ((FNS SKIO.IMAGEBOXFN \\SKIO.IN.TOO.SMALL.TEDITP)))
|
||||
(DEFINEQ
|
||||
|
||||
(SKIO.IMAGEBOXFN
|
||||
(LAMBDA (IMAGEOBJ STREAM) (* \; "Edited 27-Feb-87 18:04 by rrb")
|
||||
(* |size| |function| |for| \a |sketch|
|
||||
|image| |object.|)
|
||||
(PROG ((SKOBJ (IMAGEOBJPROP IMAGEOBJ 'OBJECTDATUM))
|
||||
SKREG SKW SKH SCALEFACTOR)
|
||||
|
||||
(* |determine| |the| |scale| |between| |the| |sketch| |specs| |and| |the|
|
||||
|stream.|)
|
||||
|
||||
(SETQ SCALEFACTOR (QUOTIENT (|fetch| (SKETCHIMAGEOBJ SKIO.SCALE) |of| SKOBJ)
|
||||
(DSPSCALE NIL STREAM)))
|
||||
(SETQ SKW (FIXR (FQUOTIENT (|fetch| (REGION WIDTH) |of| (SETQ SKREG (|fetch| (
|
||||
SKETCHIMAGEOBJ
|
||||
SKIO.REGION)
|
||||
|of| SKOBJ)))
|
||||
SCALEFACTOR)))
|
||||
(SETQ SKH (FIXR (FQUOTIENT (|fetch| (REGION HEIGHT) |of| SKREG)
|
||||
SCALEFACTOR)))
|
||||
(RETURN (COND
|
||||
((\\SKIO.IN.TOO.SMALL.TEDITP STREAM SKH)
|
||||
|
||||
(* |special| |check| |for| |displaying| |in| \a |Tedit| |window| |that| |is|
|
||||
|less| |than| |the| |height| |of| |the| |sketch.|
|
||||
|leave| |enough| |height| |for| \a |few| |lines| |of| |text| |too.|)
|
||||
|
||||
(|create| IMAGEBOX
|
||||
XSIZE _ SKW
|
||||
YSIZE _ (IMAX 12 (DIFFERENCE (|fetch| (REGION HEIGHT)
|
||||
|of| (DSPCLIPPINGREGION NIL STREAM))
|
||||
24))
|
||||
YDESC _ 0
|
||||
XKERN _ 0))
|
||||
(T (|create| IMAGEBOX
|
||||
XSIZE _ SKW
|
||||
YSIZE _ SKH
|
||||
YDESC _ 0
|
||||
XKERN _ 0)))))))
|
||||
|
||||
(\\SKIO.IN.TOO.SMALL.TEDITP
|
||||
(LAMBDA (STREAM HEIGHT) (* \; "Edited 27-Feb-87 18:19 by rrb")
|
||||
|
||||
(* |is| |this| |stream| \a TEDIT |window| |that| |is| |smaller| |than|
|
||||
|height?|)
|
||||
|
||||
(AND (DISPLAYSTREAMP STREAM)
|
||||
(WINDOWPROP (WFROMDS STREAM)
|
||||
'TEXTOBJ)
|
||||
(GREATERP HEIGHT (|fetch| (REGION HEIGHT) |of| (DSPCLIPPINGREGION NIL STREAM))))))
|
||||
)
|
||||
(PUTPROPS LARGESKETCHPATCH COPYRIGHT ("Venue & Xerox Corporation" 1987 1990))
|
||||
(DECLARE\: DONTCOPY
|
||||
(FILEMAP (NIL (548 3269 (SKIO.IMAGEBOXFN 558 . 2806) (\\SKIO.IN.TOO.SMALL.TEDITP 2808 . 3267)))))
|
||||
STOP
|
||||
506
internal/envos/LFHACKS
Normal file
506
internal/envos/LFHACKS
Normal file
@@ -0,0 +1,506 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "XCL" BASE 10)
|
||||
(filecreated " 4-Jun-87 18:33:02" {eris}<daniels>lisp>lfhacks.\;14 29149
|
||||
|
||||
|changes| |to:| (functions determine-system-volume chase-boot-links get-boot-pointer pda-to-vp
|
||||
vol-num-containing-page vol-index-containing-page
|
||||
determine-boot-file-runs-using-pointers print-runs-attractively
|
||||
read-bad-page-table make-page-bad unmake-page-bad determine-file-runs
|
||||
vp-to-da da-to-vp show-vmem-run-table default-bft fetch-long-cardinal
|
||||
bootfile-fd write-pv-root-page max-bad-pages write-bad-page-table
|
||||
bad-page-count list-from-bpt bpt-ref list-bad-pages)
|
||||
(vars lfhackscoms)
|
||||
(variables bpt bft-pilot-boot-file bft-germ bft-emulator-microcode
|
||||
bft-diagnostic-microcode +boot-file-types+)
|
||||
(setfs bad-page-count bpt-ref)
|
||||
(commands "EC")
|
||||
(structures file-run)
|
||||
(records |PilotDiskAddress| bad-page-table bpt-entry)
|
||||
|
||||
|previous| |date:| " 3-Jun-87 18:31:15" {eris}<daniels>lisp>lfhacks.\;11)
|
||||
|
||||
|
||||
; Copyright (c) 1987 by Xerox Corporation. All rights reserved.
|
||||
|
||||
(prettycomprint lfhackscoms)
|
||||
|
||||
(rpaqq lfhackscoms ((coms (functions read-label)
|
||||
(variables bpt-label pv-root-page-label))
|
||||
(coms (variables +boot-file-types+ bft-diagnostic-microcode
|
||||
bft-emulator-microcode bft-germ bft-pilot-boot-file)
|
||||
(declare\: eval@compile eval@load dontcopy (records |PilotDiskAddress|))
|
||||
(functions vol-num-containing-page get-boot-pointer write-pv-root-page
|
||||
bootfile-fd default-bft determine-system-volume fetch-long-cardinal
|
||||
filedesc-from-name first-volume-page vp-to-da da-to-vp pda-to-vp))
|
||||
(coms (declare\: eval@compile eval@load dontcopy (records bad-page-table
|
||||
bpt-entry))
|
||||
(functions read-bad-page-table)
|
||||
(variables bpt)
|
||||
(functions bad-page-count bpt-ref list-bad-pages list-from-bpt
|
||||
make-page-bad max-bad-pages unmake-page-bad write-bad-page-table)
|
||||
(setfs bad-page-count bpt-ref))
|
||||
(coms (structures file-run)
|
||||
(functions determine-file-runs show-vmem-run-table check-pages-free
|
||||
print-runs-attractively)
|
||||
(functions chase-boot-links determine-boot-file-runs-using-pointers))
|
||||
(commands "EC")
|
||||
(variables dsktw)
|
||||
(advice |\\DoveDisk.HandleMajorError| |\\DoveDisk.TryRecalibrate|
|
||||
(\\dove.xferdisk :in \\dldisk.execute))
|
||||
(prop filetype lfhacks)))
|
||||
|
||||
(cl:defun read-label (pv-page) (let ((label (create |Label|)))
|
||||
(|\\PFTransferPage| pv-page (ncreate 'vmempagep)
|
||||
'vrr label 1)
|
||||
label))
|
||||
|
||||
|
||||
(cl:defparameter bpt-label (read-label 1) )
|
||||
|
||||
|
||||
(cl:defparameter pv-root-page-label (read-label 0) )
|
||||
|
||||
|
||||
(cl:defconstant +boot-file-types+ '((bft-diagnostic-microcode 0)
|
||||
(bft-emulator-microcode 1)
|
||||
(bft-germ 2)
|
||||
(bft-pilot-boot-file 3)) )
|
||||
|
||||
|
||||
(cl:defconstant bft-diagnostic-microcode 0)
|
||||
|
||||
|
||||
(cl:defconstant bft-emulator-microcode 1)
|
||||
|
||||
|
||||
(cl:defconstant bft-germ 2)
|
||||
|
||||
|
||||
(cl:defconstant bft-pilot-boot-file 3)
|
||||
|
||||
(declare\: eval@compile eval@load dontcopy
|
||||
(declare\: eval@compile
|
||||
|
||||
(blockrecord |PilotDiskAddress| ((head byte)
|
||||
(sector byte)
|
||||
(cylinder word)))
|
||||
)
|
||||
)
|
||||
|
||||
(cl:defun vol-num-containing-page (physical-page-number)
|
||||
(for vol-num from 0 to (sub1 (|fetch| (|PhysicalVolumeDescriptor| |subVolumeCount|) |of|
|
||||
|\\PhysVolumePage|
|
||||
))
|
||||
do (let ((sv-desc (mesaelt (fetch (|PhysicalVolumeDescriptor| |subVolumes|) of
|
||||
|\\PhysVolumePage|
|
||||
)
|
||||
|SubVolumeArray| vol-num)))
|
||||
(cl:when (and (igeq physical-page-number (fetch (|SubVolumeDesc| |pvPage|) of sv-desc))
|
||||
(ilessp physical-page-number (iplus (fetch (|SubVolumeDesc| |pvPage|)
|
||||
of sv-desc)
|
||||
(fetch (|SubVolumeDesc| |nPages|)
|
||||
of sv-desc))))
|
||||
(return vol-num)))))
|
||||
|
||||
|
||||
(cl:defun get-boot-pointer (vol-num bft) (cl:if vol-num (mesaelt (fetch (|LogicalVolumeDescriptor|
|
||||
|bootingInfo|)
|
||||
of (elt |\\DFSLogicalVolumes|
|
||||
vol-num))
|
||||
|LVBootFiles| bft)
|
||||
(mesaelt (fetch (|PhysicalVolumeDescriptor|
|
||||
|bootingInfo|) of
|
||||
|\\PhysVolumePage|
|
||||
)
|
||||
|PVBootFiles| bft)))
|
||||
|
||||
|
||||
(cl:defun write-pv-root-page nil (|\\PFTransferPage| 0 |\\PhysVolumePage| 'vvw pv-root-page-label 1))
|
||||
|
||||
|
||||
(cl:defun bootfile-fd (&optional volume-num (bft (default-bft)))
|
||||
(or volume-num
|
||||
|
||||
(* |;;| "VOLUME-NUM = NIL means use the running sysout.")
|
||||
|
||||
(cl:setf volume-num (determine-system-volume)))
|
||||
(create |FileDescriptor|
|
||||
|fileID| _ (fetch-long-cardinal (fetch (|DiskFileID| \fid)
|
||||
of (mesaelt (fetch (|LogicalVolumeDescriptor|
|
||||
|bootingInfo|)
|
||||
of (elt |\\DFSLogicalVolumes| volume-num)
|
||||
)
|
||||
|LVBootFiles| bft)))
|
||||
|volNum| _ volume-num
|
||||
|type| _ |tDiagnosticMicrocode|))
|
||||
|
||||
|
||||
(cl:defun default-bft nil (case (machinetype)
|
||||
(dove bft-germ)
|
||||
(cl:otherwise bft-diagnostic-microcode)))
|
||||
|
||||
|
||||
(cl:defun determine-system-volume nil (let* ((first-run (locf (fetch dlvmemfileinfo of \\iocbpage)))
|
||||
(boot-file-page (da-to-vp (fetch dlvmcyl of first-run)
|
||||
(fetch dlvmhead of first-run)
|
||||
(fetch dlvmsector of first-run)))
|
||||
)
|
||||
(vol-num-containing-page boot-file-page)))
|
||||
|
||||
|
||||
(cl:defun fetch-long-cardinal (ptr) (\\makenumber (\\getbase ptr 1)
|
||||
(\\getbase ptr 0)))
|
||||
|
||||
|
||||
(cl:defun filedesc-from-name (name) (let ((filespec (|\\LFFileSpec| name 'old))
|
||||
|volNum|)
|
||||
(create |FileDescriptor|
|
||||
|fileID| _ (|\\LFReadFileID|
|
||||
(|\\LFGetDirectory|
|
||||
(setq |volNum|
|
||||
(|fetch| (|ExpandedName| volnum)
|
||||
|of| (|fetch| (|DFSFileSpec|
|
||||
expandedname)
|
||||
|of| filespec))))
|
||||
(|fetch| (|DFSFileSpec| fsdirptr)
|
||||
|of| filespec))
|
||||
|volNum| _ |volNum|
|
||||
|type| _ |tLispFile|)))
|
||||
|
||||
|
||||
(cl:defun first-volume-page (vol-index) (fetch (|SubVolumeDesc| |pvPage|)
|
||||
of (mesaelt (fetch (|PhysicalVolumeDescriptor|
|
||||
|subVolumes|) of
|
||||
|\\PhysVolumePage|
|
||||
)
|
||||
|SubVolumeArray| vol-index)))
|
||||
|
||||
|
||||
(defmacro vp-to-da (vp) `(cl:locally (declare (globalvars \\dldiskshape.sectorspercylinder
|
||||
\\dldiskshape.sectorsperhead))
|
||||
(cl:multiple-value-bind (cylinder rem)
|
||||
(cl:floor ,vp \\dldiskshape.sectorspercylinder)
|
||||
(cl:multiple-value-call 'list cylinder (cl:floor rem
|
||||
\\dldiskshape.sectorsperhead
|
||||
)))))
|
||||
|
||||
|
||||
(defmacro da-to-vp (cyl hd sec) `(cl:locally (declare (globalvars \\dldiskshape.sectorspercylinder
|
||||
\\dldiskshape.sectorsperhead))
|
||||
(iplus (itimes ,cyl \\dldiskshape.sectorspercylinder)
|
||||
(itimes ,hd \\dldiskshape.sectorsperhead)
|
||||
,sec)))
|
||||
|
||||
|
||||
(defmacro pda-to-vp (pda) `(let ((pda ,pda))
|
||||
(da-to-vp (fetch (|PilotDiskAddress| cylinder) of pda)
|
||||
(fetch (|PilotDiskAddress| head) of pda)
|
||||
(fetch (|PilotDiskAddress| sector) of pda))))
|
||||
|
||||
(declare\: eval@compile eval@load dontcopy
|
||||
(declare\: eval@compile
|
||||
|
||||
(mesaarray bad-page-table ((0 127))
|
||||
bpt-entry)
|
||||
|
||||
(mesarecord bpt-entry ((page swappedfixp)))
|
||||
)
|
||||
)
|
||||
|
||||
(cl:defun read-bad-page-table (&optional (table bpt)) (|\\PFTransferPage| 1 table 'vvr bpt-label 1))
|
||||
|
||||
|
||||
(cl:defparameter bpt (let ((table (ncreate 'vmempagep)))
|
||||
(read-bad-page-table table)
|
||||
table) )
|
||||
|
||||
|
||||
(definline bad-page-count nil (fetch (|PhysicalVolumeDescriptor| |badPageCount|) of
|
||||
|\\PhysVolumePage|
|
||||
))
|
||||
|
||||
|
||||
(defmacro bpt-ref (index) `(fetch (bpt-entry page) of (mesaelt bpt bad-page-table ,index)))
|
||||
|
||||
|
||||
(cl:defun list-bad-pages (&optional read?) (and read? (read-bad-page-table))
|
||||
(cl:dotimes (i (bad-page-count)
|
||||
(terpri))
|
||||
(cl:format t "~D " (bpt-ref i))))
|
||||
|
||||
|
||||
(cl:defun list-from-bpt nil (for i from 0 to (cl:1- (bad-page-count)) collect (bpt-ref i)))
|
||||
|
||||
|
||||
(cl:defun make-page-bad (physical-page-number &optional read?)
|
||||
(and read? (read-bad-page-table))
|
||||
(let ((bp-list (list-from-bpt)))
|
||||
(cond
|
||||
((igeq (cl:list-length bp-list)
|
||||
(max-bad-pages))
|
||||
(cl:error "Too many bad pages"))
|
||||
((member physical-page-number bp-list)
|
||||
(cl:format *error-output* "~D already marked bad~%" physical-page-number))
|
||||
(t (let ((new-bp-list (cl:merge 'list (list physical-page-number)
|
||||
bp-list
|
||||
'ilessp)))
|
||||
(for page in new-bp-list as index from 0 do (cl:setf (bpt-ref index)
|
||||
page)
|
||||
finally (cl:setf (bad-page-count)
|
||||
(cl:list-length new-bp-list))
|
||||
(uninterruptably
|
||||
(write-bad-page-table)
|
||||
(write-pv-root-page))))))))
|
||||
|
||||
|
||||
(defmacro max-bad-pages nil (fetch (|PhysicalVolumeDescriptor| |maxBadPages|) of |\\PhysVolumePage|))
|
||||
|
||||
|
||||
(cl:defun unmake-page-bad (physical-page-number &optional read?)
|
||||
(and read? (read-bad-page-table))
|
||||
(let ((bp-list (list-from-bpt)))
|
||||
(cond
|
||||
((member physical-page-number bp-list)
|
||||
(cl:setf bp-list (remove physical-page-number bp-list))
|
||||
(for page in bp-list as index from 0 do (cl:setf (bpt-ref index)
|
||||
page) finally (cl:setf (bad-page-count)
|
||||
(cl:list-length
|
||||
bp-list))
|
||||
(uninterruptably
|
||||
(write-bad-page-table)
|
||||
(write-pv-root-page))))
|
||||
(t (cl:format *error-output* "~D not in bad page table~%" physical-page-number)))))
|
||||
|
||||
|
||||
(cl:defun write-bad-page-table nil (|\\PFTransferPage| 1 bpt 'vvw bpt-label 1))
|
||||
|
||||
|
||||
(cl:defsetf bad-page-count nil (new-count)
|
||||
`(cl:if (> ,new-count (max-bad-pages))
|
||||
(cl:error "Too many bad pages")
|
||||
(replace (|PhysicalVolumeDescriptor| |badPageCount|)
|
||||
of |\\PhysVolumePage| with ,new-count)))
|
||||
|
||||
|
||||
(cl:defsetf bpt-ref (index) (new-val)
|
||||
`(replace (bpt-entry page)
|
||||
of (\\addbase bpt (iplus ((openlambda (|index|)
|
||||
(or (and (ileq 0 |index|)
|
||||
(ileq |index| 127))
|
||||
(error '|indexOutOfRange|))
|
||||
(itimes 2 (idifference |index| 0)))
|
||||
,index))) with ,new-val))
|
||||
|
||||
|
||||
(cl:defstruct (file-run (:type list)
|
||||
(:conc-name "FR-")) file-page vol-page length)
|
||||
|
||||
|
||||
(cl:defun determine-file-runs (file-desc)
|
||||
(let ((file-length (|\\PFFindFileSize| file-desc))
|
||||
(page-runs nil)
|
||||
(file-page 0))
|
||||
(cl:loop (cl:push (make-file-run :file-page file-page :vol-page (|\\PFFindPageAddr| file-desc
|
||||
file-page)
|
||||
:length
|
||||
(difference (fetch (|PageGroup| |nextFilePage|)
|
||||
of (fetch (|FileDescriptor| pagegroup) of file-desc))
|
||||
file-page))
|
||||
page-runs)
|
||||
(setq file-page (fetch (|PageGroup| |nextFilePage|) of (fetch (|FileDescriptor|
|
||||
pagegroup)
|
||||
of file-desc)))
|
||||
(cl:when (>= file-page file-length)
|
||||
(return (reverse page-runs))))))
|
||||
|
||||
|
||||
(cl:defun show-vmem-run-table
|
||||
nil (let ((linkbase (locf (fetch (iocbpage dlvmemfileinfo) of \\iocbpage))))
|
||||
(cl:format t "File Page Numbers => Disk Page Numbers~%")
|
||||
(bind (vp _ 0)
|
||||
end-of-run-vp da end-of-run-da run-list
|
||||
eachtime (cl:setf da (da-to-vp (fetch (dlvmemrun dlvmcyl) of linkbase)
|
||||
(fetch (dlvmemrun dlvmhead) of linkbase)
|
||||
(fetch (dlvmemrun dlvmsector) of linkbase)))
|
||||
while (neq 0 (fetch (dlvmemrun dlfirstfilepage) of (fetch (dlvmemrun dlnextrun)
|
||||
of linkbase)))
|
||||
do (cl:setf end-of-run-vp (cl:1- (fetch (dlvmemrun dlfirstfilepage)
|
||||
of (fetch (dlvmemrun dlnextrun) of linkbase)))
|
||||
end-of-run-da
|
||||
(iplus da (idifference end-of-run-vp vp)))
|
||||
(cl:format t "[~D..~D] => [~D..~D]~A~%" vp end-of-run-vp da end-of-run-da
|
||||
(cond
|
||||
((some run-list #'(lambda (prev-addr-range)
|
||||
(and (igeq da (car prev-addr-range))
|
||||
(ileq da (cdr prev-addr-range)))))
|
||||
" <= Entirely bogus VMem run!")
|
||||
((not (eqp (idifference end-of-run-vp vp)
|
||||
(idifference end-of-run-da da)))
|
||||
" <= VMem run length doesn't match disk run length!")
|
||||
(t "")))
|
||||
(push run-list (cons da end-of-run-da))
|
||||
(cl:setf vp (fetch (dlvmemrun dlfirstfilepage) of (fetch (dlvmemrun dlnextrun)
|
||||
of linkbase))
|
||||
linkbase
|
||||
(fetch (dlvmemrun dlnextrun) of linkbase))
|
||||
finally (cl:setf end-of-run-vp (fetch (ifpage |DLLastVmemPage|) of |\\InterfacePage|))
|
||||
(cl:format t "[~D..~D] => [~D..~D]~%" vp end-of-run-vp da
|
||||
(iplus da (idifference end-of-run-vp vp))))))
|
||||
|
||||
|
||||
(cl:defun check-pages-free (vol file-runs &optional (one-at-a-time? t))
|
||||
|
||||
(* |;;| "Check that the labels for the given pages look good. Doesn't check the VAM yet.")
|
||||
(for run in file-runs
|
||||
do (with-resource |\\DFSVAMjunkPage| (if one-at-a-time?
|
||||
then (for vol-page from (fr-vol-page run) as counter
|
||||
from 1 to (fr-length run)
|
||||
do (proceed-case (|\\PFGetFreePage| vol vol-page
|
||||
|\\DFSVAMjunkPage| 1)
|
||||
(continue nil :report
|
||||
"Skip this page and continue"))
|
||||
)
|
||||
else (|\\PFGetFreePage| vol (fr-vol-page run)
|
||||
|\\DFSVAMjunkPage|
|
||||
(fr-length run))))))
|
||||
|
||||
|
||||
(cl:defun print-runs-attractively (file-runs &optional vol-num)
|
||||
(let ((offset (cl:if vol-num (first-volume-page vol-num)
|
||||
0)))
|
||||
(for run in file-runs first (cl:format t "File Page Numbers => Disk Page Numbers~%")
|
||||
do (cl:format t "[~D..~D] => [~D..~D]~%" (fr-file-page run)
|
||||
(cl:1- (+ (fr-file-page run)
|
||||
(fr-length run)))
|
||||
(+ (fr-vol-page run)
|
||||
offset)
|
||||
(cl:1- (+ (fr-vol-page run)
|
||||
offset
|
||||
(fr-length run)))))))
|
||||
|
||||
|
||||
(cl:defun chase-boot-links (fn &key vol-num (bft (default-bft))
|
||||
verbose)
|
||||
|
||||
(* |;;| "runs through the bootfile starting from the appropriate boot pointer, using the LV boot pointer is a particular volume is specified, following the boot links. FN is called on each page with a physical page number, file page number, and file id. If verbose is true, will print something every 100 pages.")
|
||||
(let ((boot-pointer (get-boot-pointer vol-num bft)))
|
||||
(cl:when (cl:zerop (fetch (|DiskFileID| |da|) of boot-pointer))
|
||||
(cl:error "No boot pointer found."))
|
||||
(with-resource |label| (bind (correct-id _ (fetch-long-cardinal (fetch (|DiskFileID| \fid)
|
||||
of boot-pointer)))
|
||||
(last-boot-file-page _ (cl:1- (|\\PFFindFileSize| (bootfile-fd
|
||||
vol-num bft))))
|
||||
(vp _ (pda-to-vp (fetch (|DiskFileID| |da|) of boot-pointer)))
|
||||
(fp _ (cl:1- (fetch (|DiskFileID| |firstPage|) of boot-pointer)))
|
||||
(buffer _ (ncreate 'vmempagep))
|
||||
file-id first (cl:when verbose (cl:princ "Processing bootfile"
|
||||
*error-output*))
|
||||
for page-num from 0
|
||||
do
|
||||
|
||||
(* |;;| "Read next page")
|
||||
|
||||
(cl:when (eql (cl:mod fp 100)
|
||||
99)
|
||||
(cl:when verbose (cl:princ "." *error-output*))
|
||||
(block))
|
||||
(let ((status (|\\PFTransferPage| vp buffer 'vrr |label| 1)))
|
||||
(cl:when (not (eq status 'ok))
|
||||
(cl:cerror "Continue processing the file"
|
||||
"Can't read page ~D: status = ~S" vp status)))
|
||||
(cl:when (not (eql (cl:1+ fp)
|
||||
(fetch (|Label| |filePage|) of |label|)))
|
||||
(cl:cerror "Continue processing the file"
|
||||
"Boot file pages not contiguous: prev = ~D, current = ~D"
|
||||
fp (fetch (|Label| |filePage|) of |label|)))
|
||||
(cl:when (not (eql (cl:setf file-id (fetch (|Label| |fileID|)
|
||||
of |label|))
|
||||
correct-id))
|
||||
(cl:cerror "Continue processing the file"
|
||||
"File id in label (~D) doesn't match boot pointer (~D)"
|
||||
file-id correct-id))
|
||||
(cl:setf fp (fetch (|Label| |filePage|) of |label|))
|
||||
(cl:funcall fn vp fp page-num file-id)
|
||||
(cond
|
||||
((and (eql -1 (fetch (|PilotDiskLabel| |BootLinkA|)
|
||||
of |label|))
|
||||
(eql -1 (fetch (|PilotDiskLabel| |BootLinkB|)
|
||||
of |label|)))
|
||||
(cl:when verbose (cl:princ "<boot link all 1's> "
|
||||
*error-output*))
|
||||
(return))
|
||||
((igeq fp last-boot-file-page)
|
||||
(cl:when verbose (cl:princ "<end of file> " *error-output*))
|
||||
(return))
|
||||
((and (cl:zerop (fetch (|PilotDiskLabel| |BootLinkA|)
|
||||
of |label|))
|
||||
(cl:zerop (fetch (|PilotDiskLabel| |BootLinkB|)
|
||||
of |label|)))
|
||||
|
||||
(* |;;| "No boot link - continue to next page")
|
||||
|
||||
(cl:incf vp))
|
||||
(t
|
||||
|
||||
(* |;;| "Have a real boot link - jump to new disk address")
|
||||
|
||||
(cl:setf vp (pda-to-vp (\\makenumber (fetch (
|
||||
|PilotDiskLabel|
|
||||
|BootLinkB|)
|
||||
of |label|)
|
||||
(fetch (|PilotDiskLabel|
|
||||
|BootLinkA|)
|
||||
of |label|))))
|
||||
(cl:when verbose (cl:format *error-output* "<Jump to ~D>" vp
|
||||
))))))
|
||||
(cl:when verbose (cl:princ "done." *error-output*)
|
||||
(cl:terpri *error-output*))))
|
||||
|
||||
|
||||
(cl:defun determine-boot-file-runs-using-pointers (&rest key-args &key vol-num (bft (default-bft))
|
||||
verbose)
|
||||
(let ((offset (first-volume-page (vol-num-containing-page (pda-to-vp (fetch (|DiskFileID| |da|)
|
||||
of (get-boot-pointer
|
||||
vol-num bft))))))
|
||||
(run-list nil)
|
||||
last-vp run)
|
||||
(cl:apply 'chase-boot-links
|
||||
#'(cl:lambda (vp fp page-num file-id)
|
||||
(declare (ignore page-num file-id))
|
||||
(cl:flet ((new-run (fp vp)
|
||||
(cl:push (cl:setf run (make-file-run :file-page fp :vol-page
|
||||
(- vp offset)
|
||||
:length 1))
|
||||
run-list)
|
||||
(cl:setf last-vp vp)))
|
||||
(cond
|
||||
((null last-vp)
|
||||
(new-run fp vp))
|
||||
((eql vp (cl:incf last-vp))
|
||||
(cl:incf (fr-length run)))
|
||||
(t (new-run fp vp))))) key-args)
|
||||
(reverse run-list)))
|
||||
|
||||
|
||||
(defcommand "EC" (expression)
|
||||
|
||||
(* |;;| "\"eval compiled\"")
|
||||
(cl:funcall (cl:compile nil `(cl:lambda nil ,expression))))
|
||||
|
||||
|
||||
(defglobalvar dsktw )
|
||||
|
||||
(xcl:reinstall-advice '|\\DoveDisk.HandleMajorError| :before '((:last (prin2 'h dsktw))))
|
||||
(xcl:reinstall-advice '|\\DoveDisk.TryRecalibrate| :before '((:last (prin2 'r dsktw))))
|
||||
(xcl:reinstall-advice '(\\dove.xferdisk :in \\dldisk.execute) :after
|
||||
'((:last (if (eq !value 'ok)
|
||||
then
|
||||
(prin2 '+ dsktw)
|
||||
else
|
||||
(prin2 '- dsktw)))))
|
||||
|
||||
(putprops lfhacks filetype :compile-file)
|
||||
(putprops lfhacks copyright ("Xerox Corporation" 1987))
|
||||
(declare\: dontcopy
|
||||
(filemap (nil)))
|
||||
stop
|
||||
| ||||