| /* Check that the syscalls implementing fdopen work trivially. | |
| #output: This is the first line of this test.\npass\n | |
| */ | |
| #include <stdio.h> | |
| #include <string.h> | |
| #include <stdlib.h> | |
| #include <sys/stat.h> | |
| #include <fcntl.h> | |
| void | |
| perr (const char *s) | |
| { | |
| perror (s); | |
| exit (1); | |
| } | |
| int | |
| main (void) | |
| { | |
| FILE *f; | |
| int fd; | |
| const char fname[] = "sk1test.dat"; | |
| const char tsttxt1[] | |
| = "This is the first line of this test.\n"; | |
| char buf[sizeof (tsttxt1)] = ""; | |
| /* Write a line to stdout. */ | |
| f = fdopen (1, "w"); | |
| if (f == NULL | |
| || fwrite (tsttxt1, 1, strlen (tsttxt1), f) != strlen (tsttxt1)) | |
| perr ("fdopen or fwrite"); | |
| #if 0 | |
| /* Unfortunately we can't get < /dev/null to the simulator with | |
| reasonable test-framework surgery. */ | |
| /* Try to read from stdin. Expect EOF. */ | |
| f = fdopen (0, "r"); | |
| if (f == NULL | |
| || fread (buf, 1, sizeof (buf), f) != 0 | |
| || feof (f) == 0 | |
| || ferror (f) != 0) | |
| { | |
| printf ("fail\n"); | |
| exit (1); | |
| } | |
| #endif | |
| printf ("pass\n"); | |
| exit (0); | |
| } |