On Jun 27, 2008, at 12:40 AM, Eric Raible wrote:


The semantics are the same, except that I filter out directories.
Granted, I did change how those semantics were expressed, but my
preference is for clearer code over minimal patch size.

Anyway, it's not like that function is a paragon of clarity. I was tempted
to rewrite the whole thing but resisted that temptation.

That said, I don't care either way, but it does seem like a useful
check to include.

I pushed Dscho's version to era/lookup_prog.  This branch is based
on mingw/master.

Hannes,
Will you take this commit?

        Steffen



- Eric

On Thu, Jun 26, 2008 at 3:25 PM, Johannes Schindelin
<[EMAIL PROTECTED]> wrote:
Hi,

On Thu, 26 Jun 2008, Eric Raible wrote:

diff --git a/compat/mingw.c b/compat/mingw.c
index 5499a95..ab5d966 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -523,9 +523,10 @@ static char *lookup_prog(const char *dir, const char *cmd,
int isexe, int exe_on
     if (!isexe && access(path, F_OK) == 0)
             return xstrdup(path);
     path[strlen(path)-4] = '\0';
-     if ((!exe_only || isexe) && access(path, F_OK) == 0)
-             return xstrdup(path);
-     return NULL;
+     if ((exe_only && !isexe) || access(path, F_OK) ||
+             (GetFileAttributes(path) & FILE_ATTRIBUTE_DIRECTORY))
+             return NULL;
+     return xstrdup(path);

It would be much more logical to keep the original semantics, and do this
instead of your patch:

-       if ((!exe_only || isexe) && access(path, F_OK) == 0)
+       if ((!exe_only || isexe) && access(path, F_OK) == 0 &&
+                       !(GetFileAttributes(path) &
+                               FILE_ATTRIBUTE_DIRECTORY))

Ciao,
Dscho



Reply via email to