From f71d0a218385609ef2ef60f6b1bdcabb4879a7ed Mon Sep 17 00:00:00 2001 From: Jean Herail Date: Mon, 12 Jan 2026 22:27:26 +0100 Subject: [PATCH 1/3] feat(main_loop): Wrote the base of the main entrypoint. Implemented a helper which converts the args options to iob_context --- src/io_backend/io_backend.c | 27 +++++++++++++++++ src/io_backend/io_backend.h | 8 +++++ src/main.c | 59 +++++++++++++++++++++++++++++++++---- 3 files changed, 89 insertions(+), 5 deletions(-) diff --git a/src/io_backend/io_backend.c b/src/io_backend/io_backend.c index 176585f..9cb6c68 100644 --- a/src/io_backend/io_backend.c +++ b/src/io_backend/io_backend.c @@ -2,6 +2,8 @@ #include +#include "utils/args/args.h" + static struct iob_context context; static FILE *input; @@ -33,3 +35,28 @@ int iob_init(struct iob_context *ctx) return -1; } } + +int iob_config_from_args(struct args_options *args, struct iob_context *ctx) +{ + switch (args->type) + { + case INPUT_STDIN: + ctx->mode = IOB_MODE_STDIN; + ctx->args = NULL; + break; + + case INPUT_FILE: + ctx->mode = IOB_MODE_SCRIPT; + ctx->args = (char *)args->input_source; + break; + + case INPUT_CMD: + ctx->mode = IOB_MODE_CMD; + ctx->args = NULL; + break; + + default: + return -1; + } + return 0; +} \ No newline at end of file diff --git a/src/io_backend/io_backend.h b/src/io_backend/io_backend.h index fab5cce..3f6a07e 100644 --- a/src/io_backend/io_backend.h +++ b/src/io_backend/io_backend.h @@ -23,6 +23,14 @@ struct iob_context char *args; }; +/** + * @brief Converts struct arg_options to iob_context + * + * @param args The arguments options struct + * @param ctx The IO Backend context struct to populate + * @return int 0 on success, negative value on error + */ +int iob_config_from_args(struct args_options *args, struct iob_context *ctx); /* * @brief Initializes the IO Backend module * diff --git a/src/main.c b/src/main.c index 6ced238..b664786 100644 --- a/src/main.c +++ b/src/main.c @@ -1,19 +1,68 @@ -// all includes - +// All the includes #include +#include +#include "execution/execution.h" +#include "io_backend/io_backend.h" +#include "parser/parser.h" #include "utils/args/args.h" +enum return_codes +{ + SUCCESS = 0, + ERR_IO_BACKEND = 2, + ERR_MALLOC = 3 +}; + int main(int argc, char **argv) { + // Create the options struct (with argument handler) struct args_options options; int r = args_handler(argc, argv, &options); if (r != 0) { print_usage(stderr, argv[0]); - return 2; + return ERR_IO_BACKEND; + } + // args_print(&options); + + // Create the IO-Backend context struct + struct iob_context *io_context = malloc(sizeof(struct iob_context)); + if (io_context == NULL) + { + fprintf(stderr, + "Error: Memory allocation failed for IO Backend context\n"); + return ERR_MALLOC; } - args_print(&options); - return 0; + // Convert args_options to iob_context + r = iob_config_from_args(&options, io_context); + if (r != 0) + { + fprintf(stderr, + "Error: Failed to configure IO Backend from arguments\n"); + free(io_context); + return ERR_IO_BACKEND; + } + + // Init IO Backend (with the context struct) + r = iob_init(io_context); + if (r != 0) + { + fprintf(stderr, + "Error: IO Backend initialization failed with code %d\n", r); + free(io_context); + return ERR_IO_BACKEND; + } + + free(io_context); + + // Call the parser to get the AST + struct ast *command_ast = get_ast(); // We'll pass the options later + + // Call the executor with the AST + r = execution(command_ast); + + // Return the execution return code (last command executed) + return r; } From f8018943007c288c64c5f07c3d7e2a3e15707a0e Mon Sep 17 00:00:00 2001 From: Jean Herail Date: Mon, 12 Jan 2026 22:33:43 +0100 Subject: [PATCH 2/3] fix(args): fixed a missing include in args --- src/io_backend/io_backend.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/io_backend/io_backend.h b/src/io_backend/io_backend.h index 3f6a07e..2feb2c4 100644 --- a/src/io_backend/io_backend.h +++ b/src/io_backend/io_backend.h @@ -3,6 +3,8 @@ #include +#include "utils/args/args.h" + enum iob_mode { IOB_MODE_NULL = 0, From 466199ae0de51109737b884174c93ad470e60254 Mon Sep 17 00:00:00 2001 From: Jean Herail Date: Tue, 13 Jan 2026 20:54:51 +0100 Subject: [PATCH 3/3] changed the commands in the readme --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index bbab8c7..be08206 100644 --- a/README.md +++ b/README.md @@ -8,19 +8,20 @@ TODO ### Build run this command: - autoreconf --force --verbose --install + `autoreconf --force --verbose --install` ### Test run this command: - ./configure CFLAGS='-std=c99 -Werror -Wall -Wextra -Wvla' + `./configure CFLAGS='-std=c99 -Werror -Wall -Wextra -Wvla'` then: - make + `make` #### asan run this command: - ./configure CFLAGS='-std=c99 -Werror -Wall -Wextra -Wvla -g -fsanitize=address' + `./configure CFLAGS='-std=c99 -Werror -Wall -Wextra -Wvla -g -fsanitize=address'` + then: - make check + `make check` ## Authors