about summary refs log tree commit diff
path: root/REORG.TODO/login/tst-grantpt.c
diff options
context:
space:
mode:
Diffstat (limited to 'REORG.TODO/login/tst-grantpt.c')
-rw-r--r--REORG.TODO/login/tst-grantpt.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/REORG.TODO/login/tst-grantpt.c b/REORG.TODO/login/tst-grantpt.c
new file mode 100644
index 0000000000..65bb344909
--- /dev/null
+++ b/REORG.TODO/login/tst-grantpt.c
@@ -0,0 +1,81 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#include <unistd.h>
+
+static int
+test_ebadf (void)
+{
+  int fd, ret, err;
+
+  fd = posix_openpt (O_RDWR);
+  if (fd == -1)
+    {
+      printf ("posix_openpt(O_RDWR) failed\nerrno %d (%s)\n",
+	      errno, strerror (errno));
+      /* We don't fail because of this; maybe the system does not have
+	 SUS pseudo terminals.  */
+      return 0;
+    }
+  unlockpt (fd);
+  close (fd);
+
+  ret = grantpt (fd);
+  err = errno;
+  if (ret != -1 || err != EBADF)
+    {
+      printf ("grantpt(): expected: return = %d, errno = %d\n", -1, EBADF);
+      printf ("           got: return = %d, errno = %d\n", ret, err);
+      return 1;
+    }
+  return 0;
+}
+
+static int
+test_einval (void)
+{
+  int fd, ret, err;
+  const char file[] = "./grantpt-einval";
+
+  fd = open (file, O_RDWR | O_CREAT, 0600);
+  if (fd == -1)
+    {
+      printf ("open(\"%s\", O_RDWR) failed\nerrno %d (%s)\n",
+	      file, errno, strerror (errno));
+      return 0;
+    }
+  unlink (file);
+
+  ret = grantpt (fd);
+  err = errno;
+  if (ret != -1 || err != EINVAL)
+    {
+      printf ("grantpt(): expected: return = %d, errno = %d\n", -1, EINVAL);
+      printf ("           got: return = %d, errno = %d\n", ret, err);
+      ret = 1;
+    }
+  else
+    ret = 0;
+
+  close (fd);
+
+  return ret;
+}
+
+static int
+do_test (void)
+{
+  int result = 0;
+
+  result += test_ebadf ();
+  result += test_einval ();
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"