From a701488b6af7bc2aa39609b19ec4e981f45e6afc Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Mon, 11 Oct 2021 01:58:57 +0200 Subject: [PATCH 1/2] valgrind suppression file for readline() + ./.valgrindrc + basic free_exit() + U_DEFAULT_* macro in _user_macro.h --- .valgrindrc | 4 ++++ Makefile | 2 +- headers/minishell_prototypes.h | 5 ++++- headers/minishell_user_macro.h | 6 ++++-- srcs/builtins/exit.c | 8 ++------ srcs/free.c | 20 ++++++++++++++++++++ srcs/init.c | 8 ++++---- valgrind_readline.supp | 6 ++++++ 8 files changed, 45 insertions(+), 14 deletions(-) create mode 100644 .valgrindrc create mode 100644 srcs/free.c create mode 100644 valgrind_readline.supp diff --git a/.valgrindrc b/.valgrindrc new file mode 100644 index 0000000..b75e382 --- /dev/null +++ b/.valgrindrc @@ -0,0 +1,4 @@ +--suppressions=./valgrind_readline.supp +--leak-check=full +--show-reachable=yes +--track-fds=yes diff --git a/Makefile b/Makefile index b53fe46..3068941 100644 --- a/Makefile +++ b/Makefile @@ -21,7 +21,7 @@ LIBS = -L $(LIBFT_D) -lft \ LIBFT_D = ./libft LIBFT = $(LIBFT_D)/libft.a -SRCS = main.c init.c generic.c \ +SRCS = main.c init.c free.c generic.c \ env.c exit.c DIR_OBJS = builds diff --git a/headers/minishell_prototypes.h b/headers/minishell_prototypes.h index 3167dc4..9ac275f 100644 --- a/headers/minishell_prototypes.h +++ b/headers/minishell_prototypes.h @@ -6,7 +6,7 @@ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/10/08 02:59:58 by lperrey #+# #+# */ -/* Updated: 2021/10/10 08:55:48 by lperrey ### ########.fr */ +/* Updated: 2021/10/10 23:55:14 by lperrey ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,6 +20,9 @@ int init(t_all *c, char *envp[]); int builtin_env(int argc, char *argv[], t_all *c); int builtin_exit(int argc, char *argv[], t_all *c); +// Free +int free_exit(t_all *c, int exit_status); + // Generic char *ft_strjoinfree(char *s1, char *s2); char *ft_strjoinfree_s1(char *s1, const char *s2); diff --git a/headers/minishell_user_macro.h b/headers/minishell_user_macro.h index 877191b..7b026e5 100644 --- a/headers/minishell_user_macro.h +++ b/headers/minishell_user_macro.h @@ -6,7 +6,7 @@ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/10/10 03:36:37 by lperrey #+# #+# */ -/* Updated: 2021/10/10 04:55:46 by lperrey ### ########.fr */ +/* Updated: 2021/10/10 20:58:28 by lperrey ### ########.fr */ /* */ /* ************************************************************************** */ @@ -15,6 +15,8 @@ # include "minishell_macro.h" -# define USER_PROMPT PROMPT_EURO +# define U_PROMPT_END PROMPT_EURO +# define U_DEFAULT_USER "NoUser" +# define U_DEFAULT_NAME "NoName" #endif diff --git a/srcs/builtins/exit.c b/srcs/builtins/exit.c index ff88c1e..2a3fd88 100644 --- a/srcs/builtins/exit.c +++ b/srcs/builtins/exit.c @@ -6,7 +6,7 @@ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/10/10 05:01:22 by lperrey #+# #+# */ -/* Updated: 2021/10/10 08:50:37 by lperrey ### ########.fr */ +/* Updated: 2021/10/11 01:50:53 by lperrey ### ########.fr */ /* */ /* ************************************************************************** */ @@ -38,9 +38,5 @@ int builtin_exit(int argc, char *argv[], t_all *c) // WIP } status = ft_atoi(argv[1]); } - // TODO : remplacer exit(status) par - (void)c; - exit(status); - return (0); - // return (free_exit(&c, status)); + return (free_exit(c, status)); } diff --git a/srcs/free.c b/srcs/free.c new file mode 100644 index 0000000..ce0826e --- /dev/null +++ b/srcs/free.c @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* free.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lperrey +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2021/10/10 23:53:17 by lperrey #+# #+# */ +/* Updated: 2021/10/10 23:59:25 by lperrey ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +int free_exit(t_all *c, int exit_status) +{ + free(c->prompt_base); + free(c->prompt); + exit(exit_status); +} diff --git a/srcs/init.c b/srcs/init.c index 207d317..6acedc0 100644 --- a/srcs/init.c +++ b/srcs/init.c @@ -6,7 +6,7 @@ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/10/08 09:22:12 by lperrey #+# #+# */ -/* Updated: 2021/10/10 08:54:17 by lperrey ### ########.fr */ +/* Updated: 2021/10/10 21:56:33 by lperrey ### ########.fr */ /* */ /* ************************************************************************** */ @@ -37,12 +37,12 @@ static char *init_prompt_base(void) if (!tmp) tmp = getenv("LOGNAME"); if (!tmp) - tmp = "NoUser"; + tmp = U_DEFAULT_USER; prompt_base = ft_strjoin(TERM_LIGHT_GREEN, tmp); prompt_base = ft_strjoinfree_s1(prompt_base, "@"); tmp = getenv("NAME"); if (!tmp) - tmp = "NoName"; + tmp = U_DEFAULT_NAME; prompt_base = ft_strjoinfree_s1(prompt_base, tmp); prompt_base = ft_strjoinfree_s1(prompt_base, TERM_RESET":"TERM_LIGHT_BLUE); return (prompt_base); @@ -53,6 +53,6 @@ static char *init_prompt(char *prompt_base) char *prompt; prompt = ft_strjoinfree_s2(prompt_base, getcwd(NULL, 0)); - prompt = ft_strjoinfree_s1(prompt, TERM_RESET USER_PROMPT); + prompt = ft_strjoinfree_s1(prompt, TERM_RESET U_PROMPT_END); return (prompt); } diff --git a/valgrind_readline.supp b/valgrind_readline.supp new file mode 100644 index 0000000..b632bcc --- /dev/null +++ b/valgrind_readline.supp @@ -0,0 +1,6 @@ +{ + + Memcheck:Leak + ... + fun:readline +} From e451a1f0508c9c332ca31a5bed8cf25487b78df9 Mon Sep 17 00:00:00 2001 From: LuckyLaszlo Date: Wed, 13 Oct 2021 16:11:13 +0200 Subject: [PATCH 2/2] arg_test program + comment libncurses-dev install --- headers/minishell.h | 4 ++-- tests/arg_test.c | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 tests/arg_test.c diff --git a/headers/minishell.h b/headers/minishell.h index 31dbb1c..47ea867 100644 --- a/headers/minishell.h +++ b/headers/minishell.h @@ -6,7 +6,7 @@ /* By: lperrey +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/10/03 19:14:46 by lperrey #+# #+# */ -/* Updated: 2021/10/10 03:37:29 by lperrey ### ########.fr */ +/* Updated: 2021/10/13 16:09:32 by lperrey ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,7 @@ # include # include # include -# include +# include // sudo apt install libncurses-dev (OR libncurses5-dev) # include # include diff --git a/tests/arg_test.c b/tests/arg_test.c new file mode 100644 index 0000000..3bcd1cc --- /dev/null +++ b/tests/arg_test.c @@ -0,0 +1,16 @@ + +# include + +int main(int argc, char *argv[], char *envp[]) +{ + int i; + + printf("argc = %i\n", argc); + i = 0; + while (argv[i]) + { + printf("argv[%i] = |%s|\n", i, argv[i]); + i++; + } + return (0); +}