]> git.ipfire.org Git - thirdparty/glibc.git/blob - stdio-common/tst-fdopen.c
[powerpc] No need to enter "Ignore Exceptions Mode"
[thirdparty/glibc.git] / stdio-common / tst-fdopen.c
1 /* Test for fdopen bugs. */
2
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <unistd.h>
6 #include <fcntl.h>
7
8 #undef assert
9 #define assert(x) \
10 if (!(x)) \
11 { \
12 fputs ("test failed: " #x "\n", stderr); \
13 retval = 1; \
14 goto the_end; \
15 }
16
17 char buffer[256];
18
19 int
20 main (int argc, char *argv[])
21 {
22 char name[] = "/tmp/tst-fdopen.XXXXXX";
23 FILE *fp = NULL;
24 int retval = 0;
25 int fd;
26
27 fd = mkstemp (name);
28 if (fd == -1)
29 {
30 printf ("mkstemp failed: %m\n");
31 return 1;
32 }
33 close (fd);
34 fp = fopen (name, "w");
35 assert (fp != NULL)
36 fputs ("foobar and baz", fp);
37 fclose (fp);
38 fp = NULL;
39
40 fd = open (name, O_RDONLY);
41 assert (fd != -1);
42 assert (lseek (fd, 5, SEEK_SET) == 5);
43 /* The file position indicator associated with the new stream is set to
44 the position indicated by the file offset associated with the file
45 descriptor. */
46 fp = fdopen (fd, "r");
47 assert (fp != NULL);
48 assert (getc (fp) == 'r');
49 assert (getc (fp) == ' ');
50
51 the_end:
52 if (fp != NULL)
53 fclose (fp);
54 unlink (name);
55
56 return retval;
57 }