�
��c @s�dZdZddkZddkZddkZddkTddklZdddd�Zd �Z dddd
�Z
dddd�Zdddd�Zdd
�ZdS(s�distutils.spawn
Provides the 'spawn()' function, a front-end to various platform-
specific functions for launching another program in a sub-process.
Also provides the 'find_executable()' to search the path for a given
executable name.
s1$Id: spawn.py 37828 2004-11-10 22:23:15Z loewis $i�N(t*(tlogiicCs�tidjot||d|�n_tidjot||d|�n8tidjot||d|�ntdti�dS(s�Run another program, specified as a command list 'cmd', in a new
process. 'cmd' is just the argument list for the new process, ie.
cmd[0] is the program to run and cmd[1:] are the rest of its arguments.
There is no way to run a program with a name different from that of its
executable.
If 'search_path' is true (the default), the system's executable
search path will be used to find the program; otherwise, cmd[0]
must be the exact path to the executable. If 'dry_run' is true,
the command will not actually be run.
Raise DistutilsExecError if running the program fails in any way; just
return on success.
tposixtdry_runtnttos2s1don't know how to spawn programs on platform '%s'N(tostnamet_spawn_posixt _spawn_ntt
_spawn_os2tDistutilsPlatformError(tcmdtsearch_pathtverboseR((s"/sys/lib/python/distutils/spawn.pytspawnscCsTxMtt|��D]9}ti||d�djod||||<qqW|S(s�Quote command-line arguments for DOS/Windows conventions: just
wraps every argument which contains blanks in double quotes, and
returns a new argument list.
t i�s"%s"(trangetlentstringtfind(targsti((s"/sys/lib/python/distutils/spawn.pyt_nt_quote_args1s
cCs�|d}t|�}|ot|�p|}ntiti|g|dd��|p{ytiti||�}Wn0t j
o$}t
d|d|df�nX|djot
d|d|f�q�ndS(NiiRscommand '%s' failed: %si�s'command '%s' failed with exit status %d(Rtfind_executableRtinfoRtjoinRtspawnvtP_WAITtOSErrortDistutilsExecError(RR
RRt
executabletrctexc((s"/sys/lib/python/distutils/spawn.pyR Bs
$
cCs�|d}|ot|�p|}ntiti|g|dd��|p�ytiti||�}Wn0tj
o$}t d|d|df�nX|djo.d|d|fGHt d|d|f�q�ndS(NiiRscommand '%s' failed: %si�s'command '%s' failed with exit status %d(
RRRRRRRRRR(RR
RRRR R!((s"/sys/lib/python/distutils/spawn.pyR
[s
$
cCstiti|d��|odSn|o
tipti}ti�}|djo�y||d|�WnCtj
o7}t i
id|d|if�ti
d�nXt i
id|d�ti
d�n-x)yti|d�\}}WnVtj
oJ}ddk} |i| ijoq�td|d|df�nXti|�o$td|dti|�f�q�ti|�o?ti|�}
|
djodSqtd |d|
f�q�ti|�oq��td
|d|f�q�S(NRisunable to execute %s: %s
is(unable to execute %s for unknown reasonsi�scommand '%s' failed: %ss$command '%s' terminated by signal %ds'command '%s' failed with exit status %ds3unknown error executing '%s': termination status %d(RRRRRtexecvptexecvtforkRtsyststderrtwritetstrerrort_exittwaitpidterrnotEINTRRtWIFSIGNALEDtWTERMSIGt WIFEXITEDtWEXITSTATUSt
WIFSTOPPED(RR
RRtexec_fntpidtetstatusR!R+texit_status((s"/sys/lib/python/distutils/spawn.pyRusN
cCs�|djotid}nti|ti�}tii|�\}}ti djpti
djo|djo|d}ntii|�pIx>|D]6}tii||�}tii|�o|Sq�q�WdSn|SdS(s�Try to find 'executable' in the directories listed in 'path' (a
string listing directories separated by 'os.pathsep'; defaults to
os.environ['PATH']). Returns the complete filename or None if not
found.
tPATHtwin32Rs.exeN(
tNoneRtenvironRtsplittpathseptpathtsplitextR%tplatformRtisfileR(RR=tpathstbasetexttptf((s"/sys/lib/python/distutils/spawn.pyR�s
-(t__doc__t__revision__R%RRtdistutils.errorst distutilsRRRR R
RR9R(((s"/sys/lib/python/distutils/spawn.pys<module>s$$
;
|