Blame src/regression/fgets-eof.c

Szabolcs Nagy baa9bf
// fgets must not modify the buffer on eof
Szabolcs Nagy baa9bf
#include <stdio.h>
Szabolcs Nagy baa9bf
#include <stdlib.h>
Szabolcs Nagy baa9bf
#include <string.h>
Szabolcs Nagy baa9bf
#include "test.h"
Szabolcs Nagy baa9bf
Szabolcs Nagy baa9bf
#define ASSERT(c) do { if (!(c)) t_error("%s failed\n", #c); } while(0)
Szabolcs Nagy baa9bf
Szabolcs Nagy baa9bf
int main(void)
Szabolcs Nagy baa9bf
{
Szabolcs Nagy baa9bf
	char buf[] = "test";
Szabolcs Nagy baa9bf
	char s[10];
Szabolcs Nagy baa9bf
	FILE *f;
Szabolcs Nagy baa9bf
Szabolcs Nagy baa9bf
	ASSERT((f = fmemopen(buf, sizeof buf, "r")) != 0);
Szabolcs Nagy baa9bf
	ASSERT(fgets(s, sizeof s, f) == s);
Szabolcs Nagy baa9bf
	ASSERT(strcmp(s, buf) == 0);
Szabolcs Nagy baa9bf
	ASSERT(fgets(s, sizeof s, f) == 0);
Szabolcs Nagy baa9bf
	if (s[0] != 't')
Szabolcs Nagy baa9bf
		t_error("fgets modified the buffer after eof\n");
Szabolcs Nagy baa9bf
	return t_status;
Szabolcs Nagy baa9bf
}