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 |
}
|