Blame libio/bug-rewind2.c

Packit Service 82fcde
#include <stdio.h>
Packit Service 82fcde
#include <wchar.h>
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
static int fd;
Packit Service 82fcde
Packit Service 82fcde
static void prepare (void);
Packit Service 82fcde
#define PREPARE(argc, argv) prepare ()
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
#define TEST_FUNCTION do_test ()
Packit Service 82fcde
static int do_test (void);
Packit Service 82fcde
#include "../test-skeleton.c"
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
static void
Packit Service 82fcde
prepare (void)
Packit Service 82fcde
{
Packit Service 82fcde
  fd = create_temp_file ("wrewind2.", NULL);
Packit Service 82fcde
  if (fd == -1)
Packit Service 82fcde
    exit (3);
Packit Service 82fcde
}
Packit Service 82fcde
Packit Service 82fcde
Packit Service 82fcde
static int
Packit Service 82fcde
do_test (void)
Packit Service 82fcde
{
Packit Service 82fcde
  wchar_t dummy[10];
Packit Service 82fcde
  int ret = 0;
Packit Service 82fcde
  FILE *fp;
Packit Service 82fcde
  int result = 0;
Packit Service 82fcde
Packit Service 82fcde
  fp = fdopen (fd, "w+");
Packit Service 82fcde
  if (fp == NULL)
Packit Service 82fcde
    {
Packit Service 82fcde
      puts ("fopen(""testfile"", ""w+"") returned NULL.");
Packit Service 82fcde
      return 1;
Packit Service 82fcde
    }
Packit Service 82fcde
  else
Packit Service 82fcde
    {
Packit Service 82fcde
      fwprintf (fp, L"abcd");
Packit Service 82fcde
      printf ("current pos = %ld\n", ftell (fp));
Packit Service 82fcde
      if (ftell (fp) != 4)
Packit Service 82fcde
	result = 1;
Packit Service 82fcde
Packit Service 82fcde
      rewind (fp);
Packit Service 82fcde
      ret = fwscanf (fp, L"%c", dummy);
Packit Service 82fcde
      if (ret != 1)
Packit Service 82fcde
	{
Packit Service 82fcde
	  printf ("fwscanf returned %d, expected 1\n", ret);
Packit Service 82fcde
	  result = 1;
Packit Service 82fcde
	}
Packit Service 82fcde
Packit Service 82fcde
      printf ("current pos = %ld\n", ftell (fp));
Packit Service 82fcde
      if (ftell (fp) != 1)
Packit Service 82fcde
	result = 1;
Packit Service 82fcde
Packit Service 82fcde
      rewind (fp);
Packit Service 82fcde
      printf ("current pos = %ld\n", ftell (fp));
Packit Service 82fcde
      if (ftell (fp) != 0)
Packit Service 82fcde
	result = 1;
Packit Service 82fcde
Packit Service 82fcde
      fclose (fp);
Packit Service 82fcde
    }
Packit Service 82fcde
Packit Service 82fcde
  return result;
Packit Service 82fcde
}