[PATCH] Cygwin: Add new APIs tc[gs]etwinsize()
Corinna Vinschen
corinna-cygwin@cygwin.com
Thu Jan 23 15:56:47 GMT 2025
Hi Takashi,
looks good, please push.
Thanks,
Corinna
On Jan 23 19:44, Takashi Yano wrote:
> 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