From e713a2d85dad51705a892243170dfbe929b6515a 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 --- configure | 2 ++ libavutil/file_open.c | 8 +++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/configure b/configure index f84fefeaab..e1a1744da9 100755 --- a/configure +++ b/configure @@ -2414,6 +2414,7 @@ SYSTEM_FUNCS=" sysconf sysctl sysctlbyname + tempnam usleep UTGetOSTypeFromString VirtualAlloc @@ -6554,6 +6555,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 24ef33e3da..4692035d55 100644 --- a/libavutil/file_open.c +++ b/libavutil/file_open.c @@ -112,7 +112,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); @@ -120,8 +123,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) {