From ce9c8acfc4b070686953234637764ebd0c0a1192 Mon Sep 17 00:00:00 2001 From: Zhao Zhili Date: Sun, 30 Jun 2024 18:33:18 +0800 Subject: [PATCH] avutil/file_open: Fix build error with wasi Don't assume tempnam is available when !HAVE_MKSTEMP. Check tempnam explicitly in configure. Signed-off-by: Zhao Zhili Signed-off-by: Paul B Mahol --- configure | 2 ++ libavutil/file_open.c | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/configure b/configure index 45a05c026e..906760c996 100755 --- a/configure +++ b/configure @@ -2408,6 +2408,7 @@ SYSTEM_FUNCS=" sysconf sysctl sysctlbyname + tempnam usleep UTGetOSTypeFromString VirtualAlloc @@ -6542,6 +6543,7 @@ check_struct "sys/stat.h" "struct stat" st_mtim.tv_nsec -D_BSD_SOURCE check_func strerror_r check_func sysconf check_func sysctl +check_func tempnam check_func usleep check_func_headers conio.h kbhit diff --git a/libavutil/file_open.c b/libavutil/file_open.c index ab08e5d67f..24f1a02592 100644 --- a/libavutil/file_open.c +++ b/libavutil/file_open.c @@ -111,7 +111,10 @@ int avpriv_tempfile(const char *prefix, char **filename, int log_offset, void *l { FileLogContext file_log_ctx = { &file_log_ctx_class, log_offset, log_ctx }; int fd = -1; -#if !HAVE_MKSTEMP +#if HAVE_MKSTEMP + size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ + *filename = av_malloc(len); +#elif HAVE_TEMPNAM void *ptr= tempnam(NULL, prefix); if(!ptr) ptr= tempnam(".", prefix); @@ -119,8 +122,7 @@ int avpriv_tempfile(const char *prefix, char **filename, int log_offset, void *l #undef free free(ptr); #else - size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ - *filename = av_malloc(len); + return AVERROR(ENOSYS); #endif /* -----common section-----*/ if (!*filename) {