52 lines
1 KiB
C
52 lines
1 KiB
C
/* 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);
|
|
}
|