diff options
Diffstat (limited to 'lang/python21/patches/patch-ah')
-rw-r--r-- | lang/python21/patches/patch-ah | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/lang/python21/patches/patch-ah b/lang/python21/patches/patch-ah new file mode 100644 index 00000000000..31aa1b86d2e --- /dev/null +++ b/lang/python21/patches/patch-ah @@ -0,0 +1,75 @@ +$NetBSD: patch-ah,v 1.1 2003/01/22 17:05:33 drochner Exp $ + +--- Lib/os.py.orig Wed Jan 22 17:27:56 2003 ++++ Lib/os.py Wed Jan 22 17:30:02 2003 +@@ -291,7 +291,7 @@ + _execvpe(file, args) + + def execvpe(file, args, env): +- """execv(file, args, env) ++ """execvpe(file, args, env) + + Execute the executable file (which is searched for along $PATH) + with argument list args and environment env , replacing the +@@ -301,8 +301,9 @@ + + __all__.extend(["execl","execle","execlp","execlpe","execvp","execvpe"]) + +-_notfound = None + def _execvpe(file, args, env=None): ++ from errno import ENOENT, ENOTDIR ++ + if env is not None: + func = execve + argrest = (args, env) +@@ -310,7 +311,7 @@ + func = execv + argrest = (args,) + env = environ +- global _notfound ++ + head, tail = path.split(file) + if head: + apply(func, (file,) + argrest) +@@ -320,30 +321,21 @@ + else: + envpath = defpath + PATH = envpath.split(pathsep) +- if not _notfound: +- if sys.platform[:4] == 'beos': +- # Process handling (fork, wait) under BeOS (up to 5.0) +- # doesn't interoperate reliably with the thread interlocking +- # that happens during an import. The actual error we need +- # is the same on BeOS for posix.open() et al., ENOENT. +- try: unlink('/_#.# ## #.#') +- except error, _notfound: pass +- else: +- import tempfile +- t = tempfile.mktemp() +- # Exec a file that is guaranteed not to exist +- try: execv(t, ('blah',)) +- except error, _notfound: pass +- exc, arg = error, _notfound ++ saved_exc = None ++ saved_tb = None + for dir in PATH: + fullname = path.join(dir, file) + try: + apply(func, (fullname,) + argrest) +- except error, (errno, msg): +- if errno != arg[0]: +- exc, arg = error, (errno, msg) +- raise exc, arg +- ++ except error, e: ++ tb = sys.exc_info()[2] ++ if (e.errno != ENOENT and e.errno != ENOTDIR ++ and saved_exc is None): ++ saved_exc = e ++ saved_tb = tb ++ if saved_exc: ++ raise error, saved_exc, saved_tb ++ raise error, e, tb + + # Change environ to automatically call putenv() if it exists + try: |