|
Packit |
6c4009 |
#include <stdio.h>
|
|
Packit |
6c4009 |
#include <wchar.h>
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#define PASSED 0
|
|
Packit |
6c4009 |
#define FAILED 3
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
static int fd;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
static void prepare (void);
|
|
Packit |
6c4009 |
#define PREPARE(argc, argv) prepare ()
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
#define TEST_FUNCTION do_test ()
|
|
Packit |
6c4009 |
static int do_test (void);
|
|
Packit |
6c4009 |
#include "../test-skeleton.c"
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
static void
|
|
Packit |
6c4009 |
prepare (void)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
fd = create_temp_file ("wrewind.", NULL);
|
|
Packit |
6c4009 |
if (fd == -1)
|
|
Packit |
6c4009 |
exit (3);
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
static int
|
|
Packit |
6c4009 |
do_test (void)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
FILE *fptr;
|
|
Packit |
6c4009 |
char arg1;
|
|
Packit |
6c4009 |
char arg2;
|
|
Packit |
6c4009 |
int ret1, ret2, result, num;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
ret1 = 0;
|
|
Packit |
6c4009 |
ret2 = 0;
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
fptr = fdopen (fd, "w+");
|
|
Packit |
6c4009 |
if (fptr == NULL)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
printf ("Unable to open file.\n");
|
|
Packit |
6c4009 |
return 1;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
if (fwprintf (fptr, L"cderf") <= 0)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
printf ("Unable to write to file with fwprintf().\n");
|
|
Packit |
6c4009 |
fclose (fptr);
|
|
Packit |
6c4009 |
return 2;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
rewind (fptr);
|
|
Packit |
6c4009 |
ret1 = fwscanf (fptr, L"%c%c", &arg1, &arg2);
|
|
Packit |
6c4009 |
if (ret1 != 2)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
printf ("first fwscanf returned %d, expected 2\n", ret1);
|
|
Packit |
6c4009 |
return 3;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
rewind (fptr);
|
|
Packit |
6c4009 |
ret2 = fwscanf (fptr, L"%c%n%c", &arg1, &num, &arg2);
|
|
Packit |
6c4009 |
if (ret2 != 2)
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
printf ("second fwscanf returned %d, expected 2\n", ret2);
|
|
Packit |
6c4009 |
return 4;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
if (arg2 != 'd')
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
result = FAILED;
|
|
Packit |
6c4009 |
printf ("rewind after first fwscanf failed\n");
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
else
|
|
Packit |
6c4009 |
{
|
|
Packit |
6c4009 |
printf ("Passed\n");
|
|
Packit |
6c4009 |
result = PASSED;
|
|
Packit |
6c4009 |
}
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
|
|
Packit |
6c4009 |
fclose (fptr);
|
|
Packit |
6c4009 |
return result;
|
|
Packit |
6c4009 |
}
|