summaryrefslogtreecommitdiff
path: root/lang/python21/patches/patch-ah
diff options
context:
space:
mode:
Diffstat (limited to 'lang/python21/patches/patch-ah')
-rw-r--r--lang/python21/patches/patch-ah75
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: