int av_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);

    *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 == NULL) {

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

#ifdef _WIN32

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


        return err;

    }

    return fd; /* success */

}
int av_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);

    *filename = av_strdup(ptr);

#undef free

    free(ptr);

#else

    size_t len = strlen(prefix) + 12; 

    *filename = av_malloc(len);

#endif

    

    if (*filename == NULL) {

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

#ifdef _WIN32

    if (fd < 0) {

        snprintf(*filename, len, "./%sXXXXXX", prefix);

        fd = mkstemp(*filename);

    }

#endif

#endif

    

    if (fd < 0) {

        int err = AVERROR(errno);

        av_log(&file_log_ctx, AV_LOG_ERROR, "ff_tempfile: Cannot open temporary file %s\n", *filename);


        return err;

    }

    return fd; 

}
int FUNC_0(const char *VAR_0, char **VAR_1, int VAR_2, void *VAR_3) {

    FileLogContext file_log_ctx = { &file_log_ctx_class, VAR_2, VAR_3 };

    int VAR_4=-1;

#if !HAVE_MKSTEMP

    void *VAR_5= tempnam(NULL, VAR_0);

    if(!VAR_5)

        VAR_5= tempnam(".", VAR_0);

    *VAR_1 = av_strdup(VAR_5);

#undef free

    free(VAR_5);

#else

    size_t len = strlen(VAR_0) + 12; 

    *VAR_1 = av_malloc(len);

#endif

    

    if (*VAR_1 == NULL) {

        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

    VAR_4 = open(*VAR_1, O_RDWR | O_BINARY | O_CREAT | O_EXCL, 0600);

#else

    snprintf(*VAR_1, len, "/tmp/%sXXXXXX", VAR_0);

    VAR_4 = mkstemp(*VAR_1);

#ifdef _WIN32

    if (VAR_4 < 0) {

        snprintf(*VAR_1, len, "./%sXXXXXX", VAR_0);

        VAR_4 = mkstemp(*VAR_1);

    }

#endif

#endif

    

    if (VAR_4 < 0) {

        int VAR_6 = AVERROR(errno);

        av_log(&file_log_ctx, AV_LOG_ERROR, "ff_tempfile: Cannot open temporary file %s\n", *VAR_1);


        return VAR_6;

    }

    return VAR_4; 

}
int FUNC_0(const char *VAR_0, char **VAR_1, int VAR_2, void *VAR_3) { FileLogContext file_log_ctx = { &file_log_ctx_class, VAR_2, VAR_3 }; int VAR_4=-1; #if !HAVE_MKSTEMP
void *VAR_5= tempnam(NULL, VAR_0); if(!VAR_5)
VAR_5= tempnam(".", VAR_0); *VAR_1 = av_strdup(VAR_5); #undef free
free(VAR_5); #else
size_t len = strlen(VAR_0) + 12; *VAR_1 = av_malloc(len); #endif
if (*VAR_1 == NULL) { 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
VAR_4 = open(*VAR_1, O_RDWR | O_BINARY | O_CREAT | O_EXCL, 0600); #else
snprintf(*VAR_1, len, "/tmp/%sXXXXXX", VAR_0); VAR_4 = mkstemp(*VAR_1); #ifdef _WIN32
if (VAR_4 < 0) { snprintf(*VAR_1, len, "./%sXXXXXX", VAR_0); VAR_4 = mkstemp(*VAR_1); } #endif
#endif
if (VAR_4 < 0) { int VAR_6 = AVERROR(errno); av_log(&file_log_ctx, AV_LOG_ERROR, "ff_tempfile: Cannot open temporary file %s\n", *VAR_1); return VAR_6; } return VAR_4; }