Throughout, change fdtab references to cygheap->fdtab.
* child_info.h (cygheap_exec_info): Eliminate special fdtab stuff. * spawn.cc (spawn_guts): Ditto. * cygheap.cc (cygheap_init): Initialize fdtab, if appropriate. * cygheap.h (CYGHEAPSIZE): Include size of init_cygheap. (_cmalloc_entry): Include fdtab here. * dtable.h (dtable): Declare/define new methods. * dtable.cc (dtable::vfork_child_fixup): New method. (dtable::fixup_after_exec): Remove unneeded extra arguments. * dcrt0.cc (dll_crt0_1): Ditto. * environ.cc (getwinenv): Use case sensitive comparison. (winenv): Make a copy of environment cache to avoid realloc problems when duplicate environment variables exist in the environment. (From Egor Duda) * net.cc (cygwin_socket): Revert Apr 14 change. * include/sys/file.h: Protect against previous X_OK definition. * passwd.cc: Eliminate passwd_sem throughout. * security.cc: Ditto. * cygwin.din: Export New functions. * passwd.cc (read_etc_passwd): Make race safe. (getpwuid_r): New function. (getpwnam_r): New function.
This commit is contained in:
@ -15,6 +15,7 @@ details. */
|
||||
#include <unistd.h>
|
||||
#include "fhandler.h"
|
||||
#include "dtable.h"
|
||||
#include "cygheap.h"
|
||||
#include "cygerrno.h"
|
||||
#include "thread.h"
|
||||
|
||||
@ -26,7 +27,7 @@ _fcntl (int fd, int cmd,...)
|
||||
va_list args;
|
||||
int res;
|
||||
|
||||
if (fdtab.not_open (fd))
|
||||
if (cygheap->fdtab.not_open (fd))
|
||||
{
|
||||
set_errno (EBADF);
|
||||
res = -1;
|
||||
@ -37,9 +38,9 @@ _fcntl (int fd, int cmd,...)
|
||||
va_start (args, cmd);
|
||||
arg = va_arg (args, void *);
|
||||
if (cmd == F_DUPFD)
|
||||
res = dup2 (fd, fdtab.find_unused_handle ((int) arg));
|
||||
res = dup2 (fd, cygheap->fdtab.find_unused_handle ((int) arg));
|
||||
else
|
||||
res = fdtab[fd]->fcntl(cmd, arg);
|
||||
res = cygheap->fdtab[fd]->fcntl(cmd, arg);
|
||||
va_end (args);
|
||||
ReleaseResourceLock(LOCK_FD_LIST,WRITE_LOCK|READ_LOCK,"_fcntl");
|
||||
|
||||
|
Reference in New Issue
Block a user