diff options
Diffstat (limited to 'libavcodec/libxvid_rc.c')
-rw-r--r-- | libavcodec/libxvid_rc.c | 65 |
1 files changed, 19 insertions, 46 deletions
diff --git a/libavcodec/libxvid_rc.c b/libavcodec/libxvid_rc.c index 26f3c49..0fd030c 100644 --- a/libavcodec/libxvid_rc.c +++ b/libavcodec/libxvid_rc.c @@ -3,75 +3,42 @@ * * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> * - * This file is part of Libav. + * This file is part of FFmpeg. * - * Libav is free software; you can redistribute it and/or + * 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. * - * Libav is distributed in the hope that it will be useful, + * 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 Libav; if not, write to the Free Software + * 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" -#if !HAVE_MKSTEMP -#include <fcntl.h> +#if HAVE_IO_H +#include <io.h> #endif + +#if HAVE_UNISTD_H #include <unistd.h> +#endif + #include <xvid.h> #include "libavutil/attributes.h" -#include "libavutil/internal.h" +#include "libavutil/file.h" #include "avcodec.h" #include "libxvid.h" #include "mpegvideo.h" -/* Wrapper to work around the lack of mkstemp() on mingw. - * Also, tries to create file in /tmp first, if possible. - * *prefix can be a character constant; *filename will be allocated internally. - * @return file descriptor of opened file (or -1 on error) - * and opened file name in **filename. */ -int ff_tempfile(const char *prefix, char **filename) -{ - int fd = -1; -#if !HAVE_MKSTEMP - *filename = tempnam(".", prefix); -#else - size_t len = strlen(prefix) + 12; /* room for "/tmp/" and "XXXXXX\0" */ - *filename = av_malloc(len); -#endif - /* -----common section-----*/ - if (!(*filename)) { - av_log(NULL, AV_LOG_ERROR, "ff_tempfile: Cannot allocate file name\n"); - return AVERROR(ENOMEM); - } -#if !HAVE_MKSTEMP - fd = avpriv_open(*filename, O_RDWR | O_BINARY | O_CREAT, 0444); -#else - snprintf(*filename, len, "/tmp/%sXXXXXX", prefix); - fd = mkstemp(*filename); - if (fd < 0) { - snprintf(*filename, len, "./%sXXXXXX", prefix); - fd = mkstemp(*filename); - } -#endif - /* -----common section-----*/ - if (fd < 0) { - av_log(NULL, AV_LOG_ERROR, "ff_tempfile: Cannot open temporary file %s\n", *filename); - return AVERROR(EIO); - } - return fd; /* success */ -} - av_cold int ff_xvid_rate_control_init(MpegEncContext *s) { char *tmp_name; @@ -79,7 +46,7 @@ av_cold int ff_xvid_rate_control_init(MpegEncContext *s) xvid_plg_create_t xvid_plg_create = { 0 }; xvid_plugin_2pass2_t xvid_2pass2 = { 0 }; - fd = ff_tempfile("xvidrc.", &tmp_name); + fd = av_tempfile("xvidrc.", &tmp_name, 0, s->avctx); if (fd < 0) { av_log(NULL, AV_LOG_ERROR, "Can't create temporary pass2 file.\n"); return fd; @@ -100,7 +67,13 @@ av_cold int ff_xvid_rate_control_init(MpegEncContext *s) (rce->i_tex_bits + rce->p_tex_bits + rce->misc_bits + 7) / 8, (rce->header_bits + rce->mv_bits + 7) / 8); - write(fd, tmp, strlen(tmp)); + if (write(fd, tmp, strlen(tmp)) < 0) { + int ret = AVERROR(errno); + av_log(NULL, AV_LOG_ERROR, "Error %s writing 2pass logfile\n", av_err2str(ret)); + av_free(tmp_name); + close(fd); + return ret; + } } close(fd); |