diff --git a/test/test-sysdef-asdf.script b/test/test-sysdef-asdf.script index 6fa49bfee5e52b6e5fb9c715074b9f408c8d1a64..856ca3cdf7a85b4f2b9f4a654202fad1d743f242 100644 --- a/test/test-sysdef-asdf.script +++ b/test/test-sysdef-asdf.script @@ -13,15 +13,17 @@ (defun system-lisp-files (system) (loop :for f :in (required-components system :keep-component 'cl-source-file) - :collect (enough-namestring (component-pathname f) *asdf-directory*))) + :collect (namestring (enough-pathname (component-pathname f) *asdf-directory*)))) (defun makefile-lisp-files (target) (remove-if 'emptyp - (split-string + (split-string ;; NB: assumes GNU make (run-program `("make" "--quiet" "--no-print-directory" ,target) :output :string :error-output t :directory *asdf-directory*) :separator #(#\space #\newline #\return #\tab)))) +#+clisp (trace run-program reduce/strcat) + (defmacro compare-files (system target) `(assert-equal (system-lisp-files ,system) (makefile-lisp-files ,target))) diff --git a/uiop/run-program.lisp b/uiop/run-program.lisp index f511b78c13be895955adfef851d8df17719ceffb..7f34e185295eaf95374b5d9db50462f351e8f9b4 100644 --- a/uiop/run-program.lisp +++ b/uiop/run-program.lisp @@ -761,7 +761,8 @@ It returns a process-info plist with possible keys: (reduce/strcat (append before (redirect in " <") (redirect out " >") (redirect err " 2>") - (when (and directory (os-unix-p)) `("cd " (escape-shell-token directory) " ; ")) + (when (and directory (os-unix-p)) + `(" ; cd " ,(escape-shell-token (native-namestring directory)))) after))))) (defun %system (command &rest keys diff --git a/uiop/stream.lisp b/uiop/stream.lisp index c4b0d29a90d3d2fa66e0492d20b9cb51805d6db7..fcd31f9547248965f17882c4c20351da12de7778 100644 --- a/uiop/stream.lisp +++ b/uiop/stream.lisp @@ -535,14 +535,15 @@ If a string, repeatedly read and evaluate from it, returning the last values." (defun call-with-temporary-file (thunk &key (want-stream-p t) (want-pathname-p t) (direction :io) keep after - directory prefix suffix (type ".tmp") + directory (type "tmp" typep) prefix (suffix (when typep "-tmp")) (element-type *default-stream-element-type*) (external-format *utf-8-external-format*)) "Call a THUNK with stream and/or pathname arguments identifying a temporary file. The temporary file's pathname will be based on concatenating PREFIX (defaults to \"uiop\"), a random alphanumeric string, -and optional SUFFIX and TYPE (defaults to \".tmp\"), +and optional SUFFIX (defaults to \"-tmp\" if a type was provided) +and TYPE (defaults to \"tmp\", using a dot as separator if not NIL), within DIRECTORY (defaulting to the TEMPORARY-DIRECTORY) if the PREFIX isn't absolute. The file will be open with specified DIRECTION (defaults to :IO),