Blame libio/bug-rewind.c

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
}