[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
ptsname on OSF/1 5.1
From: |
Bruno Haible |
Subject: |
ptsname on OSF/1 5.1 |
Date: |
Wed, 22 Dec 2010 17:56:45 +0100 |
User-agent: |
KMail/1.9.9 |
On OSF/1 5.1, the ptsname test fails:
test-ptsname.c:78: assertion failed
sh: 366922 Abort - core dumped
FAIL: test-ptsname
The reason is that for e.g. a master of "/dev/ptype" the ptsname function
returns the slave "/dev/pts/14" but our code expects "/dev/ttype". The
two file names are not the same, but are hard links of each other. This
fixes the test:
2010-12-22 Bruno Haible <address@hidden>
ptsname: Avoid test failure on OSF/1 5.1.
* modules/ptsname-tests (Depends-on): Add 'same-inode'.
* tests/test-ptsname.c: Include <sys/stat.h>, same-inode.h.
(same_slave): New function.
(main): Use it to compare ptsname's result with the expected file name.
--- modules/ptsname-tests.orig Wed Dec 22 17:51:05 2010
+++ modules/ptsname-tests Wed Dec 22 17:17:19 2010
@@ -4,6 +4,7 @@
tests/macros.h
Depends-on:
+same-inode
configure.ac:
--- tests/test-ptsname.c.orig Wed Dec 22 17:51:05 2010
+++ tests/test-ptsname.c Wed Dec 22 17:24:45 2010
@@ -25,9 +25,32 @@
#include <stdio.h>
#include <string.h>
#include <unistd.h>
+#include <sys/stat.h>
+
+#include "same-inode.h"
#include "macros.h"
+/* Compare two slave names.
+ On some systems, there are hard links in the /dev/ directory.
+ For example, on OSF/1 5.1,
+ /dev/ttyp0 == /dev/pts/0
+ /dev/ttyp9 == /dev/pts/9
+ /dev/ttypa == /dev/pts/10
+ /dev/ttype == /dev/pts/14
+ */
+static int
+same_slave (const char *slave_name1, const char *slave_name2)
+{
+ struct stat statbuf1;
+ struct stat statbuf2;
+
+ return (strcmp (slave_name1, slave_name2) == 0
+ || (stat (slave_name1, &statbuf1) >= 0
+ && stat (slave_name2, &statbuf2) >= 0
+ && SAME_INODE (statbuf1, statbuf2)));
+}
+
int
main (void)
{
@@ -75,7 +98,7 @@
result = ptsname (fd);
ASSERT (result != NULL);
sprintf (slave_name, "/dev/tty%c%c", char1, char2);
- ASSERT (strcmp (result, slave_name) == 0);
+ ASSERT (same_slave (result, slave_name));
close (fd);
}
@@ -105,7 +128,7 @@
result = ptsname (fd);
ASSERT (result != NULL);
sprintf (slave_name, "/dev/tty%c%c", char1, char2);
- ASSERT (strcmp (result, slave_name) == 0);
+ ASSERT (same_slave (result, slave_name));
close (fd);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- ptsname on OSF/1 5.1,
Bruno Haible <=