summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Dębski <debski.mi.zd@gmail.com>2015-03-08 20:42:38 +0100
committerSebastian Dröge <sebastian@centricular.com>2015-03-11 16:14:24 +0000
commita7797d30a857fe739f57103375608e3b999d980f (patch)
tree362f162d914e23d3d464ec1cc07d3d0fb89b179f
parent4b174b14f51b4d405674c0d1054e82f5dbc82094 (diff)
check: Use mkstemp instead of tempnam if possible
Using tempnam() is deprecated, this gives warning and fails the build with -Werror. https://bugzilla.gnome.org/show_bug.cgi?id=745858
-rw-r--r--libs/gst/check/libcheck/check_msg.c18
-rw-r--r--m4/check-checks.m43
2 files changed, 20 insertions, 1 deletions
diff --git a/libs/gst/check/libcheck/check_msg.c b/libs/gst/check/libcheck/check_msg.c
index 9213674bf..676c18b6b 100644
--- a/libs/gst/check/libcheck/check_msg.c
+++ b/libs/gst/check/libcheck/check_msg.c
@@ -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;
}
diff --git a/m4/check-checks.m4 b/m4/check-checks.m4
index bdfe37dbe..16ba777d3 100644
--- a/m4/check-checks.m4
+++ b/m4/check-checks.m4
@@ -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)