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

View File

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

View File

@ -1,6 +1,6 @@
/* exec.cc: exec system call support. /* 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. This file is part of Cygwin.
@ -14,6 +14,10 @@ details. */
#include "cygerrno.h" #include "cygerrno.h"
#include "path.h" #include "path.h"
#include "environ.h" #include "environ.h"
#include "sync.h"
#include "fhandler.h"
#include "dtable.h"
#include "cygheap.h"
#undef _execve #undef _execve
/* This is called _execve and not execve because the real execve is defined /* 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; path_conv buf;
return execve (find_exec (path, buf), argv, envp); 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. 211: Export fpurge, mkstemps.
212: Add and export libstdc++ malloc wrappers. 212: Add and export libstdc++ malloc wrappers.
213: Export canonicalize_file_name, eaccess, euidaccess. 213: Export canonicalize_file_name, eaccess, euidaccess.
214: Export execvpe, fexecve.
*/ */
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
#define CYGWIN_VERSION_API_MAJOR 0 #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 /* There is also a compatibity version number associated with the
shared memory regions. It is incremented when incompatible 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 fdopendir
feof feof
ferror ferror
fexecve
fflush fflush
ffs ffs
fgetc fgetc
@ -1015,6 +1016,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
envz_remove envz_remove
envz_strip envz_strip
euidaccess euidaccess
execvpe
exp10 exp10
exp10f exp10f
fcloseall fcloseall
@ -1227,7 +1229,6 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
fesetround fesetround
fetestexcept fetestexcept
feupdateenv feupdateenv
fexecve
floorl floorl
fmal fmal
fmaxl fmaxl