static int stdio_fclose(void *opaque)

{

    QEMUFileStdio *s = opaque;

    int ret = 0;



    if (s->file->ops->put_buffer || s->file->ops->writev_buffer) {

        int fd = fileno(s->stdio_file);

        struct stat st;



        ret = fstat(fd, &st);

        if (ret == 0 && S_ISREG(st.st_mode)) {

            /*

             * If the file handle is a regular file make sure the

             * data is flushed to disk before signaling success.

             */

            ret = fsync(fd);

            if (ret != 0) {

                ret = -errno;

                return ret;

            }

        }

    }

    if (fclose(s->stdio_file) == EOF) {

        ret = -errno;

    }

    g_free(s);

    return ret;

}

static int stdio_fclose(void *opaque)

{

    QEMUFileStdio *s = opaque;

    int ret = 0;



    if (s->file->ops->put_buffer || s->file->ops->writev_buffer) {

        int fd = fileno(s->stdio_file);

        struct stat st;



        ret = fstat(fd, &st);

        if (ret == 0 && S_ISREG(st.st_mode)) {

            







            ret = fsync(fd);

            if (ret != 0) {

                ret = -errno;

                return ret;

            }

        }

    }

    if (fclose(s->stdio_file) == EOF) {

        ret = -errno;

    }

    g_free(s);

    return ret;

}

static int FUNC_0(void *VAR_0)

{

    QEMUFileStdio *s = VAR_0;

    int VAR_1 = 0;



    if (s->file->ops->put_buffer || s->file->ops->writev_buffer) {

        int VAR_2 = fileno(s->stdio_file);

        struct stat VAR_3;



        VAR_1 = fstat(VAR_2, &VAR_3);

        if (VAR_1 == 0 && S_ISREG(VAR_3.st_mode)) {

            







            VAR_1 = fsync(VAR_2);

            if (VAR_1 != 0) {

                VAR_1 = -errno;

                return VAR_1;

            }

        }

    }

    if (fclose(s->stdio_file) == EOF) {

        VAR_1 = -errno;

    }

    g_free(s);

    return VAR_1;

}

static int FUNC_0(void *VAR_0)
{ QEMUFileStdio *s = VAR_0; int VAR_1 = 0; if (s->file->ops->put_buffer || s->file->ops->writev_buffer) { int VAR_2 = fileno(s->stdio_file); struct stat VAR_3; VAR_1 = fstat(VAR_2, &VAR_3); if (VAR_1 == 0 && S_ISREG(VAR_3.st_mode)) { VAR_1 = fsync(VAR_2); if (VAR_1 != 0) { VAR_1 = -errno; return VAR_1; } } } if (fclose(s->stdio_file) == EOF) { VAR_1 = -errno; } g_free(s); return VAR_1; }