Blame src/regression/rewind-clear-error.c

Szabolcs Nagy d6b6cb
// commit: a6238c30d169cbac6bc4c4977622242063e32270 2011-02-22
Szabolcs Nagy d6b6cb
// rewind should clear error
Szabolcs Nagy d6b6cb
#include <stdio.h>
Szabolcs Nagy d6b6cb
#include <unistd.h>
Szabolcs Nagy d6b6cb
#include "test.h"
Szabolcs Nagy d6b6cb
Szabolcs Nagy d6b6cb
int main(void)
Szabolcs Nagy d6b6cb
{
Szabolcs Nagy d6b6cb
	char buf[1];
Szabolcs Nagy d6b6cb
	size_t n;
Szabolcs Nagy d6b6cb
	int fd;
Szabolcs Nagy d6b6cb
Szabolcs Nagy d6b6cb
	// make sure fread fails
Szabolcs Nagy d6b6cb
	fd = dup(0);
Szabolcs Nagy d6b6cb
	close(0);
Szabolcs Nagy d6b6cb
Szabolcs Nagy d6b6cb
	n = fread(buf, 1, sizeof buf, stdin);
Szabolcs Nagy d6b6cb
	if (n != 0 || !ferror(stdin))
Szabolcs Nagy d6b6cb
		t_error("fread(stdin) should have failed, got %d ferror %d feof %d\n",
Szabolcs Nagy d6b6cb
			n, ferror(stdin), feof(stdin));
Szabolcs Nagy d6b6cb
	if (dup(fd) != 0)
Szabolcs Nagy d6b6cb
		t_error("dup failed\n");
Szabolcs Nagy d6b6cb
Szabolcs Nagy d6b6cb
	rewind(stdin);
Szabolcs Nagy d6b6cb
	if (ferror(stdin))
Szabolcs Nagy d6b6cb
		t_error("rewind failed to clear ferror\n");
Szabolcs Nagy d6b6cb
	return t_status;
Szabolcs Nagy d6b6cb
}