[Python-Dev] Weird error handling in os._execvpe

Zack Weinberg zack@codesourcery.com
Thu, 1 Aug 2002 22:24:33 -0700

On Thu, Aug 01, 2002 at 03:27:43PM -0400, Guido van Rossum wrote:

> ... I don't recall exactly why we ended up in this situation in the
> first place.  It's possible that it's an unnecessary sacrifice of a
> dead chicken, but it's also possible that there are platforms where
> this addressed a real need.  I'd like to think that it was because I
> didn't want to add more cruft to posixmodule.c (I've long given up
> on that :-).

I found out why it's done the way it is: There is no execvpe() in C,
not even in the extended-to-hell-and-back GNU libc.  I considered
dinking around with the C-level environ pointer so that execvp() would
do what we want, but this seems unreliable at best, given how many
different ways to access the environment there are.

So I think we're back to option 2 (enumerate the possible errors for
each platform).  ENOENT and ENOTDIR should cover it for Unix.  Would
other platform maintainers care to comment, please?