From 0c76cc2422884f4317b3223ff344d76289b5b369 Mon Sep 17 00:00:00 2001 From: gazhonsepaskwa Date: Tue, 11 Feb 2025 10:49:27 +0100 Subject: [PATCH] fixes + valgrind --- run_vg.sh | 1 + srcs/main.c | 1 + srcs/parsing/tokenizer/tokenizer.c | 6 ++-- srcs/powerline.c | 51 +++++++++++++++++++----------- valgrind.supp | 12 +++++++ 5 files changed, 49 insertions(+), 22 deletions(-) create mode 100755 run_vg.sh create mode 100644 valgrind.supp diff --git a/run_vg.sh b/run_vg.sh new file mode 100755 index 0000000..f5450c0 --- /dev/null +++ b/run_vg.sh @@ -0,0 +1 @@ +make && valgrind --leak-check=full --track-origins=yes --show-leak-kinds=all --trace-children=yes --suppressions=valgrind.supp -s ./minishell diff --git a/srcs/main.c b/srcs/main.c index a79ea4c..2760dc8 100644 --- a/srcs/main.c +++ b/srcs/main.c @@ -81,6 +81,7 @@ int main(int ac, char **av, char **envp) while (!msh->input[0] || is_only_space(msh->input) || g_sig == SIGINT) { g_sig = 0; + free(msh->input); msh->input = powerline(msh); if (!msh->input) break; diff --git a/srcs/parsing/tokenizer/tokenizer.c b/srcs/parsing/tokenizer/tokenizer.c index 7a0378a..f32617c 100644 --- a/srcs/parsing/tokenizer/tokenizer.c +++ b/srcs/parsing/tokenizer/tokenizer.c @@ -162,9 +162,9 @@ t_node *tokenize(char *str) stick_quote_node(head, 39); stick_quote_node(head, '"'); debug_token_list(head, "stick quote node"); - if (!trim_nodes(head)) - return (NULL); - debug_token_list(head, "trim_nodes"); + // if (!trim_nodes(head)) + // return (NULL); + // debug_token_list(head, "trim_nodes"); set_token(head); del_void_nodes(&head); debug_token_list(head, "tokenizer"); diff --git a/srcs/powerline.c b/srcs/powerline.c index 70f6a98..0dc86f5 100644 --- a/srcs/powerline.c +++ b/srcs/powerline.c @@ -12,39 +12,52 @@ #include "../includes/minishell.h" -static void handle_input(char *in, char *li, char *pr, t_msh *msh) +static void handle_input(char *in, t_msh *msh) { if (ft_strlen(in) > 0 && !is_only_space(in)) { add_history(in); ft_fprintf(msh->hist, "%s\n", in); } - free(pr); - free(li); +} + +char *get_pwd() +{ + char *pwd; + char *pwd_base; + char *cpy; + char *out; + + pwd = getcwd(NULL, 0); + pwd_base = pwd; + cpy = pwd; + if (ft_strncmp(pwd, "/home", 5) == 0) + { + pwd += 6; + while (*pwd && (*pwd) != '/') + pwd++; + out = ft_strjoin("~", pwd); + } + else + { + out = ft_strdup(cpy); + } + free(pwd_base); + return (out); } char *powerline(t_msh *msh) { char *pwd; - char *tilt; char *input; char *prompt; - char *line; - pwd = getcwd(NULL, 0); - tilt = " "; - if (ft_strncmp(pwd, "/home/", 6) == 0) - { - pwd += 6; - while (*pwd && (*pwd) != '/') - pwd ++; - tilt = " ~"; - } - line = ft_sprintf("%s----------------------------------------------\ -----------------------------------%s", POW5, RESET); - prompt = ft_sprintf("%s\n%s  MMOAT %s%s%s%s%s %s%s%s ", - line, POW1, POW2, POW3, POW4, tilt, pwd, RESET, POW5, RESET); + pwd = get_pwd(); + prompt = ft_sprintf("\n%s  MMOAT %s%s %s%s %s%s%s ", + POW1, POW2, POW3, POW4, pwd, RESET, POW5, RESET); input = readline(prompt); - handle_input(input, line, prompt, msh); + handle_input(input, msh); + free(prompt); + free(pwd); return (input); } diff --git a/valgrind.supp b/valgrind.supp new file mode 100644 index 0000000..1d8c335 --- /dev/null +++ b/valgrind.supp @@ -0,0 +1,12 @@ +{ + readline_leak + Memcheck:Leak + ... + fun:readline +} +{ + readline_leak + Memcheck:Leak + ... + fun:add_history +}