From a7797d30a857fe739f57103375608e3b999d980f Mon Sep 17 00:00:00 2001 From: =?utf8?q?Micha=C5=82=20D=C4=99bski?= Date: Sun, 8 Mar 2015 20:42:38 +0100 Subject: [PATCH] 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 --- libs/gst/check/libcheck/check_msg.c | 18 +++++++++++++++++- m4/check-checks.m4 | 3 +++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/libs/gst/check/libcheck/check_msg.c b/libs/gst/check/libcheck/check_msg.c index 9213674..676c18b 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 bdfe37d..16ba777 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) -- 2.7.4