Since termios.h defines 'struct winsize' on all platforms I think that pty.h should also do the same. I've committed a patch doing that and adding a basic C check program for types.
BTW, I think this fixes a very minor bug. Since the 'pty' module does not directly depend on 'termios' but pty.in.h unconditionally includes termios.h it would fail on Windows, for example. Very minor since I think 'forkpty' and 'openpty' would import both header modules. Instead of depending on only 'pty' directly. Collin
>From 5b26891027adad4100b3781f586631ac5ad8e4be Mon Sep 17 00:00:00 2001 From: Collin Funk <collin.fu...@gmail.com> Date: Fri, 16 Aug 2024 21:19:46 -0700 Subject: [PATCH 1/2] pty: Define 'struct winsize' on all platforms. * modules/pty (Depends-on): Add termios. * lib/pty.in.h: Make comments more accurate. (struct winsize): Remove forward declaration. --- ChangeLog | 7 +++++++ lib/pty.in.h | 8 +++----- modules/pty | 1 + 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee8851fea5..2f61940815 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2024-08-16 Collin Funk <collin.fu...@gmail.com> + + pty: Define 'struct winsize' on all platforms. + * modules/pty (Depends-on): Add termios. + * lib/pty.in.h: Make comments more accurate. + (struct winsize): Remove forward declaration. + 2024-08-16 Bruno Haible <br...@clisp.org> gitsub.sh: For a submodule, merge from the right remote branch. diff --git a/lib/pty.in.h b/lib/pty.in.h index 37470cb63d..9f597b2252 100644 --- a/lib/pty.in.h +++ b/lib/pty.in.h @@ -44,16 +44,14 @@ # include <libutil.h> #endif -/* Get 'struct termios' and 'struct winsize'. */ +/* Get 'struct termios', if available, and 'struct winsize'. */ #include <termios.h> #if defined _AIX # include <sys/ioctl.h> #endif -/* Mingw lacks 'struct termios' and 'struct winsize', but a forward - declaration of an opaque type is sufficient to allow compilation of - a stub openpty(). */ +/* Mingw lacks 'struct termios', but a forward declaration of an opaque type is + sufficient to allow compilation of a stub openpty(). */ struct termios; -struct winsize; /* The definitions of _GL_FUNCDECL_RPL etc. are copied here. */ diff --git a/modules/pty b/modules/pty index 8f3da034fc..7a1a2e3894 100644 --- a/modules/pty +++ b/modules/pty @@ -10,6 +10,7 @@ gen-header include_next snippet/c++defs snippet/warn-on-use +termios configure.ac: gl_PTY_H -- 2.46.0
>From 3f206a330cdedbb670f0d5f42c364785d4513b09 Mon Sep 17 00:00:00 2001 From: Collin Funk <collin.fu...@gmail.com> Date: Fri, 16 Aug 2024 21:22:31 -0700 Subject: [PATCH 2/2] pty tests: Add C tests. * modules/pty-tests (Files): Add tests/test-pty.c. (Makefile.am): Add the new program. * tests/test-pty.c: New file. --- ChangeLog | 5 +++++ modules/pty-tests | 3 +++ tests/test-pty.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 tests/test-pty.c diff --git a/ChangeLog b/ChangeLog index 2f61940815..6919557615 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2024-08-16 Collin Funk <collin.fu...@gmail.com> + pty tests: Add C tests. + * modules/pty-tests (Files): Add tests/test-pty.c. + (Makefile.am): Add the new program. + * tests/test-pty.c: New file. + pty: Define 'struct winsize' on all platforms. * modules/pty (Depends-on): Add termios. * lib/pty.in.h: Make comments more accurate. diff --git a/modules/pty-tests b/modules/pty-tests index 7a6bce9784..211a06489a 100644 --- a/modules/pty-tests +++ b/modules/pty-tests @@ -1,4 +1,5 @@ Files: +tests/test-pty.c Depends-on: pty-c++-tests @@ -6,3 +7,5 @@ pty-c++-tests configure.ac: Makefile.am: +TESTS += test-pty +check_PROGRAMS += test-pty diff --git a/tests/test-pty.c b/tests/test-pty.c new file mode 100644 index 0000000000..1169604308 --- /dev/null +++ b/tests/test-pty.c @@ -0,0 +1,31 @@ +/* Test of <pty.h> substitute. + Copyright (C) 2024 Free Software Foundation, Inc. + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published + by the Free Software Foundation, either version 3 of the License, + or (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ + +/* Written by Collin Funk <collin.fu...@gmail.com>, 2024. */ + +#include <config.h> + +/* Specification. */ +#include <pty.h> + +/* Check for 'struct winsize'. */ +struct winsize t1; + +int +main (void) +{ + return 0; +} -- 2.46.0