/* Determine name of the slave side of a pseudo-terminal.
- Copyright (C) 1998, 2002, 2010-2012 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2002, 2010-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
# include <stdio.h>
#endif
-#ifdef __osf__
+#if defined _AIX || defined __osf__
/* Get ioctl(), ISPTM. */
# include <sys/ioctl.h>
/* Get the major, minor macros. */
}
memcpy (buf, tmpbuf, n + 1);
}
-#elif defined __osf__ /* OSF/1 */
+#elif defined _AIX || defined __osf__ /* AIX, OSF/1 */
/* This implementation returns /dev/pts/N, like ptsname() does.
Whereas the generic implementation below returns /dev/ttypN.
Both are correct, but let's be consistent with ptsname(). */
return errno;
}
{
+ int ret;
int dev;
char tmpbuf[9 + 10 + 1];
int n;
- dev = ioctl (fd, ISPTM, NULL);
- if (dev < 0)
+# ifdef _AIX
+ ret = ioctl (fd, ISPTM, &dev);
+# endif
+# ifdef __osf__
+ ret = ioctl (fd, ISPTM, NULL);
+ dev = ret;
+# endif
+ if (ret < 0)
{
errno = ENOTTY;
return errno;
return errno;
}
- buf[sizeof (_PATH_DEV) - 1] = 't';
+ if (strncmp(buf, "/dev/pts/", strlen("/dev/pts/")) != 0)
+ buf[sizeof (_PATH_DEV) - 1] = 't';
#endif
if (__stat (buf, &st) < 0)