diff --git a/configure.ac b/configure.ac index 1b7d182..78a4c97 100644 --- a/configure.ac +++ b/configure.ac @@ -296,6 +296,7 @@ AC_CHECK_FUNCS([\ getentropy \ getexecname \ getline \ + open_memstream \ pstat_getproc \ sysconf \ ]) diff --git a/test/fpurge.c b/test/fpurge.c index 62d55da..784f32e 100644 --- a/test/fpurge.c +++ b/test/fpurge.c @@ -29,23 +29,36 @@ #include static int -test_memstream(FILE *fp, size_t bufsz) +test_memstream(void) { + int rc = 0; +#if HAVE_OPEN_MEMSTREAM + FILE *fp; + char *buf = NULL; + size_t bufsz = 0; + + fp = open_memstream(&buf, &bufsz); + if (fp == NULL) + return 1; + fputs("World", fp); if (fpurge(fp) < 0) - return 1; + rc = 1; fflush(fp); if (bufsz != 0) - return 1; - return 0; + rc = 1; + + fclose(fp); + free(buf); +#endif + + return rc; } int main(int argc, char *argv[]) { FILE *fp; - char *buf = NULL; - size_t bufsz = 0; int rc; if (fpurge(NULL) == 0) @@ -54,13 +67,9 @@ main(int argc, char *argv[]) fp = fopen("/dev/zero", "r"); if (fpurge(fp) < 0) return 1; - fclose(fp); - fp = open_memstream(&buf, &bufsz); - rc = test_memstream(fp, bufsz); - fclose(fp); - free(buf); + rc = test_memstream(); return rc; }