# HG changeset patch # User Bruno Haible # Date 1270466111 -7200 # Node ID 9f3aa127c016e18e76cb14267cbd270581e58ae5 # Parent c4c537d4c2f00a35186aa25f9c4cf660da90563c ptsname: Improve test. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2010-04-05 Bruno Haible + + ptsname: Improve test. + * tests/test-ptsname.c (main): Also try the various master names of BSD + systems. + 2010-04-05 Bruno Haible memchr: Avoid a possible C++ test error. diff --git a/tests/test-ptsname.c b/tests/test-ptsname.c --- a/tests/test-ptsname.c +++ b/tests/test-ptsname.c @@ -54,13 +54,13 @@ close (fd); } - /* Try various master names of MacOS X. */ + /* Try various master names of MacOS X: /dev/pty[p-w][0-9a-f] */ { int char1; int char2; for (char1 = 'p'; char1 <= 'w'; char1++) - for (char2 = '0'; char2 <= 'f'; char2 = (char2 == '9' ? 'a' : char2 + 1)) + for (char2 = '0'; char2 <= 'f'; (char2 == '9' ? char2 = 'a' : char2++)) { char master_name[32]; int fd; @@ -82,5 +82,35 @@ } } + /* Try various master names of *BSD: /dev/pty[p-sP-S][0-9a-v] */ + { + int upper; + int char1; + int char2; + + for (upper = 0; upper <= 1; upper++) + for (char1 = (upper ? 'P' : 'p'); char1 <= (upper ? 'S' : 's'); 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 (strcmp (result, slave_name) == 0); + + close (fd); + } + } + } + return 0; }