Add fexecve, execvpe.
* exec.cc (fexecve): New function. * cygwin.din (execvpe, fexecve): Export new fexecve and existing execvpe. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump. * posix.sgml: Mention them.
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
/* exec.cc: exec system call support.
|
||||
|
||||
Copyright 1996, 1997, 1998, 2000, 2001, 2002 Red Hat, Inc.
|
||||
Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2009 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
@ -14,6 +14,10 @@ details. */
|
||||
#include "cygerrno.h"
|
||||
#include "path.h"
|
||||
#include "environ.h"
|
||||
#include "sync.h"
|
||||
#include "fhandler.h"
|
||||
#include "dtable.h"
|
||||
#include "cygheap.h"
|
||||
#undef _execve
|
||||
|
||||
/* This is called _execve and not execve because the real execve is defined
|
||||
@ -91,3 +95,15 @@ execvpe (const char *path, char * const *argv, char *const *envp)
|
||||
path_conv buf;
|
||||
return execve (find_exec (path, buf), argv, envp);
|
||||
}
|
||||
|
||||
extern "C" int
|
||||
fexecve (int fd, char * const *argv, char *const *envp)
|
||||
{
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
{
|
||||
syscall_printf ("-1 = fexecve (%d, %p, %p)", fd, argv, envp);
|
||||
return -1;
|
||||
}
|
||||
return execve (cfd->pc.get_win32 (), argv, envp);
|
||||
}
|
||||
|
Reference in New Issue
Block a user