IO_READ
#define IO_WRITING(io) (((io)->flags & IO_RW) != IO_READ)
io->flags |= IO_READ;
if (!(mode == 0 || mode == IO_READ))
case IO_READ:
#define IO_RW (IO_READ | IO_WRITE)
io->flags |= IO_READ;
if (!(mode == 0 || mode == IO_READ))
#define IO_RW (IO_READ | IO_WRITE)
#define IO_WRITING(io) (((io)->flags & IO_RW) != IO_READ)
case IO_READ:
if (mode != IO_READ)