From 1fc183755522c79c10cc1abee52add6983f015de Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Fri, 2 Sep 2022 22:47:49 +0200 Subject: [PATCH] ptsname tests, ptsname_r tests: Fix test failures on Hurd. * tests/test-ptsname.c (main): On Hurd, test only the BSD ptys that actually exist on Hurd. * tests/test-ptsname_r.c (main): Likewise. --- ChangeLog | 7 +++++++ tests/test-ptsname.c | 30 ++++++++++++++++++++++++++++++ tests/test-ptsname_r.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/ChangeLog b/ChangeLog index 27fce28d8d..5c0b13d40d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2022-09-02 Bruno Haible + + ptsname tests, ptsname_r tests: Fix test failures on Hurd. + * tests/test-ptsname.c (main): On Hurd, test only the BSD ptys that + actually exist on Hurd. + * tests/test-ptsname_r.c (main): Likewise. + 2022-09-02 Bruno Haible strtol, strtoul: Fix compilation error in C++ mode on Solaris 11. diff --git a/tests/test-ptsname.c b/tests/test-ptsname.c index a701885c6f..fa76b12959 100644 --- a/tests/test-ptsname.c +++ b/tests/test-ptsname.c @@ -155,6 +155,36 @@ main (void) close (fd); } +#elif defined __GNU__ /* Hurd */ + + /* Try various master names of Hurd: /dev/pty[p-q][0-9a-v] */ + { + int char1; + int char2; + + for (char1 = 'p'; char1 <= 'q'; char1++) + for (char2 = '0'; char2 <= 'v'; (char2 == '9' ? char2 = 'a' : char2++)) + { + char master_name[32]; + int fd; + + sprintf (master_name, "/dev/pty%c%c", char1, char2); + fd = open (master_name, O_RDONLY); + if (fd >= 0) + { + char *result; + char slave_name[32]; + + result = ptsname (fd); + ASSERT (result != NULL); + sprintf (slave_name, "/dev/tty%c%c", char1, char2); + ASSERT (same_slave (result, slave_name)); + + close (fd); + } + } + } + #else /* Try various master names of Mac OS X: /dev/pty[p-w][0-9a-f] */ diff --git a/tests/test-ptsname_r.c b/tests/test-ptsname_r.c index 3a494e859d..7b5b902ffd 100644 --- a/tests/test-ptsname_r.c +++ b/tests/test-ptsname_r.c @@ -210,6 +210,39 @@ main (void) close (fd); } +#elif defined __GNU__ /* Hurd */ + + /* Try various master names of Hurd: /dev/pty[p-q][0-9a-v] */ + { + int char1; + int char2; + + for (char1 = 'p'; char1 <= 'q'; char1++) + for (char2 = '0'; char2 <= 'v'; (char2 == '9' ? char2 = 'a' : char2++)) + { + char master_name[32]; + int fd; + + sprintf (master_name, "/dev/pty%c%c", char1, char2); + fd = open (master_name, O_RDONLY); + if (fd >= 0) + { + char buffer[256]; + int result; + char slave_name[32]; + + result = ptsname_r (fd, buffer, sizeof buffer); + ASSERT (result == 0); + sprintf (slave_name, "/dev/tty%c%c", char1, char2); + ASSERT (same_slave (buffer, slave_name)); + + test_errors (fd, buffer); + + close (fd); + } + } + } + #else /* Try various master names of Mac OS X: /dev/pty[p-w][0-9a-f] */ -- 2.39.5