Blame libio/bug-rewind2.c

Packit 6c4009
#include <stdio.h>
Packit 6c4009
#include <wchar.h>
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 ("wrewind2.", 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
  wchar_t dummy[10];
Packit 6c4009
  int ret = 0;
Packit 6c4009
  FILE *fp;
Packit 6c4009
  int result = 0;
Packit 6c4009
Packit 6c4009
  fp = fdopen (fd, "w+");
Packit 6c4009
  if (fp == NULL)
Packit 6c4009
    {
Packit 6c4009
      puts ("fopen(""testfile"", ""w+"") returned NULL.");
Packit 6c4009
      return 1;
Packit 6c4009
    }
Packit 6c4009
  else
Packit 6c4009
    {
Packit 6c4009
      fwprintf (fp, L"abcd");
Packit 6c4009
      printf ("current pos = %ld\n", ftell (fp));
Packit 6c4009
      if (ftell (fp) != 4)
Packit 6c4009
	result = 1;
Packit 6c4009
Packit 6c4009
      rewind (fp);
Packit 6c4009
      ret = fwscanf (fp, L"%c", dummy);
Packit 6c4009
      if (ret != 1)
Packit 6c4009
	{
Packit 6c4009
	  printf ("fwscanf returned %d, expected 1\n", ret);
Packit 6c4009
	  result = 1;
Packit 6c4009
	}
Packit 6c4009
Packit 6c4009
      printf ("current pos = %ld\n", ftell (fp));
Packit 6c4009
      if (ftell (fp) != 1)
Packit 6c4009
	result = 1;
Packit 6c4009
Packit 6c4009
      rewind (fp);
Packit 6c4009
      printf ("current pos = %ld\n", ftell (fp));
Packit 6c4009
      if (ftell (fp) != 0)
Packit 6c4009
	result = 1;
Packit 6c4009
Packit 6c4009
      fclose (fp);
Packit 6c4009
    }
Packit 6c4009
Packit 6c4009
  return result;
Packit 6c4009
}