]> git.ipfire.org Git - thirdparty/libbsd.git/commitdiff
test: Use open_memstream() only if available
authorGuillem Jover <guillem@hadrons.org>
Mon, 10 Apr 2023 21:11:33 +0000 (23:11 +0200)
committerGuillem Jover <guillem@hadrons.org>
Mon, 17 Apr 2023 02:12:42 +0000 (04:12 +0200)
On Solaris this function is not yet available.

configure.ac
test/fpurge.c

index 1b7d182e9e458fad47f9a4cf4abb3269930682c0..78a4c9764e09f4c27a4e8d2bf585b02ebeecbad0 100644 (file)
@@ -296,6 +296,7 @@ AC_CHECK_FUNCS([\
   getentropy \
   getexecname \
   getline \
+  open_memstream \
   pstat_getproc \
   sysconf \
 ])
index 62d55da231556669edeae884a83fbd1744eb7203..784f32ed9280c4aa5c93603f198abc42dadc0df6 100644 (file)
 #include <string.h>
 
 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;
 }