1
0
mirror of synced 2026-04-25 20:01:51 +00:00

massive reorganization

This commit is contained in:
Larry Masinter
2020-11-15 19:22:14 -08:00
parent 6a758f1aa9
commit 6424116dc9
9681 changed files with 103 additions and 347608 deletions

187
library/DATABASEFNS Normal file
View File

@@ -0,0 +1,187 @@
(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED " 3-May-93 18:44:36" "{DSK}<project>lfg>parser>DATABASEFNS.;4" 17283
changes to%: (FNS DUMPDB)
previous date%: " 7-Jul-92 09:57:14" "{DSK}<project>lfg>parser>DATABASEFNS.;3")
(* ; "
Copyright (c) 1986, 1990, 1991, 1992, 1993 by Xerox Corporation. All rights reserved.
")
(PRETTYCOMPRINT DATABASEFNSCOMS)
(RPAQQ DATABASEFNSCOMS
[(* Does automatic Masterscope database maintenance)
[DECLARE%: FIRST (P (VIRGINFN 'LOAD T)
(MOVD? 'LOAD 'OLDLOAD)
(VIRGINFN 'LOADFROM T)
(MOVD? 'LOADFROM 'OLDLOADFROM)
(VIRGINFN 'MAKEFILE T)
(MOVD? 'MAKEFILE 'OLDMAKEFILE]
(FNS DBFILE DBFILE1 DBFILE2 LOAD LOADFROM MAKEFILE)
(ADDVARS (LINKEDFNS OLDLOAD))
(P (RELINK 'MAKEFILES))
(FNS DUMPDB LOADDB MAKEDB)
(PROP PROPTYPE DATABASE)
(INITVARS (LOADDBFLG 'ASK)
(SAVEDBFLG 'ASK))
(ADDVARS (MAKEFILEFORMS (MAKEDB FILE)))
(* To permit MSHASH interface)
(INITVARS (MSHASHFILENAME)
(MSFILETABLE))
(LOCALVARS . T)
(BLOCKS (LOADDB LOADDB DBFILE DBFILE1 DBFILE2 (NOLINKFNS . T)))
(DECLARE%: EVAL@COMPILE DONTCOPY (P (RESETSAVE DWIMIFYCOMPFLG T])
(* Does automatic Masterscope database maintenance)
(DECLARE%: FIRST
(VIRGINFN 'LOAD T)
(MOVD? 'LOAD 'OLDLOAD)
(VIRGINFN 'LOADFROM T)
(MOVD? 'LOADFROM 'OLDLOADFROM)
(VIRGINFN 'MAKEFILE T)
(MOVD? 'MAKEFILE 'OLDMAKEFILE)
)
(DEFINEQ
(DBFILE
[LAMBDA (FILE ASKFLAG) (* lmm "29-APR-81 20:27")
(* Finds a database file that corresponds to the contents of FILE.
 Looks in directory of FILE, and also in the directory that file originally came
 from, if it was copied. Returns NIL if no database file is found, else
 (fulldbfilename . filedates)%, where filedates identifies the name under which
 the file that the database corresponds to is currently known.
 -
 If FILE doesn't have a version, tries to get database for version in core, or
 most recent version if it hasn't been loaded)
(DECLARE (GLOBALVARS COMPILE.EXT FILERDTBL))
[COND
((NULL FILE)
(SETQ FILE (INPUT)))
((EQ (FILENAMEFIELD FILE 'EXTENSION)
COMPILE.EXT) (* Map compiled file into symbolic
 name)
(SETQ FILE (PACKFILENAME 'EXTENSION NIL 'VERSION NIL 'BODY FILE]
(PROG [(FILEDATES (COND
[(AND (NULL (FILENAMEFIELD FILE 'VERSION))
(CAR (GETPROP (NAMEFIELD FILE)
'FILEDATES]
([SETQ FILE (COND
(ASKFLAG (INFILEP FILE))
(T (FINDFILE FILE]
(CONS (FILEDATE FILE)
FILE]
(AND FILEDATES (RETURN (DBFILE1 FILE FILEDATES])
(DBFILE1
[LAMBDA (F FILEDATES) (* jds "25-Sep-86 20:04")
(* Searches databases based on F to find one that matches FILEDATES.
 Returns (dbfilename . filedates) if successful.
 For efficiency, checks the most likely highest version first, before doing the
 directory enumeration)
(PROG ((HIGHEST (INFILEP (PACKFILENAME 'EXTENSION 'DATABASE 'VERSION 'NIL 'BODY F)))
DBF)
(RETURN (COND
((NULL HIGHEST) (* ;
 "No file matches the name we gave, so punt.")
NIL)
((SETQ DBF (DBFILE2 HIGHEST FILEDATES)) (* ; "The most recent one matches.")
(CONS DBF FILEDATES))
(T (* ;
 "Hunt back thru back versions looking for a matching one.")
(for DBF in (REMOVE HIGHEST (FILDIR (PACKFILENAME 'EXTENSION 'DATABASE
'VERSION
'*
'BODY F)))
when (SETQ DBF (DBFILE2 DBF FILEDATES))
do (RETURN (CONS DBF FILEDATES])
(DBFILE2
[LAMBDA (DBF FILEDATES) (* ; "Edited 28-Nov-90 12:42 by rmk:")
(* T if DBF is the name of the
 database file matching FILEDATES)
[RESETSAVE (SETQ DBF (OPENSTREAM DBF 'INPUT))
'(PROGN (CLOSEF? OLDVALUE]
(* The close is done in the LOADDB RESETLST, except when a candidate file isn't
 correct)
(SKREAD DBF) (* Skip LOAD error message)
(COND
([STREQUAL (CAR FILEDATES)
(CAR (READ DBF (FIND-READTABLE "INTERLISP"]
DBF)
(T (CLOSEF DBF)
NIL])
(LOAD
[LAMBDA (FILE LDFLG PRINTFLG) (* lmm "29-APR-81 20:27")
(SETQ FILE (OLDLOAD FILE LDFLG PRINTFLG))
(COND
((NEQ LDFLG 'SYSLOAD)
(LOADDB FILE T)))
FILE])
(LOADFROM
[LAMBDA (FILE FNS LDFLG) (* lmm "29-APR-81 20:27")
(SETQ FILE (OLDLOADFROM FILE FNS LDFLG))
(LOADDB FILE T)
FILE])
(MAKEFILE
[LAMBDA (FILE OPTIONS REPRINTFNS SOURCEFILE) (* lmm "29-APR-81 20:27")
(SETQ FILE (OLDMAKEFILE FILE OPTIONS REPRINTFNS SOURCEFILE))
(DUMPDB FILE T)
FILE])
)
(ADDTOVAR LINKEDFNS OLDLOAD)
(RELINK 'MAKEFILES)
(DEFINEQ
(DUMPDB
[LAMBDA (FILE PROPFLG) (* ; "Edited 3-May-93 18:44 by rmk:")
(* Dumps a Masterscope database for functions in FILE.
 Checks the DATABASE property if PROPFLG=T which is how the MAKEFILE advice
 calls it. A user-level call would default PROPFLG to NIL.)
(* The FILE check is because MAKEFILE returns a list when it doesn't understand
 the options)
(DECLARE (GLOBALVARS MSHASHFILENAME MSFILETABLE SAVEDBFLG))
(AND FILE (OR (LITATOM FILE)
(STRINGP FILE))
(PROG (DBFILE (FL (NAMEFIELD FILE))
FNS
(FFNS (FILEFNSLST FILE)))
(COND
(FFNS)
((AND MSFILETABLE (TESTTABLE FL (CADR MSFILETABLE)))
(* Always dump if this is a known
 file)
(SETQ PROPFLG NIL))
(T (COND
(PROPFLG (/REMPROP FL 'DATABASE))
(T (printout T T FILE " has no functions." T)))
(RETURN)))
(SETQ FNS FFNS)
(COND
([OR (NULL PROPFLG)
(EQ (GETPROP FL 'DATABASE)