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,3 +1,11 @@
2009-09-26 Eric Blake <ebb9@byu.net>
* 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.
2009-09-26 Eric Blake <ebb9@byu.net>
* syscalls.cc (link): Delete obsolete comment. Reject directories

View File

@ -356,6 +356,7 @@ execve SIGFE
_execve = execve SIGFE
execvp SIGFE
_execvp = execvp SIGFE
execvpe SIGFE
exit = cygwin_exit SIGFE
_exit SIGFE
exp NOSIGFE
@ -454,6 +455,7 @@ feof SIGFE
_feof = feof SIGFE
ferror SIGFE
_ferror = ferror SIGFE
fexecve SIGFE
fflush SIGFE
_fflush = fflush SIGFE
ffs NOSIGFE

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

View File

@ -367,12 +367,13 @@ details. */
211: Export fpurge, mkstemps.
212: Add and export libstdc++ malloc wrappers.
213: Export canonicalize_file_name, eaccess, euidaccess.
214: Export execvpe, fexecve.
*/
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
#define CYGWIN_VERSION_API_MAJOR 0
#define CYGWIN_VERSION_API_MINOR 213
#define CYGWIN_VERSION_API_MINOR 214
/* There is also a compatibity version number associated with the
shared memory regions. It is incremented when incompatible

View File

@ -152,6 +152,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
fdopendir
feof
ferror
fexecve
fflush
ffs
fgetc
@ -1015,6 +1016,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
envz_remove
envz_strip
euidaccess
execvpe
exp10
exp10f
fcloseall
@ -1227,7 +1229,6 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
fesetround
fetestexcept
feupdateenv
fexecve
floorl
fmal
fmaxl