Skip to content
Permalink
1ab9366daa
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
76 lines (63 sloc) 1.19 KB
/* Test program for bug in wide streams. */
#include <stdio.h>
#include <wchar.h>
static void do_prepare (void);
#define PREPARE(argc, argv) do_prepare ()
static int do_test (void);
#define TEST_FUNCTION do_test ()
#include <test-skeleton.c>
static char *temp_file;
static void
do_prepare (void)
{
int fd = create_temp_file ("bug-ungetc.", &temp_file);
if (fd == -1)
{
printf ("cannot create temporary file: %m\n");
exit (1);
}
write (fd, "1!", 2);
close (fd);
}
static int
do_test (void)
{
FILE *f = fopen (temp_file, "r+");
if (f == NULL)
{
printf ("fopen: %m\n");
return 1;
}
#define L_(s) L##s
//#define fwscanf fscanf
//#define fwprintf fprintf
int i;
if (fwscanf (f, L_("%d!"), &i) != 1)
{
printf ("fwscanf failed\n");
return 1;
}
rewind (f);
if (ferror (f))
{
printf ("rewind: %m\n");
return 1;
}
if (fputws (L_("1!"), f) == EOF)
{
printf ("fputws: %m\n");
return 1;
}
if (fflush (f) != 0)
{
printf ("fflush: %m\n");
return 1;
}
if (fclose (f) != 0)
{
printf ("fclose: %m\n");
return 1;
}
puts ("Test succeeded.");
return 0;
}