int qemu_set_fd_handler(int fd,

                        IOHandler *fd_read,

                        IOHandler *fd_write,

                        void *opaque)

{

    static IOTrampoline fd_trampolines[FD_SETSIZE];

    IOTrampoline *tramp = &fd_trampolines[fd];



    if (tramp->tag != 0) {

        g_io_channel_unref(tramp->chan);

        g_source_remove(tramp->tag);

    }



    if (opaque) {

        GIOCondition cond = 0;



        tramp->fd_read = fd_read;

        tramp->fd_write = fd_write;

        tramp->opaque = opaque;



        if (fd_read) {

            cond |= G_IO_IN | G_IO_ERR;

        }



        if (fd_write) {

            cond |= G_IO_OUT | G_IO_ERR;

        }



        tramp->chan = g_io_channel_unix_new(fd);

        tramp->tag = g_io_add_watch(tramp->chan, cond, fd_trampoline, tramp);

    }



    return 0;

}

int qemu_set_fd_handler(int fd,

                        IOHandler *fd_read,

                        IOHandler *fd_write,

                        void *opaque)

{

    static IOTrampoline fd_trampolines[FD_SETSIZE];

    IOTrampoline *tramp = &fd_trampolines[fd];



    if (tramp->tag != 0) {

        g_io_channel_unref(tramp->chan);

        g_source_remove(tramp->tag);

    }



    if (opaque) {

        GIOCondition cond = 0;



        tramp->fd_read = fd_read;

        tramp->fd_write = fd_write;

        tramp->opaque = opaque;



        if (fd_read) {

            cond |= G_IO_IN | G_IO_ERR;

        }



        if (fd_write) {

            cond |= G_IO_OUT | G_IO_ERR;

        }



        tramp->chan = g_io_channel_unix_new(fd);

        tramp->tag = g_io_add_watch(tramp->chan, cond, fd_trampoline, tramp);

    }



    return 0;

}

    if (opaque) {
int FUNC_0(int VAR_0,

                        IOHandler *VAR_1,

                        IOHandler *VAR_2,

                        void *VAR_3)

{

    static IOTrampoline VAR_4[FD_SETSIZE];

    IOTrampoline *tramp = &VAR_4[VAR_0];



    if (tramp->tag != 0) {

        g_io_channel_unref(tramp->chan);

        g_source_remove(tramp->tag);

    }



    if (VAR_3) {

        GIOCondition cond = 0;



        tramp->VAR_1 = VAR_1;

        tramp->VAR_2 = VAR_2;

        tramp->VAR_3 = VAR_3;



        if (VAR_1) {

            cond |= G_IO_IN | G_IO_ERR;

        }



        if (VAR_2) {

            cond |= G_IO_OUT | G_IO_ERR;

        }



        tramp->chan = g_io_channel_unix_new(VAR_0);

        tramp->tag = g_io_add_watch(tramp->chan, cond, fd_trampoline, tramp);

    }



    return 0;

}

int FUNC_0(int VAR_0,
IOHandler *VAR_1,
IOHandler *VAR_2,
void *VAR_3)
{ static IOTrampoline VAR_4[FD_SETSIZE]; IOTrampoline *tramp = &VAR_4[VAR_0]; if (tramp->tag != 0) { g_io_channel_unref(tramp->chan); g_source_remove(tramp->tag); } if (VAR_3) { GIOCondition cond = 0; tramp->VAR_1 = VAR_1; tramp->VAR_2 = VAR_2; tramp->VAR_3 = VAR_3; if (VAR_1) { cond |= G_IO_IN | G_IO_ERR; } if (VAR_2) { cond |= G_IO_OUT | G_IO_ERR; } tramp->chan = g_io_channel_unix_new(VAR_0); tramp->tag = g_io_add_watch(tramp->chan, cond, fd_trampoline, tramp); } return 0; }