Update ShellOpen to handle versioned files; add ShellOpen into SEE-PDF in place of MacOS-specific open. (#1410)
* Update PDFSTREAM: integrate ShellOpen into PDF-SEE in place of MacOS specific calls; update how PDFCONVERTER is set to fix bug whereby it was always ps2pdf * Fix ShellOpen so that if a file to open is versioned then that file is copied to tmp and its filename is changed from foo.pdf;25 to foo~25~.pdf and this tmp is passed to the opener instead of the original file. This is so that the extension is preserved as the last thing when there are versions. The extension as the last thing is used by most openers to determine the file type. * Oops. Checked in the wriong versions of UNIXUTILS(.DFASL) last commit. Correcting that here.
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
(DEFINE-FILE-INFO PACKAGE "INTERLISP" READTABLE "INTERLISP" BASE 10)
|
||||
|
||||
(FILECREATED " 8-Oct-2023 15:06:52" {DSK}<home>frank>il>medley>gmedley>library>UNIXUTILS.;15 14696
|
||||
(FILECREATED "10-Nov-2023 21:59:02" {DSK}<home>frank>il>medley>gmedley>library>UNIXUTILS.;24 16469
|
||||
|
||||
:CHANGES-TO (FNS ShellOpen UNIX-FILE-NAME ShellBrowser ShellBrowse ShellOpener)
|
||||
(VARS UNIXUTILSCOMS)
|
||||
:CHANGES-TO (FNS ShellOpen SLASHIT)
|
||||
|
||||
:PREVIOUS-DATE " 8-Oct-2023 02:35:47" {DSK}<home>frank>il>medley>gmedley>library>UNIXUTILS.;14
|
||||
)
|
||||
:PREVIOUS-DATE "10-Nov-2023 19:34:44"
|
||||
{DSK}<home>frank>il>medley>gmedley>docs>primer>UNIXUTILS.;10)
|
||||
|
||||
|
||||
(PRETTYCOMPRINT UNIXUTILSCOMS)
|
||||
@@ -155,6 +154,7 @@
|
||||
|
||||
(* ;; " Returns T is all goes well; returns an error string if all does not go well")
|
||||
|
||||
(RANDSET T)
|
||||
(SETQ FilenameOrURL (MKSTRING FilenameOrURL))
|
||||
(if (OR (EQ (STRPOS "http://" (L-CASE FilenameOrURL))
|
||||
1)
|
||||
@@ -172,13 +172,42 @@
|
||||
T)
|
||||
else (CONCAT "Unable to find a browser to open: " FilenameOrURL)))
|
||||
else
|
||||
(LET ((OPENER (ShellOpener))
|
||||
(UNIXFILE (UNIX-FILE-NAME FilenameOrURL 'INPUT T)))
|
||||
(if (NOT UNIXFILE)
|
||||
then (CONCAT "File not found: " FilenameOrURL)
|
||||
elseif (NOT (STREQUAL OPENER "true"))
|
||||
then (CL:WITH-OPEN-STREAM
|
||||
(SHELLSTREAM (OPENSTREAM (CONCAT "{CORE}SHELLOUT" (RAND))
|
||||
(LET*
|
||||
((OPENER (ShellOpener))
|
||||
(FULLNAME (FULLNAME FilenameOrURL)))
|
||||
(if (NOT FULLNAME)
|
||||
then (CONCAT "File not found: " FilenameOrURL)
|
||||
elseif (STREQUAL OPENER "true")
|
||||
then (CONCAT "Unable to find a file opener to open: " FilenameOrURL)
|
||||
else (LET* ((VERSION.SPECIFIED (FILENAMEFIELD FilenameOrURL 'VERSION))
|
||||
(UNPACKED (UNPACKFILENAME.STRING FULLNAME))
|
||||
(NEWNAME (CONCAT (LISTGET UNPACKED 'NAME)
|
||||
"~"
|
||||
(LISTGET UNPACKED 'VERSION)
|
||||
"~"))
|
||||
(EXTENSION (LISTGET UNPACKED 'EXTENSION))
|
||||
[UNVERSIONED (LET (FN (UNPACKED (COPY UNPACKED)))
|
||||
(LISTPUT UNPACKED 'VERSION NIL)
|
||||
(LISTPUT UNPACKED 'HOST NIL)
|
||||
(SETQ FN (PACKFILENAME.STRING UNPACKED))
|
||||
(if (STREQUAL (SUBSTRING FN -1)
|
||||
".")
|
||||
then (SETQ FN (SUBSTRING UNIXFILE 1 -2)))
|
||||
(SETQ FN (SLASHIT FN]
|
||||
(UNVERSIONED.EXISTS (INFILEP (CONCAT "{UNIX}" UNVERSIONED)))
|
||||
(TMPDIR (CONCAT "/tmp/" (RAND 1000 9999)))
|
||||
(TARGETFILE.LISP (PACKFILENAME.STRING 'HOST "{UNIX}" 'DIRECTORY TMPDIR
|
||||
'NAME NEWNAME 'EXTENSION EXTENSION))
|
||||
(TARGETFILE.UNIX (SLASHIT (PACKFILENAME.STRING 'HOST NIL 'DIRECTORY TMPDIR
|
||||
'NAME NEWNAME 'EXTENSION EXTENSION)))
|
||||
(UNIXFILE NIL))
|
||||
(DECLARE (SPECVARS UNIXFILE))
|
||||
(if (OR VERSION.SPECIFIED (NOT UNVERSIONED.EXISTS))
|
||||
then (COPYFILE FULLNAME TARGETFILE.LISP)
|
||||
(SETQ UNIXFILE TARGETFILE.UNIX)
|
||||
else (SETQ UNIXFILE UNVERSIONED))
|
||||
(CL:WITH-OPEN-STREAM
|
||||
(SHELLSTREAM (OPENSTREAM (CONCAT "{CORE}SHELLOUT" (RAND 1000 9999))
|
||||
'BOTH))
|
||||
(ShellCommand (CONCAT OPENER " '" UNIXFILE "'"
|
||||
" >>/tmp/ShellOpener-warnings-$$.txt")
|
||||
@@ -197,8 +226,7 @@
|
||||
(CL:LOOP (PRINTCCODE (READCCODE SHELLSTREAM)
|
||||
STRINGSTREAM))
|
||||
OUT))
|
||||
OUTSTRING)))
|
||||
else (CONCAT "Unable to find a file opener to open: " FilenameOrURL])
|
||||
OUTSTRING])
|
||||
|
||||
(PROCESS-COMMAND
|
||||
[LAMBDA (CMD) (* ; "Edited 17-Jul-2022 08:17 by rmk")
|
||||
@@ -221,8 +249,8 @@
|
||||
|
||||
(LET [LASTDIRPOS SLASHED (DIRPOS (ADD1 (OR (STRPOS "}" X)
|
||||
0]
|
||||
[SETQ SLASHED (CONCATCODES (FOR I C FROM DIRPOS WHILE (SETQ C (NTHCHARCODE X I))
|
||||
COLLECT (SELCHARQ C
|
||||
[SETQ SLASHED (CONCATCODES (for I C from DIRPOS while (SETQ C (NTHCHARCODE X I))
|
||||
collect (SELCHARQ C
|
||||
((< >)
|
||||
(SETQ LASTDIRPOS I)
|
||||
(CHARCODE /))
|
||||
@@ -285,7 +313,7 @@
|
||||
|
||||
(PUTPROPS UNIXUTILS FILETYPE CL:COMPILE-FILE)
|
||||
(DECLARE%: DONTCOPY
|
||||
(FILEMAP (NIL (1144 1517 (ShellCommand 1144 . 1517)) (1519 1916 (ShellWhich 1519 . 1916)) (1917 14618
|
||||
(ShellBrowser 1927 . 3675) (ShellBrowse 3677 . 4362) (ShellOpener 4364 . 6052) (ShellOpen 6054 . 9357)
|
||||
(PROCESS-COMMAND 9359 . 9972) (SLASHIT 9974 . 12016) (UNIX-FILE-NAME 12018 . 14616)))))
|
||||
(FILEMAP (NIL (1065 1438 (ShellCommand 1065 . 1438)) (1440 1837 (ShellWhich 1440 . 1837)) (1838 16391
|
||||
(ShellBrowser 1848 . 3596) (ShellBrowse 3598 . 4283) (ShellOpener 4285 . 5973) (ShellOpen 5975 . 11130
|
||||
) (PROCESS-COMMAND 11132 . 11745) (SLASHIT 11747 . 13789) (UNIX-FILE-NAME 13791 . 16389)))))
|
||||
STOP
|
||||
|
||||
Reference in New Issue
Block a user