diff --git a/Makefile b/Makefile index dd9ca2f..2d09536 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: qmennen +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2024/10/15 11:48:46 by whaffman #+# #+# # -# Updated: 2025/02/11 15:06:22 by qmennen ### ########.fr # +# Updated: 2025/02/18 20:11:18 by qmennen ### ########.fr # # # # **************************************************************************** # @@ -22,7 +22,7 @@ LIBFT = $(LIBFT_PATH)/libft.a OBJ_PATH = obj -VPATH = src:src/environment:src/prompt:src/lexer:src/token:src/utils:src/executor:src/parser:src/expander +VPATH = src:src/environment:src/prompt:src/lexer:src/token:src/utils:src/executor:src/parser:src/expander:src/debug SOURCES = $(shell basename -a $(shell find $(SRC_PATH) -type f -name "*.c")) OBJECTS = $(addprefix $(OBJ_PATH)/, $(SOURCES:.c=.o)) diff --git a/inc/debug.h b/inc/debug.h new file mode 100644 index 0000000..934b75a --- /dev/null +++ b/inc/debug.h @@ -0,0 +1,20 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* debug.h :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/18 20:06:53 by qmennen #+# #+# */ +/* Updated: 2025/02/18 20:10:49 by qmennen ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#ifndef DEBUG_H +# define DEBUG_H + +# include "minishell.h" + +void print_commands(void *param); + +#endif diff --git a/inc/minishell.h b/inc/minishell.h index 5543c1b..55fd24e 100644 --- a/inc/minishell.h +++ b/inc/minishell.h @@ -22,6 +22,7 @@ # include "executor.h" # include "parser.h" # include "expander.h" +# include "debug.h" # include "utils.h" # define TRUE 1 diff --git a/src/debug/print_commands.c b/src/debug/print_commands.c new file mode 100644 index 0000000..88ed829 --- /dev/null +++ b/src/debug/print_commands.c @@ -0,0 +1,29 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* print_commands.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: qmennen +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2025/02/18 20:06:37 by qmennen #+# #+# */ +/* Updated: 2025/02/18 20:11:45 by qmennen ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "minishell.h" + +void print_commands(void *param) +{ + t_command *command; + int i; + + command = (t_command *)param; + if (!command) + return ; + printf("command: %s\n", command->command); + printf("args: "); + i = 0; + while (command->args[i++]) + printf("%s ", command->args[i]); + printf("\n"); +} diff --git a/src/expander/expander.c b/src/expander/expander.c index 7910737..bf8a6eb 100644 --- a/src/expander/expander.c +++ b/src/expander/expander.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/18 19:00:35 by qmennen #+# #+# */ -/* Updated: 2025/02/18 20:00:51 by qmennen ### ########.fr */ +/* Updated: 2025/02/18 20:31:36 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -33,7 +33,7 @@ static size_t len_var_name(const char *s) return (0); start++; i = 0; - while (s[start + i]) + while (s[start + i] && !ft_isspace(s[start + i])) i++; return (i); } @@ -53,17 +53,23 @@ static char *get_env_value(char *s) static char *expand_string(char *s, t_environment *env) { + char *s1; + char *s2; + char *s3; char *final_str; - final_str = ft_calloc(1, ft_strlen(env->value) + len_prefix(s) + 1); + final_str = ft_calloc(1, ft_strlen(env->value) + ft_strlen(s) - len_var_name(s)); if (!final_str) { perror("malloc"); exit(EXIT_FAILURE); } - ft_strlcat(final_str, s, len_prefix(s) + 1); - ft_strlcat(final_str, env->value, ft_strlen(env->value)); - return (final_str); + s1 = ft_substr(s, 0, len_prefix(s)); + s2 = ft_strdup(env->value); + s3 = ft_substr(s, len_prefix(s) + 1 + len_var_name(s),len_prefix(s) + len_var_name(s) - ft_strlen(s)); + if (!s1 || !s2 || !s3) + perror("expand"); + return (ft_strjoin(ft_strjoin(s1, s2), s3)); } char *expander_parse_string(char *s, t_minishell *minishell) @@ -80,6 +86,8 @@ char *expander_parse_string(char *s, t_minishell *minishell) if (!name) return (ft_strdup("")); env = environment_get(minishell->environment, name); + if (!env) + return (ft_strdup("")); result = expand_string(s, env); free(name); return (result); diff --git a/src/parser/parser_get_commands.c b/src/parser/parser_get_commands.c index a911dcf..d417835 100644 --- a/src/parser/parser_get_commands.c +++ b/src/parser/parser_get_commands.c @@ -6,7 +6,7 @@ /* By: qmennen +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/02/11 14:06:02 by qmennen #+# #+# */ -/* Updated: 2025/02/18 19:29:38 by qmennen ### ########.fr */ +/* Updated: 2025/02/18 20:31:54 by qmennen ### ########.fr */ /* */ /* ************************************************************************** */ @@ -34,6 +34,6 @@ t_list *parser_get_commands(t_minishell *minishell) if (current && ((t_token *)current->content)->type != T_WORD) current = current->next; } - //ft_lstiter(command_list, print_cmds); +// ft_lstiter(command_list, print_commands); return (command_list); }