* fhandler.cc (fhandler_base::fork_fixup): Don't protect handle.
* dlfcn.cc: Fix to confirm to coding standards. Reorganize includes throughout to accomodate new cygheap.h usage. * cygheap.h (cygheap_fdmanip): New class: simplifies locking and retrieval of fds from cygheap->fdtab. (cygheap_fdget): Ditto. (cygheap_fdnew): Ditto. * fcntl.cc (_fcntl): Use new method to lock fdtab and retrieve info. * ioctl.cc (ioctl): Ditto. * mmap.cc (mmap): Ditto. * net.cc: Ditto, throughout. * passwd.cc (getpass): Ditto. * path.cc (fchdir): Ditto. * pipe.cc (make_pipe): Ditto. * sec_acl.cc (facl): Ditto. * syscalls.cc: Ditto, throughout. * termios.cc: Ditto, throughout.
This commit is contained in:
@ -30,22 +30,14 @@ tcsendbreak (int fd, int duration)
|
||||
{
|
||||
int res = -1;
|
||||
|
||||
if (cygheap->fdtab.not_open (fd))
|
||||
{
|
||||
set_errno (EBADF);
|
||||
goto out;
|
||||
}
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
goto out;
|
||||
|
||||
fhandler_base *fh;
|
||||
fh = cygheap->fdtab[fd];
|
||||
|
||||
if (!fh->is_tty ())
|
||||
if (!cfd->is_tty ())
|
||||
set_errno (ENOTTY);
|
||||
else
|
||||
{
|
||||
if ((res = fh->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = fh->tcsendbreak (duration);
|
||||
}
|
||||
else if ((res = cfd->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = cfd->tcsendbreak (duration);
|
||||
|
||||
out:
|
||||
syscall_printf ("%d = tcsendbreak (%d, %d)", res, fd, duration);
|
||||
@ -60,22 +52,14 @@ tcdrain (int fd)
|
||||
|
||||
termios_printf ("tcdrain");
|
||||
|
||||
if (cygheap->fdtab.not_open (fd))
|
||||
{
|
||||
set_errno (EBADF);
|
||||
goto out;
|
||||
}
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
goto out;
|
||||
|
||||
fhandler_base *fh;
|
||||
fh = cygheap->fdtab[fd];
|
||||
|
||||
if (!fh->is_tty ())
|
||||
if (!cfd->is_tty ())
|
||||
set_errno (ENOTTY);
|
||||
else
|
||||
{
|
||||
if ((res = fh->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = fh->tcdrain ();
|
||||
}
|
||||
else if ((res = cfd->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = cfd->tcdrain ();
|
||||
|
||||
out:
|
||||
syscall_printf ("%d = tcdrain (%d)", res, fd);
|
||||
@ -88,22 +72,14 @@ tcflush (int fd, int queue)
|
||||
{
|
||||
int res = -1;
|
||||
|
||||
if (cygheap->fdtab.not_open (fd))
|
||||
{
|
||||
set_errno (EBADF);
|
||||
goto out;
|
||||
}
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
goto out;
|
||||
|
||||
fhandler_base *fh;
|
||||
fh = cygheap->fdtab[fd];
|
||||
|
||||
if (!fh->is_tty ())
|
||||
if (!cfd->is_tty ())
|
||||
set_errno (ENOTTY);
|
||||
else
|
||||
{
|
||||
if ((res = fh->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = fh->tcflush (queue);
|
||||
}
|
||||
else if ((res = cfd->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = cfd->tcflush (queue);
|
||||
|
||||
out:
|
||||
termios_printf ("%d = tcflush (%d, %d)", res, fd, queue);
|
||||
@ -116,22 +92,14 @@ tcflow (int fd, int action)
|
||||
{
|
||||
int res = -1;
|
||||
|
||||
if (cygheap->fdtab.not_open (fd))
|
||||
{
|
||||
set_errno (EBADF);
|
||||
goto out;
|
||||
}
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
goto out;
|
||||
|
||||
fhandler_base *fh;
|
||||
fh = cygheap->fdtab[fd];
|
||||
|
||||
if (!fh->is_tty ())
|
||||
if (!cfd->is_tty ())
|
||||
set_errno (ENOTTY);
|
||||
else
|
||||
{
|
||||
if ((res = fh->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = fh->tcflow (action);
|
||||
}
|
||||
else if ((res = cfd->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = cfd->tcflow (action);
|
||||
|
||||
out:
|
||||
syscall_printf ("%d = tcflow (%d, %d)", res, fd, action);
|
||||
@ -144,24 +112,16 @@ tcsetattr (int fd, int a, const struct termios *t)
|
||||
{
|
||||
int res = -1;
|
||||
|
||||
if (cygheap->fdtab.not_open (fd))
|
||||
{
|
||||
set_errno (EBADF);
|
||||
goto out;
|
||||
}
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
goto out;
|
||||
|
||||
t = __tonew_termios (t);
|
||||
|
||||
fhandler_base *fh;
|
||||
fh = cygheap->fdtab[fd];
|
||||
|
||||
if (!fh->is_tty ())
|
||||
if (!cfd->is_tty ())
|
||||
set_errno (ENOTTY);
|
||||
else
|
||||
{
|
||||
if ((res = fh->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = fh->tcsetattr (a, t);
|
||||
}
|
||||
else if ((res = cfd->bg_check (-SIGTTOU)) > bg_eof)
|
||||
res = cfd->tcsetattr (a, t);
|
||||
|
||||
out:
|
||||
termios_printf ("iflag %x, oflag %x, cflag %x, lflag %x, VMIN %d, VTIME %d",
|
||||
@ -178,15 +138,13 @@ tcgetattr (int fd, struct termios *in_t)
|
||||
int res = -1;
|
||||
struct termios *t = __makenew_termios (in_t);
|
||||
|
||||
if (cygheap->fdtab.not_open (fd))
|
||||
set_errno (EBADF);
|
||||
else if (!cygheap->fdtab[fd]->is_tty ())
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
/* saw an error */;
|
||||
else if (!cfd->is_tty ())
|
||||
set_errno (ENOTTY);
|
||||
else
|
||||
{
|
||||
if ((res = cygheap->fdtab[fd]->tcgetattr (t)) == 0)
|
||||
(void) __toapp_termios (in_t, t);
|
||||
}
|
||||
else if ((res = cfd->tcgetattr (t)) == 0)
|
||||
(void) __toapp_termios (in_t, t);
|
||||
|
||||
if (res)
|
||||
termios_printf ("%d = tcgetattr (%d, %p)", res, fd, in_t);
|
||||
@ -204,12 +162,13 @@ tcgetpgrp (int fd)
|
||||
{
|
||||
int res = -1;
|
||||
|
||||
if (cygheap->fdtab.not_open (fd))
|
||||
set_errno (EBADF);
|
||||
else if (!cygheap->fdtab[fd]->is_tty ())
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
/* saw an error */;
|
||||
else if (!cfd->is_tty ())
|
||||
set_errno (ENOTTY);
|
||||
else
|
||||
res = cygheap->fdtab[fd]->tcgetpgrp ();
|
||||
res = cfd->tcgetpgrp ();
|
||||
|
||||
termios_printf ("%d = tcgetpgrp (%d)", res, fd);
|
||||
return res;
|
||||
@ -221,12 +180,13 @@ tcsetpgrp (int fd, pid_t pgid)
|
||||
{
|
||||
int res = -1;
|
||||
|
||||
if (cygheap->fdtab.not_open (fd))
|
||||
set_errno (EBADF);
|
||||
else if (!cygheap->fdtab[fd]->is_tty ())
|
||||
cygheap_fdget cfd (fd);
|
||||
if (cfd < 0)
|
||||
/* saw an error */;
|
||||
else if (!cfd->is_tty ())
|
||||
set_errno (ENOTTY);
|
||||
else
|
||||
res = cygheap->fdtab[fd]->tcsetpgrp (pgid);
|
||||
res = cfd->tcsetpgrp (pgid);
|
||||
|
||||
termios_printf ("%d = tcsetpgrp (%d, %x)", res, fd, pgid);
|
||||
return res;
|
||||
|
Reference in New Issue
Block a user