42sh/src/io_backend/io_backend.h
2026-01-13 17:05:13 +01:00

45 lines
1,020 B
C

#ifndef IO_BACKEND_H
#define IO_BACKEND_H
#include <sys/types.h>
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 */