diff --git a/src/input/input.c b/src/input/input.c index 6d07ffb..915035e 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -1,12 +1,5 @@ -#include +#include "./input.h" #include -#include -#include -#include -#include "../../lib/bozolib/bozolib.h" -#include "../../lib/bozolib/src/str/str.h" -#include "../env/env.h" -#include static char* get_prompt(lst** env) { @@ -40,6 +33,29 @@ static char* get_prompt(lst** env) return out; } +static void finisher(char** strs) +{ + char* tmp; + char* tmp2; + (void)tmp2; + if (strs[0] == NULL) + return; + while (strs[0] != NULL && is_in_quote(strs[0], 0 - 1)) + { + tmp2 = readline("> "); + if (tmp2 == NULL) + return; + tmp = str_merger(3, "\n", strs[0], tmp2); + free(strs[0]); + if (tmp == NULL) + { + strs[0] = NULL; + return; + } + strs[0] = tmp; + } +} + char *get_user_input(lst** env) { char *prompt; @@ -50,6 +66,7 @@ char *get_user_input(lst** env) return NULL; input = readline(prompt); free(prompt); + finisher(&input); if (input == NULL) printf("exit"); if (input != NULL && str_contain_only(input, "\t ") == 0) diff --git a/src/input/input.h b/src/input/input.h index d12d998..58bdcc9 100644 --- a/src/input/input.h +++ b/src/input/input.h @@ -1,5 +1,14 @@ #pragma once +#include +#include +#include +#include +#include +#include + #include "../../lib/bozolib/bozolib.h" +#include "../utils/utils.h" +#include "../env/env.h" char *get_user_input(lst** env);