On all platforms, ptsname() sets errno when the argument is an invalid
file descriptor. Even through POSIX does not require it [1], it's safe to
check it.
[1]
http://pubs.opengroup.org/onlinepubs/9699919799/functions/ptsname.html2012-06-24 Bruno Haible <
bruno@...>
ptsname test: Extend test.
* tests/test-ptsname.c: Include <errno.h>.
(main): Test behaviour with invalid file descriptor.
--- tests/test-ptsname.c.orig Sun Jun 24 14:51:29 2012
+++ tests/test-ptsname.c Sun Jun 24 14:42:35 2012
@@ -21,6 +21,7 @@
#include "signature.h"
SIGNATURE_CHECK (ptsname, char *, (int));
+#include <errno.h>
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
@@ -63,6 +64,17 @@
#endif
{
+ char *result;
+
+ errno = 0;
+ result = ptsname (-1);
+ ASSERT (result == NULL);
+ ASSERT (errno == EBADF
+ || errno == ENOTTY /* seen on glibc */
+ );
+ }
+
+ {
int fd;
char *result;