| /* 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); |
| } |