summaryrefslogtreecommitdiff
path: root/lang/python21/files/patch-Lib:os.py
blob: e73b5b8c2b7d4c039faac839c76539e9a3ec8f94 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
*** Lib/os.py.orig	Mon Nov 11 15:04:17 2002
--- Lib/os.py	Mon Nov 11 15:05:36 2002
***************
*** 301,308 ****
  
  __all__.extend(["execl","execle","execlp","execlpe","execvp","execvpe"])
  
- _notfound = None
  def _execvpe(file, args, env=None):
      if env is not None:
          func = execve
          argrest = (args, env)
--- 301,309 ----
  
  __all__.extend(["execl","execle","execlp","execlpe","execvp","execvpe"])
  
  def _execvpe(file, args, env=None):
+     from errno import ENOENT, ENOTDIR
+ 
      if env is not None:
          func = execve
          argrest = (args, env)
***************
*** 310,316 ****
          func = execv
          argrest = (args,)
          env = environ
!     global _notfound
      head, tail = path.split(file)
      if head:
          apply(func, (file,) + argrest)
--- 311,317 ----
          func = execv
          argrest = (args,)
          env = environ
! 
      head, tail = path.split(file)
      if head:
          apply(func, (file,) + argrest)
***************
*** 320,349 ****
      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
      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
! 
  
  # Change environ to automatically call putenv() if it exists
  try:
--- 321,341 ----
      else:
          envpath = defpath
      PATH = envpath.split(pathsep)
!     saved_exc = None
!     saved_tb = None
      for dir in PATH:
          fullname = path.join(dir, file)
          try:
              apply(func, (fullname,) + argrest)
!         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: