[Openmcl-devel] `run-program' path search broken

Gary Byers gb at clozure.com
Sat Jun 2 07:27:03 UTC 2007


I (somehow) managed to miss this message twice, both with and
without a subject ...  sorry.

My first reaction was to suggest that RUN-PROGRAM's first argument
be changed from "a string or pathname ..." to "a string ... used
in combination with the value of PATH to identify an executable file".
That might be a little too restrictive, and it might be better to
just say that 'any translation of the program argument into something
that the OS can use takes place as if *DEFAULT-PATHNAME-DEFAULTS*
was bound to #p""'.

This would mean that if anyone's (intentionally) doing something
like:

(let* ((*default-pathname-defaults* #p"/usr/local/bin/"))
   ...
   (run-program "ls" ...))

they'd have to instead do

(let* ((*default-pathname-defaults* #p"/usr/local/bin/"))
   ...
   (run-program (merge-pathnames "ls") ...))

That doesn't seem too onerous.

The MERGE-PATHNAMES that currently happens during "translation to
something that the OS can use" isn't entirely intentional, but
it leads to a situation where two referentially opaque things
(PATH and *DEFAULT-PATHNAME-DEFAULTS*) exert influence over what
happens, and it's not surprising that that leads to bizarre
results.






On Sat, 26 May 2007, Scott L. Burson wrote:

> Sigh -- supplying subject line for previous message.  Sorry.
>
> -- Scott
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>
>



More information about the Openmcl-devel mailing list