Rmk37 prc menu shows superset relations (#764)
* PSEUDOHOSTS: GETHOSTINFO of pseudohost goes to true host * CMLPATHNAME: Remove unused PARSE-NAMESTRING1 Avoid stumbling on it in future maintenance. Also, remake filemap for functions and defmacros * SAMEDIR, COMPAREDIRECTORIES: FILENAMEFIELD → FILENAMEFIELD.STRING in a few places. No need to hash atoms * LLCHAR: expose $$READONLY in inpname I.s.opr * GITFNS: prc menu shows superset relations * GITFNS: Sort the prc menu * EDITINTERFACE: Better edit-date management * PRETTYFILEINDEX: Destination can be any imagestream, not just display * TEDIT-PF-SEE: Use SEE instead of COPYTO IMAGESTREAM to get better formatting of PRETTYFILEINDEX
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED "14-Jan-2022 11:40:58"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>sources>CMLPATHNAME.;2 41496
|
||||
(FILECREATED "25-Apr-2022 20:29:09"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>sources>CMLPATHNAME.;3 32421
|
||||
|
||||
:PREVIOUS-DATE "28-Sep-90 15:14:19"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>sources>CMLPATHNAME.;1)
|
||||
:CHANGES-TO (VARS CMLPATHNAMECOMS)
|
||||
|
||||
:PREVIOUS-DATE "14-Jan-2022 11:40:58"
|
||||
{DSK}<Users>kaplan>Local>medley3.5>my-medley>sources>CMLPATHNAME.;2)
|
||||
|
||||
|
||||
(* ; "
|
||||
@@ -21,14 +23,14 @@ Copyright (c) 1986-1988, 1990 by Venue & Xerox Corporation.
|
||||
(COMS
|
||||
(* ;; "useful macros")
|
||||
|
||||
(FUNCTIONS %%WILD-NAME %%COMPONENT-STRING %%UNPACKFILE1))
|
||||
(FUNCTIONS %%WILD-NAME %%COMPONENT-STRING))
|
||||
(STRUCTURES PATHNAME DIRECTORY-COMPONENT)
|
||||
(FNS %%PRINT-PATHNAME CL:MAKE-PATHNAME %%PRINT-DIRECTORY-COMPONENT)
|
||||
(FUNCTIONS CL:PATHNAME-HOST CL:PATHNAME-DEVICE CL:PATHNAME-DIRECTORY CL:PATHNAME-NAME
|
||||
CL:PATHNAME-TYPE CL:PATHNAME-VERSION)
|
||||
(FNS PATHNAME CL:MERGE-PATHNAMES FILE-NAME CL:HOST-NAMESTRING CL:ENOUGH-NAMESTRING
|
||||
%%NUMERIC-STRING-P)
|
||||
(FUNCTIONS CL:NAMESTRING CL:PARSE-NAMESTRING PARSE-NAMESTRING1 CL:TRUENAME)
|
||||
(FUNCTIONS CL:NAMESTRING CL:PARSE-NAMESTRING CL:TRUENAME)
|
||||
(FUNCTIONS %%MAKE-PATHNAME)
|
||||
(FUNCTIONS %%PATHNAME-EQUAL %%DIRECTORY-COMPONENT-EQUAL)
|
||||
(FUNCTIONS %%INITIALIZE-DEFAULT-PATHNAME)
|
||||
@@ -39,12 +41,11 @@ Copyright (c) 1986-1988, 1990 by Venue & Xerox Corporation.
|
||||
(FUNCTIONS INTERLISP-NAMESTRING UNPACKPATHNAME.STRING))
|
||||
(FUNCTIONS CL:FILE-NAMESTRING CL:DIRECTORY-NAMESTRING)
|
||||
(DECLARE%: DONTEVAL@LOAD DOCOPY (P (%%INITIALIZE-DEFAULT-PATHNAME)))
|
||||
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
|
||||
(NLAML)
|
||||
(LAMA
|
||||
CL:ENOUGH-NAMESTRING
|
||||
CL:MERGE-PATHNAMES
|
||||
CL:MAKE-PATHNAME])
|
||||
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
|
||||
(ADDVARS (NLAMA)
|
||||
(NLAML)
|
||||
(LAMA CL:ENOUGH-NAMESTRING CL:HOST-NAMESTRING FILE-NAME CL:MERGE-PATHNAMES
|
||||
PATHNAME %%PRINT-DIRECTORY-COMPONENT CL:MAKE-PATHNAME %%PRINT-PATHNAME])
|
||||
|
||||
|
||||
|
||||
@@ -67,19 +68,6 @@ Copyright (c) 1986-1988, 1990 by Venue & Xerox Corporation.
|
||||
(DEFMACRO %%COMPONENT-STRING (COMPONENT)
|
||||
`(MKSTRING (OR ,COMPONENT "")))
|
||||
|
||||
(DEFMACRO %%UNPACKFILE1 (NAM ST END FILE PACKFLG ONEFIELDFLG VAL)
|
||||
`[if (NOT ,ONEFIELDFLG)
|
||||
then [SETQ ,VAL (CONS (COND
|
||||
(,PACKFLG (SUBATOM ,FILE ,ST ,END))
|
||||
(T (OR (SUBSTRING ,FILE ,ST ,END)
|
||||
"")))
|
||||
(CONS ,NAM ,VAL]
|
||||
elseif (EQMEMB ,NAM ,ONEFIELDFLG)
|
||||
then (RETURN (COND
|
||||
(,PACKFLG (SUBATOM ,FILE ,ST ,END))
|
||||
(T (OR (SUBSTRING ,FILE ,ST ,END)
|
||||
""])
|
||||
|
||||
(CL:DEFSTRUCT (PATHNAME (:CONC-NAME %%PATHNAME-)
|
||||
(:PRINT-FUNCTION %%PRINT-PATHNAME)
|
||||
(:CONSTRUCTOR %%%%MAKE-PATHNAME)
|
||||
@@ -359,168 +347,6 @@ Copyright (c) 1986-1988, 1990 by Venue & Xerox Corporation.
|
||||
(MKATOM VERSION)))]
|
||||
END)))
|
||||
|
||||
(CL:DEFUN PARSE-NAMESTRING1 (FILE)
|
||||
|
||||
(* ;;; "Given a string or atom representation of a file name, unpack it into its component parts")
|
||||
|
||||
(* ;;; "crudely hacked from UNPACKFILENAME.STRING")
|
||||
|
||||
(PROG ((POS 1)
|
||||
TEM TEM2 BEYONDNAME BEYONDEXT VAL CODE HOSTP SUBDIREND PACKFLG DIRFLG ONEFIELDFLG)
|
||||
(COND
|
||||
((NULL FILE)
|
||||
(RETURN (CONS (SUB1 POS)
|
||||
NIL)))
|
||||
((OR (LITATOM FILE)
|
||||
(CL:STRINGP FILE)
|
||||
(NUMBERP FILE)))
|
||||
[(type? STREAM FILE) (* ;
|
||||
"For streams, use full name. If anonymous, fake it")
|
||||
(SETQ FILE (OR (ffetch FULLFILENAME of FILE)
|
||||
(RETURN (CONS (SUB1 POS)
|
||||
(LIST 'NAME FILE]
|
||||
(T (\ILLEGAL.ARG FILE)))
|
||||
(COND
|
||||
((SELCHARQ (NTHCHARCODE FILE 1)
|
||||
({ (* ; "normal use in Interlisp-D")
|
||||
(SETQ TEM (SUB1 (OR (\UPF.NEXTPOS (CHARCODE })
|
||||
FILE 2)
|
||||
0))))
|
||||
(%[ (* ;
|
||||
"some Xerox and Arpanet systems use `[' for host")
|
||||
(SETQ TEM (SUB1 (OR (\UPF.NEXTPOS (CHARCODE "]")
|
||||
FILE 2)
|
||||
0))))
|
||||
(%( (* ;
|
||||
"this is the standard for Xerox product file servers")
|
||||
(SETQ TEM (SUB1 (OR (\UPF.NEXTPOS (CHARCODE ")")
|
||||
FILE 2)
|
||||
0))))
|
||||
NIL)
|
||||
(%%UNPACKFILE1 'HOST 2 TEM FILE PACKFLG ONEFIELDFLG VAL)
|
||||
[COND
|
||||
((EQ TEM -1)
|
||||
(RETURN (CONS (SUB1 POS)
|
||||
(DREVERSE VAL]
|
||||
(SETQ POS (IPLUS TEM 2))
|
||||
(SETQ HOSTP T)))
|
||||
(COND
|
||||
((SETQ TEM (LASTCHPOS (CHARCODE %:)
|
||||
FILE POS))
|
||||
(SETQ TEM (SUB1 TEM))
|
||||
(%%UNPACKFILE1 'DEVICE POS TEM FILE PACKFLG ONEFIELDFLG VAL)
|
||||
(SETQ POS (PLUS TEM 2))
|
||||
(SETQ HOSTP T)))
|
||||
(COND
|
||||
[(EQ DIRFLG 'RETURN)
|
||||
(LET ((TYPE 'DIRECTORY)
|
||||
(START (SELCHARQ (NTHCHARCODE FILE POS)
|
||||
(NIL (RETURN (CONS (SUB1 POS)
|
||||
(DREVERSE VAL))))
|
||||
((/ <)
|
||||
(ADD1 POS))
|
||||
POS))
|
||||
END)
|
||||
(SETQ END (SELCHARQ (NTHCHARCODE FILE -1)
|
||||
((/ >)
|
||||
[COND
|
||||
((AND (EQ START POS)
|
||||
(NOT HOSTP)) (* ;
|
||||
"Didn't start with a directory delimiter, but it ends with one, so this must be a subdirectory")
|
||||
(SETQ TYPE 'SUBDIRECTORY]
|
||||
-2)
|
||||
(PROGN -1)))
|
||||
(%%UNPACKFILE1 TYPE START END FILE PACKFLG ONEFIELDFLG VAL))
|
||||
(RETURN (CONS (SUB1 POS)
|
||||
(DREVERSE VAL]
|
||||
((SELCHARQ (NTHCHARCODE FILE POS)
|
||||
(/ (* ;
|
||||
"unix and the `xerox standard' use / for delimiter")
|
||||
(SETQ TEM (LASTCHPOS (CHARCODE /)
|
||||
FILE
|
||||
(ADD1 POS))))
|
||||
((< >) (* ;
|
||||
"Interlisp-D and most other Xerox systems, and Tops-20/Tenex use <>. Jericho uses >>")
|
||||
(SETQ TEM (LASTCHPOS (CHARCODE >)
|
||||
FILE
|
||||
(ADD1 POS))))
|
||||
NIL)
|
||||
(%%UNPACKFILE1 'DIRECTORY (ADD1 POS)
|
||||
(SUB1 TEM)
|
||||
FILE PACKFLG ONEFIELDFLG VAL)
|
||||
(SETQ POS (ADD1 TEM))
|
||||
(SETQ HOSTP T)))
|
||||
[OR (SETQ CODE (NTHCHARCODE FILE (SETQ TEM POS)))
|
||||
(RETURN (CONS (SUB1 POS)
|
||||
(DREVERSE VAL]
|
||||
NAMELP
|
||||
(SELCHARQ CODE
|
||||
((%. ! ; NIL) (* ;
|
||||
"NAME and SUBDIRECTORY fields definitely terminated by now")
|
||||
(COND
|
||||
((AND (EQ CODE (CHARCODE %.))
|
||||
(NOT BEYONDNAME)
|
||||
(SETQ TEM2 (STRPOS "." FILE (ADD1 TEM)))
|
||||
(SETQ TEM2 (NTHCHAR FILE (ADD1 TEM2)))
|
||||
(NOT (FIXP TEM2)))
|
||||
|
||||
(* ;; "If there's another dot followed by something other than a numeric extension, then ignore this dot, since we'll get another chance")
|
||||
|
||||
(GO NEXTCHAR)))
|
||||
[COND
|
||||
(SUBDIREND (%%UNPACKFILE1 'SUBDIRECTORY POS (SUB1 SUBDIREND)
|
||||
FILE PACKFLG ONEFIELDFLG VAL)
|
||||
(SETQ POS (ADD1 SUBDIREND))
|
||||
(SETQ SUBDIREND)
|
||||
(COND
|
||||
((AND (NULL CODE)
|
||||
(EQ POS TEM)) (* ;
|
||||
"Nothing follows the subdirectory; null name is NOT implied")
|
||||
(RETURN (CONS (SUB1 POS)
|
||||
(DREVERSE VAL]
|
||||
(%%UNPACKFILE1 [COND
|
||||
((NOT BEYONDNAME)
|
||||
(COND
|
||||
((NEQ CODE (CHARCODE %.))
|
||||
(SETQQ BEYONDEXT ;)))
|
||||
(SETQQ BEYONDNAME NAME))
|
||||
((NOT BEYONDEXT)
|
||||
(SETQ BEYONDEXT (COND
|
||||
((NEQ CODE (CHARCODE %.))
|
||||
';)
|
||||
(T T)))
|
||||
'TYPE)
|
||||
(T (SELCHARQ (AND (EQ BEYONDEXT ';)
|
||||
(NTHCHARCODE FILE POS))
|
||||
(P 'PROTECTION)
|
||||
(A (add POS 1)
|
||||
'ACCOUNT)
|
||||
((T S)
|
||||
'TEMPORARY)
|
||||
'VERSION]
|
||||
POS
|
||||
(SUB1 TEM)
|
||||
FILE PACKFLG ONEFIELDFLG VAL)
|
||||
[COND
|
||||
((NULL CODE) (* ; "End of string")
|
||||
(RETURN (CONS (SUB1 POS)
|
||||
(DREVERSE VAL]
|
||||
(SETQ POS (ADD1 TEM)))
|
||||
(%' (* ; "Quoter")
|
||||
(add TEM 1))
|
||||
((/ >) (* ;
|
||||
"Subdirectory terminating character")
|
||||
(COND
|
||||
((AND (NOT HOSTP)
|
||||
(NOT BEYONDNAME)
|
||||
DIRFLG) (* ;
|
||||
"Ok to treat this as a subdirectory")
|
||||
(SETQ SUBDIREND TEM))))
|
||||
NIL)
|
||||
NEXTCHAR
|
||||
(SETQ CODE (NTHCHARCODE FILE (add TEM 1)))
|
||||
(GO NAMELP)))
|
||||
|
||||
(CL:DEFUN CL:TRUENAME (PATHNAME)
|
||||
|
||||
(* ;;; "Return the pathname for the actual file described by the pathname. An error is signaled if no such file exists. PATHNAME can be a pathname, string, symbol, or stream. Synonym streams are followed to their sources")
|
||||
@@ -673,7 +499,8 @@ Copyright (c) 1986-1988, 1990 by Venue & Xerox Corporation.
|
||||
|
||||
(ADDTOVAR NLAML )
|
||||
|
||||
(ADDTOVAR LAMA CL:ENOUGH-NAMESTRING CL:MERGE-PATHNAMES CL:MAKE-PATHNAME)
|
||||
(ADDTOVAR LAMA CL:ENOUGH-NAMESTRING CL:HOST-NAMESTRING FILE-NAME CL:MERGE-PATHNAMES PATHNAME
|
||||
%%PRINT-DIRECTORY-COMPONENT CL:MAKE-PATHNAME %%PRINT-PATHNAME)
|
||||
)
|
||||
(PRETTYCOMPRINT CMLPATHNAMECOMS)
|
||||
|
||||
@@ -685,14 +512,14 @@ Copyright (c) 1986-1988, 1990 by Venue & Xerox Corporation.
|
||||
(COMS
|
||||
(* ;; "useful macros")
|
||||
|
||||
(FUNCTIONS %%WILD-NAME %%COMPONENT-STRING %%UNPACKFILE1))
|
||||
(FUNCTIONS %%WILD-NAME %%COMPONENT-STRING))
|
||||
(STRUCTURES PATHNAME DIRECTORY-COMPONENT)
|
||||
(FNS %%PRINT-PATHNAME CL:MAKE-PATHNAME %%PRINT-DIRECTORY-COMPONENT)
|
||||
(FUNCTIONS CL:PATHNAME-HOST CL:PATHNAME-DEVICE CL:PATHNAME-DIRECTORY CL:PATHNAME-NAME
|
||||
CL:PATHNAME-TYPE CL:PATHNAME-VERSION)
|
||||
(FNS PATHNAME CL:MERGE-PATHNAMES FILE-NAME CL:HOST-NAMESTRING CL:ENOUGH-NAMESTRING
|
||||
%%NUMERIC-STRING-P)
|
||||
(FUNCTIONS CL:NAMESTRING CL:PARSE-NAMESTRING PARSE-NAMESTRING1 CL:TRUENAME)
|
||||
(FUNCTIONS CL:NAMESTRING CL:PARSE-NAMESTRING CL:TRUENAME)
|
||||
(FUNCTIONS %%MAKE-PATHNAME)
|
||||
(FUNCTIONS %%PATHNAME-EQUAL %%DIRECTORY-COMPONENT-EQUAL)
|
||||
(FUNCTIONS %%INITIALIZE-DEFAULT-PATHNAME)
|
||||
@@ -703,33 +530,33 @@ Copyright (c) 1986-1988, 1990 by Venue & Xerox Corporation.
|
||||
(FUNCTIONS INTERLISP-NAMESTRING UNPACKPATHNAME.STRING))
|
||||
(FUNCTIONS CL:FILE-NAMESTRING CL:DIRECTORY-NAMESTRING)
|
||||
(DECLARE%: DONTEVAL@LOAD DOCOPY (P (%%INITIALIZE-DEFAULT-PATHNAME)))
|
||||
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
|
||||
(ADDVARS (NLAMA)
|
||||
(NLAML)
|
||||
(LAMA CL:ENOUGH-NAMESTRING CL:HOST-NAMESTRING FILE-NAME CL:MERGE-PATHNAMES
|
||||
PATHNAME %%PRINT-DIRECTORY-COMPONENT CL:MAKE-PATHNAME %%PRINT-PATHNAME])
|
||||
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS (ADDVARS (NLAMA)
|
||||
(NLAML)
|
||||
(LAMA
|
||||
CL:ENOUGH-NAMESTRING
|
||||
CL:MERGE-PATHNAMES
|
||||
CL:MAKE-PATHNAME])
|
||||
(DECLARE%: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
|
||||
|
||||
(ADDTOVAR NLAMA )
|
||||
|
||||
(ADDTOVAR NLAML )
|
||||
|
||||
(ADDTOVAR LAMA CL:ENOUGH-NAMESTRING CL:HOST-NAMESTRING FILE-NAME CL:MERGE-PATHNAMES PATHNAME
|
||||
%%PRINT-DIRECTORY-COMPONENT CL:MAKE-PATHNAME %%PRINT-PATHNAME)
|
||||
(ADDTOVAR LAMA CL:ENOUGH-NAMESTRING CL:MERGE-PATHNAMES CL:MAKE-PATHNAME)
|
||||
)
|
||||
(PUTPROPS CMLPATHNAME COPYRIGHT ("Venue & Xerox Corporation" 1986 1987 1988 1990))
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (3743 9514 (%%PRINT-PATHNAME 3753 . 3914) (CL:MAKE-PATHNAME 3916 . 8666) (
|
||||
%%PRINT-DIRECTORY-COMPONENT 8668 . 9512)) (9516 9709 (CL:PATHNAME-HOST 9516 . 9709)) (9711 9910 (
|
||||
CL:PATHNAME-DEVICE 9711 . 9910)) (9912 10120 (CL:PATHNAME-DIRECTORY 9912 . 10120)) (10122 10315 (
|
||||
CL:PATHNAME-NAME 10122 . 10315)) (10317 10510 (CL:PATHNAME-TYPE 10317 . 10510)) (10512 10714 (
|
||||
CL:PATHNAME-VERSION 10512 . 10714)) (10715 16039 (PATHNAME 10725 . 10917) (CL:MERGE-PATHNAMES 10919 .
|
||||
13005) (FILE-NAME 13007 . 13148) (CL:HOST-NAMESTRING 13150 . 13339) (CL:ENOUGH-NAMESTRING 13341 .
|
||||
15806) (%%NUMERIC-STRING-P 15808 . 16037)) (16041 19794 (CL:NAMESTRING 16041 . 19794)) (19796 23267 (
|
||||
CL:PARSE-NAMESTRING 19796 . 23267)) (23269 31722 (PARSE-NAMESTRING1 23269 . 31722)) (31724 32727 (
|
||||
CL:TRUENAME 31724 . 32727)) (32729 32921 (%%MAKE-PATHNAME 32729 . 32921)) (32923 33560 (
|
||||
%%PATHNAME-EQUAL 32923 . 33560)) (33562 34019 (%%DIRECTORY-COMPONENT-EQUAL 33562 . 34019)) (34021
|
||||
34644 (%%INITIALIZE-DEFAULT-PATHNAME 34021 . 34644)) (34734 34901 (INTERLISP-NAMESTRING 34734 . 34901)
|
||||
) (34903 37796 (UNPACKPATHNAME.STRING 34903 . 37796)) (37798 39055 (CL:FILE-NAMESTRING 37798 . 39055))
|
||||
(39057 39255 (CL:DIRECTORY-NAMESTRING 39057 . 39255)))))
|
||||
(FILEMAP (NIL (2107 2238 (%%WILD-NAME 2107 . 2238)) (2240 2319 (%%COMPONENT-STRING 2240 . 2319)) (2924
|
||||
8695 (%%PRINT-PATHNAME 2934 . 3095) (CL:MAKE-PATHNAME 3097 . 7847) (%%PRINT-DIRECTORY-COMPONENT 7849
|
||||
. 8693)) (8697 8890 (CL:PATHNAME-HOST 8697 . 8890)) (8892 9091 (CL:PATHNAME-DEVICE 8892 . 9091)) (
|
||||
9093 9301 (CL:PATHNAME-DIRECTORY 9093 . 9301)) (9303 9496 (CL:PATHNAME-NAME 9303 . 9496)) (9498 9691 (
|
||||
CL:PATHNAME-TYPE 9498 . 9691)) (9693 9895 (CL:PATHNAME-VERSION 9693 . 9895)) (9896 15220 (PATHNAME
|
||||
9906 . 10098) (CL:MERGE-PATHNAMES 10100 . 12186) (FILE-NAME 12188 . 12329) (CL:HOST-NAMESTRING 12331
|
||||
. 12520) (CL:ENOUGH-NAMESTRING 12522 . 14987) (%%NUMERIC-STRING-P 14989 . 15218)) (15222 18975 (
|
||||
CL:NAMESTRING 15222 . 18975)) (18977 22448 (CL:PARSE-NAMESTRING 18977 . 22448)) (22450 23453 (
|
||||
CL:TRUENAME 22450 . 23453)) (23455 23647 (%%MAKE-PATHNAME 23455 . 23647)) (23649 24286 (
|
||||
%%PATHNAME-EQUAL 23649 . 24286)) (24288 24745 (%%DIRECTORY-COMPONENT-EQUAL 24288 . 24745)) (24747
|
||||
25370 (%%INITIALIZE-DEFAULT-PATHNAME 24747 . 25370)) (25460 25627 (INTERLISP-NAMESTRING 25460 . 25627)
|
||||
) (25629 28522 (UNPACKPATHNAME.STRING 25629 . 28522)) (28524 29781 (CL:FILE-NAMESTRING 28524 . 29781))
|
||||
(29783 29981 (CL:DIRECTORY-NAMESTRING 29783 . 29981)))))
|
||||
STOP
|
||||
|
||||
Reference in New Issue
Block a user