]> git.ipfire.org Git - thirdparty/glibc.git/blob - login/tst-grantpt.c
Update copyright dates not handled by scripts/update-copyrights.
[thirdparty/glibc.git] / login / tst-grantpt.c
1 #include <sys/types.h>
2 #include <sys/stat.h>
3 #include <fcntl.h>
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <errno.h>
7 #include <string.h>
8 #include <unistd.h>
9
10 static int
11 test_ebadf (void)
12 {
13 int fd, ret, err;
14
15 fd = posix_openpt (O_RDWR);
16 if (fd == -1)
17 {
18 printf ("posix_openpt(O_RDWR) failed\nerrno %d (%s)\n",
19 errno, strerror (errno));
20 /* We don't fail because of this; maybe the system does not have
21 SUS pseudo terminals. */
22 return 0;
23 }
24 unlockpt (fd);
25 close (fd);
26
27 ret = grantpt (fd);
28 err = errno;
29 if (ret != -1 || err != EBADF)
30 {
31 printf ("grantpt(): expected: return = %d, errno = %d\n", -1, EBADF);
32 printf (" got: return = %d, errno = %d\n", ret, err);
33 return 1;
34 }
35 return 0;
36 }
37
38 static int
39 test_einval (void)
40 {
41 int fd, ret, err;
42 const char file[] = "./grantpt-einval";
43
44 fd = open (file, O_RDWR | O_CREAT, 0600);
45 if (fd == -1)
46 {
47 printf ("open(\"%s\", O_RDWR) failed\nerrno %d (%s)\n",
48 file, errno, strerror (errno));
49 return 0;
50 }
51 unlink (file);
52
53 ret = grantpt (fd);
54 err = errno;
55 if (ret != -1 || err != EINVAL)
56 {
57 printf ("grantpt(): expected: return = %d, errno = %d\n", -1, EINVAL);
58 printf (" got: return = %d, errno = %d\n", ret, err);
59 ret = 1;
60 }
61 else
62 ret = 0;
63
64 close (fd);
65
66 return ret;
67 }
68
69 static int
70 do_test (void)
71 {
72 int result = 0;
73
74 result += test_ebadf ();
75 result += test_einval ();
76
77 return result;
78 }
79
80 #define TEST_FUNCTION do_test ()
81 #include "../test-skeleton.c"