[PATCH] Cygwin: Add new APIs tc[gs]etwinsize()
Takashi Yano
takashi.yano@nifty.ne.jp
Thu Jan 23 10:44:26 GMT 2025
New APIs tcgetwinsize/tcsetwinsize are added, which is added in
POSIX.1-2024.
Reviewed-by:
Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
---
winsup/cygwin/cygwin.din | 2 ++
winsup/cygwin/fhandler/base.cc | 2 ++
winsup/cygwin/include/sys/termios.h | 2 ++
winsup/cygwin/termios.cc | 12 ++++++++++++
winsup/doc/new-features.xml | 12 ++++++++++++
winsup/doc/posix.xml | 2 ++
6 files changed, 32 insertions(+)
diff --git a/winsup/cygwin/cygwin.din b/winsup/cygwin/cygwin.din
index efc750e83..95a21378b 100644
--- a/winsup/cygwin/cygwin.din
+++ b/winsup/cygwin/cygwin.din
@@ -1530,9 +1530,11 @@ tcflush SIGFE
tcgetattr SIGFE
tcgetpgrp SIGFE
tcgetsid SIGFE
+tcgetwinsize SIGFE
tcsendbreak SIGFE
tcsetattr SIGFE
tcsetpgrp SIGFE
+tcsetwinsize SIGFE
tdelete SIGFE
tdestroy NOSIGFE
telldir SIGFE
diff --git a/winsup/cygwin/fhandler/base.cc b/winsup/cygwin/fhandler/base.cc
index e5e9f2325..0902bf0c2 100644
--- a/winsup/cygwin/fhandler/base.cc
+++ b/winsup/cygwin/fhandler/base.cc
@@ -1333,6 +1333,8 @@ fhandler_base::ioctl (unsigned int cmd, void *buf)
break;
case FIONREAD:
case TIOCSCTTY:
+ case TIOCGWINSZ:
+ case TIOCSWINSZ:
set_errno (ENOTTY);
res = -1;
break;
diff --git a/winsup/cygwin/include/sys/termios.h b/winsup/cygwin/include/sys/termios.h
index d701e2f72..687fb92af 100644
--- a/winsup/cygwin/include/sys/termios.h
+++ b/winsup/cygwin/include/sys/termios.h
@@ -301,6 +301,8 @@ speed_t cfgetospeed(const struct termios *);
int cfsetispeed (struct termios *, speed_t);
int cfsetospeed (struct termios *, speed_t);
int cfsetspeed (struct termios *, speed_t);
+int tcgetwinsize(int fd, const struct winsize *winsz);
+int tcsetwinsize(int fd, const struct winsize *winsz);
#ifdef __cplusplus
}
diff --git a/winsup/cygwin/termios.cc b/winsup/cygwin/termios.cc
index 1dfd57079..6adf47497 100644
--- a/winsup/cygwin/termios.cc
+++ b/winsup/cygwin/termios.cc
@@ -398,3 +398,15 @@ cfmakeraw(struct termios *tp)
tp->c_cflag &= ~(CSIZE | PARENB);
tp->c_cflag |= CS8;
}
+
+extern "C" int
+tcgetwinsize (int fd, const struct winsize *winsz)
+{
+ return ioctl (fd, TIOCGWINSZ, winsz);
+}
+
+extern "C" int
+tcsetwinsize (int fd, const struct winsize *winsz)
+{
+ return ioctl (fd, TIOCSWINSZ, winsz);
+}
diff --git a/winsup/doc/new-features.xml b/winsup/doc/new-features.xml
index 17c688f89..b3daabd50 100644
--- a/winsup/doc/new-features.xml
+++ b/winsup/doc/new-features.xml
@@ -4,6 +4,18 @@
<sect1 id="ov-new"><title>What's new and what changed in Cygwin</title>
+<sect2 id="ov-new3.6"><title>What's new and what changed in 3.6</title>
+
+<itemizedlist mark="bullet">
+
+<listitem><para>
+New API calls: tcgetwinsize, tcsetwinsize.
+</para></listitem>
+
+</itemizedlist>
+
+</sect2>
+
<sect2 id="ov-new3.5"><title>What's new and what changed in 3.5</title>
<itemizedlist mark="bullet">
diff --git a/winsup/doc/posix.xml b/winsup/doc/posix.xml
index eb5835c50..26d4fcfa4 100644
--- a/winsup/doc/posix.xml
+++ b/winsup/doc/posix.xml
@@ -990,9 +990,11 @@ also IEEE Std 1003.1-2017 (POSIX.1-2017).</para>
tcgetattr
tcgetpgrp
tcgetsid
+ tcgetwinsize
tcsendbreak
tcsetattr
tcsetpgrp
+ tcsetwinsize
tdelete
telldir
tempnam
--
2.45.1
More information about the Cygwin-patches
mailing list