check: Use mkstemp instead of tempnam if possible
authorMichał Dębski <debski.mi.zd@gmail.com>
Sun, 8 Mar 2015 19:42:38 +0000 (20:42 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Wed, 11 Mar 2015 16:14:24 +0000 (16:14 +0000)
Using tempnam() is deprecated, this gives warning and fails the build
with -Werror.

https://bugzilla.gnome.org/show_bug.cgi?id=745858

libs/gst/check/libcheck/check_msg.c
m4/check-checks.m4

index 9213674..676c18b 100644 (file)
@@ -216,10 +216,11 @@ teardown_messaging (void)
 FILE *
 open_tmp_file (char **name)
 {
-  FILE *file;
+  FILE *file = NULL;
 
   *name = NULL;
 
+#if !HAVE_MKSTEMP
   /* Windows does not like tmpfile(). This is likely because tmpfile()
    * call unlink() on the file before returning it, to make sure the
    * file is deleted when it is closed. The unlink() call also fails
@@ -250,6 +251,21 @@ open_tmp_file (char **name)
     *name = uniq_tmp_file;
     free (tmp_file);
   }
+#else
+  int fd = -1;
+  const char *tmp_dir = getenv ("TEMP");
+  if (!tmp_dir) {
+    tmp_dir = ".";
+  }
+  *name = ck_strdup_printf ("%s/check_XXXXXX", tmp_dir);
+  if (-1 < (fd = mkstemp (*name))) {
+    file = fdopen (fd, "w+b");
+    if (0 == unlink (*name) || NULL == file) {
+      free (*name);
+      *name = NULL;
+    }
+  }
+#endif
   return file;
 }
 
index bdfe37d..16ba777 100644 (file)
@@ -27,6 +27,9 @@ dnl Check for strdup() and _strdup()
 AC_CHECK_DECLS([strdup])
 AC_CHECK_FUNCS([_strdup])
 
+dnl Check for mkstemp
+AC_CHECK_FUNCS([mkstemp])
+
 dnl Check for fork
 AC_CHECK_FUNCS([fork], HAVE_FORK=1, HAVE_FORK=0)
 AC_SUBST(HAVE_FORK)