diff options
author | Christopher Faylor <me@cgf.cx> | 2000-02-17 19:38:33 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-02-17 19:38:33 +0000 |
commit | 1fd5e000ace55b323124c7e556a7a864b972a5c4 (patch) | |
tree | dc4fcf1e5e22a040716ef92c496b8d94959b2baa /winsup/cygwin/ioctl.cc | |
parent | 369d8a8fd5e887eca547bf34bccfdf755c9e5397 (diff) | |
download | cygnal-1fd5e000ace55b323124c7e556a7a864b972a5c4.tar.gz cygnal-1fd5e000ace55b323124c7e556a7a864b972a5c4.tar.bz2 cygnal-1fd5e000ace55b323124c7e556a7a864b972a5c4.zip |
import winsup-2000-02-17 snapshot
Diffstat (limited to 'winsup/cygwin/ioctl.cc')
-rw-r--r-- | winsup/cygwin/ioctl.cc | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/winsup/cygwin/ioctl.cc b/winsup/cygwin/ioctl.cc new file mode 100644 index 000000000..1fb5f3b59 --- /dev/null +++ b/winsup/cygwin/ioctl.cc @@ -0,0 +1,44 @@ +/* ioctl.cc: ioctl routines. + + Copyright 1996, 1998 Cygnus Solutions. + + Written by Doug Evans of Cygnus Support + dje@cygnus.com + +This file is part of Cygwin. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#include <sys/ioctl.h> +#include <errno.h> +#include "winsup.h" + +extern "C" +int +ioctl (int fd, int cmd, void *buf) +{ + if (dtable.not_open (fd)) + { + set_errno (EBADF); + return -1; + } + + debug_printf ("fd %d, cmd %x\n", fd, cmd); + fhandler_base *fh = dtable[fd]; + if (fh->is_tty () && fh->get_device () != FH_PTYM) + switch (cmd) + { + case TCGETA: + return tcgetattr (fd, (struct termios *) buf); + case TCSETA: + return tcsetattr (fd, TCSANOW, (struct termios *) buf); + case TCSETAW: + return tcsetattr (fd, TCSADRAIN, (struct termios *) buf); + case TCSETAF: + return tcsetattr (fd, TCSAFLUSH, (struct termios *) buf); + } + + return fh->ioctl (cmd, buf); +} |