#ifndef IO_BACKEND_H #define IO_BACKEND_H #include enum iob_mode { IOB_MODE_NULL = 0, IOB_MODE_STDIN, IOB_MODE_SCRIPT, IOB_MODE_CMD }; /* @struct iob_context * @var mode * @var args contains * the script name when mode is set to IOB_SCRIPT, * the command to execute when mode is set to IOB_CMD, */ struct iob_context { enum iob_mode mode; char *args; }; /* * @brief Initializes the IO Backend module * * @param context contains the input mode and the args * @return 0 on success, the corresponding error code otherwise */ int iob_init(struct iob_context *context); /* @brief Closes the opened buffers and exits the modules gracefully */ void iob_close(void); /* @brief reads at most one line of the input and stores it into *stream * * @param stream is a pointer that will be set to a string to parse * @return the number of read characters if positive, the error code otherwise */ ssize_t stream_read(char **stream); #endif /* ! IO_BACKEND_H */