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