emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: executable-find in files.el


From: Eli Zaretskii
Subject: Re: executable-find in files.el
Date: Thu, 12 May 2005 16:14:11 +0300

> Cc: address@hidden
> From: Stefan Monnier <address@hidden>
> Date: Thu, 12 May 2005 08:42:32 -0400
> 
> >   . on Windows, check_executable uses stat to verify executability
> >   . on Posix systems, check_executable uses euidaccess if it's available
> >   . by contrast, openp always uses access
> 
> > These are subtle differences, but they are real.
> 
> These are too subtle for me, indeed.  Are you saying that:
> 1- call-process on w32 doesn't use check_executable but should
> 2- are you saying that call-process on w32 does use check_executable whereas
>    a "1" arg to locate-file doesn't, and thus that a `file-executable-p' arg
>    to locate-file better mimicks call-process on w32.
> 
> If (1), it's beyond the scope of my patch.

I don't think the Windows port does something special inside
`call-process', I think it uses `openp' as every other platform, and
thus does _not_ use `check_executable' and what's in it.

What I'm saying is that `stat' and `access' on Windows might yield
different results (someone with more knowledge about Windows internals
than I have should give a definitive answer to that).  More
importantly, Posix platforms which have `euidaccess' will behave
differently in these two cases, because AFAIK, `euidaccess' and
`access' might yield different results.

I don't know enough about intricacies of `access' and `euidaccess' to
tell which one is TRT for us, but I do think that both `openp' and
`check_executable' should use the same code, whichever we think is the
right one.  (That is, unless someone explains why using `access' in
some cases and `euidaccess' in others _is_ TRT.)

As long as `file-executable-p' and `call-process' use these different
methods, your change to `executable-find' is an incompatible one,
albeit only in some rare situations.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]