From 2858fbf6928d87c1c4ebffde1db34e119e51a708 Mon Sep 17 00:00:00 2001 From: SebastiaanYN Date: Sun, 28 Aug 2022 19:38:03 +0200 Subject: [PATCH] Use sed instead of patches --- Dockerfile | 1 - patches/file_open.c | 198 -------------------------------------------- scripts/build.sh | 2 +- 3 files changed, 1 insertion(+), 200 deletions(-) delete mode 100644 patches/file_open.c diff --git a/Dockerfile b/Dockerfile index 60c6117..0a00bc0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,7 +42,6 @@ RUN ./scripts/install.sh # Copy sources COPY FFmpeg FFmpeg COPY deps deps -COPY patches patches COPY scripts scripts # Build scripts diff --git a/patches/file_open.c b/patches/file_open.c deleted file mode 100644 index 8f594d8..0000000 --- a/patches/file_open.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" -#include "internal.h" -#include "mem.h" -#include -#include -#include -#if HAVE_UNISTD_H -#include -#endif -#if HAVE_IO_H -#include -#endif - -#ifdef _WIN32 -#undef open -#undef lseek -#undef stat -#undef fstat -#include -#include -#include -#include "wchar_filename.h" - -static int win32_open(const char *filename_utf8, int oflag, int pmode) -{ - int fd; - wchar_t *filename_w; - - /* convert UTF-8 to wide chars */ - if (get_extended_win32_path(filename_utf8, &filename_w)) - return -1; - if (!filename_w) - goto fallback; - - fd = _wsopen(filename_w, oflag, SH_DENYNO, pmode); - av_freep(&filename_w); - - if (fd != -1 || (oflag & O_CREAT)) - return fd; - -fallback: - /* filename may be in CP_ACP */ - return _sopen(filename_utf8, oflag, SH_DENYNO, pmode); -} -#define open win32_open -#endif - -int avpriv_open(const char *filename, int flags, ...) -{ - int fd; - unsigned int mode = 0; - va_list ap; - - va_start(ap, flags); - if (flags & O_CREAT) - mode = va_arg(ap, unsigned int); - va_end(ap); - -#ifdef O_CLOEXEC - flags |= O_CLOEXEC; -#endif -#ifdef O_NOINHERIT - flags |= O_NOINHERIT; -#endif - - fd = open(filename, flags, mode); -#if HAVE_FCNTL - if (fd != -1) { - if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) - av_log(NULL, AV_LOG_DEBUG, "Failed to set close on exec\n"); - } -#endif - - return fd; -} - -typedef struct FileLogContext { - const AVClass *class; - int log_offset; - void *log_ctx; -} FileLogContext; - -static const AVClass file_log_ctx_class = { - .class_name = "TEMPFILE", - .item_name = av_default_item_name, - .option = NULL, - .version = LIBAVUTIL_VERSION_INT, - .log_level_offset_offset = offsetof(FileLogContext, log_offset), - .parent_log_context_offset = offsetof(FileLogContext, log_ctx), -}; - -int avpriv_tempfile(const char *prefix, char **filename, int log_offset, void *log_ctx) -{ - FileLogContext file_log_ctx = { &file_log_ctx_class, log_offset, log_ctx }; - int fd = -1; -#if !HAVE_MKSTEMP - // void *ptr= tempnam(NULL, prefix); - // if(!ptr) - // ptr= tempnam(".", prefix); - void *ptr = NULL; - *filename = av_strdup(ptr); -#undef free - free(ptr); -#else - size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ - *filename = av_malloc(len); -#endif - /* -----common section-----*/ - if (!*filename) { - av_log(&file_log_ctx, AV_LOG_ERROR, "ff_tempfile: Cannot allocate file name\n"); - return AVERROR(ENOMEM); - } -#if !HAVE_MKSTEMP -# ifndef O_BINARY -# define O_BINARY 0 -# endif -# ifndef O_EXCL -# define O_EXCL 0 -# endif - fd = open(*filename, O_RDWR | O_BINARY | O_CREAT | O_EXCL, 0600); -#else - snprintf(*filename, len, "/tmp/%sXXXXXX", prefix); - fd = mkstemp(*filename); -#if defined(_WIN32) || defined (__ANDROID__) || defined(__DJGPP__) - if (fd < 0) { - snprintf(*filename, len, "./%sXXXXXX", prefix); - fd = mkstemp(*filename); - } -#endif -#endif - /* -----common section-----*/ - if (fd < 0) { - int err = AVERROR(errno); - av_log(&file_log_ctx, AV_LOG_ERROR, "ff_tempfile: Cannot open temporary file %s\n", *filename); - av_freep(filename); - return err; - } - return fd; /* success */ -} - -FILE *avpriv_fopen_utf8(const char *path, const char *mode) -{ - int fd; - int access; - const char *m = mode; - - switch (*m++) { - case 'r': access = O_RDONLY; break; - case 'w': access = O_CREAT|O_WRONLY|O_TRUNC; break; - case 'a': access = O_CREAT|O_WRONLY|O_APPEND; break; - default : - errno = EINVAL; - return NULL; - } - while (*m) { - if (*m == '+') { - access &= ~(O_RDONLY | O_WRONLY); - access |= O_RDWR; - } else if (*m == 'b') { -#ifdef O_BINARY - access |= O_BINARY; -#endif - } else if (*m) { - errno = EINVAL; - return NULL; - } - m++; - } - fd = avpriv_open(path, access, 0666); - if (fd == -1) - return NULL; - return fdopen(fd, mode); -} - -#if FF_API_AV_FOPEN_UTF8 -FILE *av_fopen_utf8(const char *path, const char *mode) -{ - return avpriv_fopen_utf8(path, mode); -} -#endif diff --git a/scripts/build.sh b/scripts/build.sh index eed97c2..1a1ea7f 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,7 +3,7 @@ set -euo pipefail cd FFmpeg -cp ../patches/file_open.c ./libavutil/file_open.c +sed -i 's,tempnam,NULL; //tempnam,g' ./libavutil/file_open.c ../build/compile.sh cp ffmpeg ../ffmpeg.wasm cp ffprobe ../ffprobe.wasm