struct file_info { const struct input_dev *iop; /* Input operations */ const struct output_dev *oop; /* Output operations */ /* Structure used for input blocking */ struct { int blocklg2; /* Blocksize log 2 */ size_t offset; /* Current file offset */ size_t length; /* Total file length */ uint16_t filedes; /* File descriptor */ uint16_t _filler; /* Unused */ size_t nbytes; /* Number of bytes available in buffer */ char *datap; /* Current data pointer */ char buf[MAXBLOCK]; } i; /* Output file data */ struct { int rows, cols; /* Rows and columns */ } o; /* FS specific data */ void* fs; };