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
This commit is contained in:
Michał Dębski 2015-03-08 20:42:38 +01:00 committed by Sebastian Dröge
parent 4b174b14f5
commit a7797d30a8
2 changed files with 20 additions and 1 deletions

View 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;
}

View 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)