From 948b0e09d158fbc470e3e3c4c8f1478cf2896ce6 Mon Sep 17 00:00:00 2001 From: rmkaplan Date: Sun, 1 Oct 2023 23:52:40 -0700 Subject: [PATCH] UNIXUTILS: Added UNIX-FILE-NAME Produces a Unix filename corresponding to a Medley file name (slashes, version number). For use in ShellCommand an PROCESS-COMMAND. --- library/UNIXUTILS | 56 +++++++++++++++++++++++++++++++++++----- library/UNIXUTILS.DFASL | Bin 3617 -> 4894 bytes 2 files changed, 49 insertions(+), 7 deletions(-) diff --git a/library/UNIXUTILS b/library/UNIXUTILS index 89140a37..6eb41003 100644 --- a/library/UNIXUTILS +++ b/library/UNIXUTILS @@ -1,12 +1,13 @@ (DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10) -(FILECREATED "23-Sep-2023 15:30:26" {WMEDLEY}UNIXUTILS.;7 7943 +(FILECREATED " 1-Oct-2023 20:52:23" {WMEDLEY}UNIXUTILS.;9 10573 :EDIT-BY rmk - :CHANGES-TO (FNS SLASHIT) + :CHANGES-TO (FNS UNIX-FILE-NAME) + (VARS UNIXUTILSCOMS) - :PREVIOUS-DATE "22-Sep-2023 15:28:19" {WMEDLEY}UNIXUTILS.;6) + :PREVIOUS-DATE "23-Sep-2023 15:30:26" {WMEDLEY}UNIXUTILS.;7) (PRETTYCOMPRINT UNIXUTILSCOMS) @@ -18,7 +19,7 @@ (GLOBALVARS ShellBrowser) (INITVARS (ShellBrowser)) (FUNCTIONS ShellCommand ShellWhich) - (FNS ShellBrowser ShellBrowse PROCESS-COMMAND SLASHIT) + (FNS ShellBrowser ShellBrowse PROCESS-COMMAND SLASHIT UNIX-FILE-NAME) (PROPS (UNIXUTILS FILETYPE)))) (DECLARE%: EVAL@COMPILE DONTCOPY @@ -155,11 +156,52 @@ SLASHED (CONCAT (SUBSTRING X 1 (SUB1 DIRPOS)) SLASHED))]) + +(UNIX-FILE-NAME + [LAMBDA (FILE ACCESS COPY) (* ; "Edited 1-Oct-2023 20:52 by rmk") + + (* ;; "Tries to return the string that would reference FILE in a Unix shell, for the use of PROCESS-COMMAND and ShellCommand. If VERSION is 1, it assumes that the Unix file is doesn't have the Medley version convention. If FILE does not have a corresponding Unix name, COPY is non-NIL, and ACCESS is INPUT, FILE will be copied to a unix tmp file (with COPY in its name) and that name will be returned.") + + (CL:WHEN (\GETSTREAM FILE ACCESS T) + (SETQ FILE (OR (FULLNAME FILE) + FILE))) (* ; "Might catch NODIRCORE") + (CL:WHEN FILE + (SETQ FILE (TRUEFILENAME FILE)) + (CL:UNLESS (STREAMP FILE) + [SETQ FILE (\GETFILENAME FILE (SELECTQ ACCESS + (OUTPUT 'NEW) + (INPUT 'OLD) + (NIL (SETQ ACCESS 'INPUT) + 'OLD) + (\ILLEGAL.ARG ACCESS]) + [SELECTQ (FILENAMEFIELD FILE 'HOST) + (UNIX [SUBSTRING FILE (ADD1 (CONSTANT (NCHARS "{UNIX}"]) + (DSK (LET [(VERSION (FILENAMEFIELD FILE 'VERSION] + (SETQ FILE (SLASHIT (PACKFILENAME 'HOST NIL 'VERSION NIL 'BODY FILE))) + (CL:IF (AND VERSION (IGREATERP VERSION 1)) + (CONCAT FILE (CL:IF (FILENAMEFIELD FILE 'EXTENSION) + "." + "") + "~" VERSION "~") + FILE))) + (CL:WHEN (AND COPY (EQ ACCESS 'INPUT)) + (RESETLST + (CL:WHEN (\GETSTREAM FILE 'INPUT T) (* ; "Hope is randaccess") + [RESETSAVE (GETFILEPTR FILE) + `(PROGN (SETFILEPTR ,FILE OLDVALUE]) + (COPYFILE FILE (CONCAT "{UNIX}/tmp/medley-" (L-CASE COPY) + "-" + (IDATE) + "-" + (RAND) + (CL:IF (FILENAMEFIELD FILE 'EXTENSION) + (CONCAT "." (FILENAMEFIELD FILE 'EXTENSION)) + "")))))])]) ) (PUTPROPS UNIXUTILS FILETYPE CL:COMPILE-FILE) (DECLARE%: DONTCOPY - (FILEMAP (NIL (902 1275 (ShellCommand 902 . 1275)) (1277 1676 (ShellWhich 1277 . 1676)) (1677 7865 ( -ShellBrowser 1687 . 4210) (ShellBrowse 4212 . 5204) (PROCESS-COMMAND 5206 . 5819) (SLASHIT 5821 . 7863 -))))) + (FILEMAP (NIL (963 1336 (ShellCommand 963 . 1336)) (1338 1737 (ShellWhich 1338 . 1737)) (1738 10495 ( +ShellBrowser 1748 . 4271) (ShellBrowse 4273 . 5265) (PROCESS-COMMAND 5267 . 5880) (SLASHIT 5882 . 7924 +) (UNIX-FILE-NAME 7926 . 10493))))) STOP diff --git a/library/UNIXUTILS.DFASL b/library/UNIXUTILS.DFASL index e4054f2c91bcabc25700afb1f4b3b3cf68a664d8..22cbcae65f7748ed6f87b60492e8d91a30190992 100644 GIT binary patch delta 1940 zcmZuyU2GIp6ux(6|GL|jMKO{M!lFVW=@hz4Ly8f1*qz-DOlQ`eS=vpiq%Erj3MC6o zK#E&X6Jj<}9J|gfNTM-5n26FE;}6ncVj{-qix0*Z6B82?UmzM^@tiX)KgR6lo^!wR z-E+>p=iEE*thuytCiiS_)Sj5EjaHM-?;o!wM{CvLW7U1hWVd3C9#c|VQt4!B%l4ks z_Eb8WS8d~dnmu`V-|&gfWOowS6C>3ckW=Z-r6oN*SKe<(JmjY3Z7XLR?PXIRRPwr^ zDW=-5x%=gghyO3mY-8>Djz@U!!Z&h(r}Ew#jrgXrIiQ<4rC72YE$eI&`2b_wn`wlz zhGmyan&)!-H{?Qhue&3d<+^(&sIJ?!jPs*B431h&%Tx?2s~Sqd5_$Kxpu=~$+d}Jj z#T^L!@u1GZt+=yFE~L8MQuyUHLx3~Fr+KS*jt9hE#-ztZg^OYLR`~Ds+8H366O(Qwxa}l|PvgXljTTPe+dn<*2AtyxB$|+ow8?sP%|donop3kdUEdRa<*V zOvP!zj3f@b&FGArN~PT=V##*j&qeUVC6RLnV(R(}vP|4Lp-a+#@=i&L78@vpOw%FyJwo}s00vbHu z@EXzQ5jjoj%#@F~=h_~vPcaECuGfH?HTWrZQEc^^5y1GGjJiJtHuiR=1;ya`zUj;e zTg<$Bg)<)-VPsi&I-|aTl$%WwA9vh8U9C1%A~wi8A}x}PGFE2{JuXin2&p&cGUK6x zKLdfWc%Ki=SMQ;%BEUoa(NA@YeL$d}rpKb+Z#ld4)zC>P#oSEr@tL z6W{sPQtGfWQC_(|aG0@mL|MfSk{nawWAI~A0GoDGNwYO4ZA*<{_Iw6R{<6cw7 zXm1v&(fs=`zkwz+6sac?iLpeYNSz1DGl@}Y(KnO`BTfX|u)CV?uud&LznX9#B7_FN zP20k_kN|RaAk)4`N}S1zvcI}vY-U@9JF*VS!Ol>5M64EqEm_x`fadE@;loXtHhBN z&>cbeG!#rfw;Q2Jcxv{-Q`6N4LtWVcqmuR-51hneo!Wft(2>oDs{6*PCzJ$!A)tSt zYI{_ptT9NMN4zEr(^7&K@o<_aPB$h-ZS$qx;N38Tgim12OEu5 zN4|S+&5>6dPPOUOWHqH&&O=2_s3|$A&7=}DYC1HpTZO-AR<*g&s8zROOdvBs(^+3} z8Zwu~j&xeGx918V(YTnQkHzTN|Ey_Glp)jqE@t73>Fv6s(~HHWd~r@$D3@&0u&2?a z327WudQCDQN86GPdHPK{2PXX~*^_yX!c&NNZC5f1CCh|>*Ks9%wp6wW5w2i`)`otZ z$^jvOoXd|ZW|Nob?cwJW%M2$z&OGoY1n?G9UBn9D9r}Ct*GT;tBfP-)CdSvWz8j3f zc7H0U!{w{UJFjqSC$x#mBdp)>Ub_J!r`tBxH5`j!Yl