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:
Eric Blake
2009-09-26 21:01:10 +00:00
parent b14f894fd1
commit 15e9ecd14a
5 changed files with 31 additions and 3 deletions

View File

@ -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);
}