diff --git a/Makefile b/Makefile index c81a0d7..dd51736 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ # By: ttsubo +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2025/04/03 12:55:20 by ttsubo #+# #+# # -# Updated: 2025/05/02 22:01:21 by ttsubo ### ########.fr # +# Updated: 2025/05/04 16:50:59 by ttsubo ### ########.fr # # # # **************************************************************************** # @@ -14,9 +14,12 @@ NAME = minishell CC = cc MAKEFLAGS += --no-print-directory W_FLG = -Wall -Wextra -Werror -I_FLG = -Iinc/ -Ilib/libft/ L_FLG = -lreadline -lft +HEADER_DIRS = lib/libft/ inc/ inc/builtin/ inc/common/ \ + inc/invoke_cmd/ inc/parser/ inc/signal/ inc/tokenizer/ +I_FLG = $(addprefix -I, $(HEADER_DIRS)) + # 1.Add more directories as they are added. SRC_DIR = src/ PARSER_SRC_DIR = src/parser/ @@ -45,6 +48,16 @@ define define_rule $(CC) $(W_FLG) $(I_FLG) -c $$< -o $$@) endef +TMP_LOG := .tmp_build.log + +define run_step + @echo -n "$(1)... " + @($(2) > /dev/null 2>$(TMP_LOG)) \ + && echo "✅" \ + || (echo "❌" && cat $(TMP_LOG)) + @rm -f $(TMP_LOG) +endef + # 2.Add the source code when it is added ROOT_SRC = main.c minish_signal.c initialize.c error.c COMMON_SRC = validate_key.c error_mes.c @@ -74,10 +87,10 @@ TEST=MAIN all: $(NAME) $(NAME): $(FT_DIR)$(LIBFT) $(OBJS) - $(CC) $(W_FLG) $(OBJS) -L$(FT_DIR) $(L_FLG) -o $(NAME) + $(call run_step,Building $@, $(CC) $(W_FLG) $(OBJS) -L$(FT_DIR) $(L_FLG) -o $(NAME)) $(FT_DIR)$(LIBFT): - $(MAKE) -C $(FT_DIR) + $(call run_step,Building libft, $(MAKE) -C $(FT_DIR)) $(foreach DIR,$(MODULE_DIRS), \ $(if $(filter $(DIR),root), \ @@ -87,14 +100,16 @@ $(foreach DIR,$(MODULE_DIRS), \ ) clean: - $(MAKE) -C $(FT_DIR) clean - [ -d $(OBJ_DIR) ] && find $(OBJ_DIR) -type f -name '*.o' -exec rm -f {} + || true - [ -d $(OBJ_DIR) ] && find $(OBJ_DIR) -type d -empty -not -name '.' -exec rmdir {} + || true + $(call run_step,cleaning libft, $(MAKE) -C $(FT_DIR) clean) + $(call run_step,cleaning $(NAME) objs, \ + [ -d $(OBJ_DIR) ] && find $(OBJ_DIR) -type f -name '*.o' -exec rm -f {} + || true) + $(call run_step,cleaning $(NAME) empty dirs, \ + [ -d $(OBJ_DIR) ] && find $(OBJ_DIR) -type d -empty -not -name '.' -exec rmdir {} + || true) fclean: - $(MAKE) -C $(FT_DIR) fclean + $(call run_step,Removing libft bin, $(MAKE) -C $(FT_DIR) fclean) $(MAKE) clean - rm -rf $(NAME) + $(call run_step,Removing binary, rm -rf $(NAME)) re: $(MAKE) fclean diff --git a/inc/builtin.h b/inc/builtin/builtin.h similarity index 100% rename from inc/builtin.h rename to inc/builtin/builtin.h diff --git a/inc/builtin_utils.h b/inc/builtin/builtin_utils.h similarity index 100% rename from inc/builtin_utils.h rename to inc/builtin/builtin_utils.h diff --git a/inc/env_utils.h b/inc/builtin/env_utils.h similarity index 70% rename from inc/env_utils.h rename to inc/builtin/env_utils.h index 483ecad..1a3fad5 100644 --- a/inc/env_utils.h +++ b/inc/builtin/env_utils.h @@ -6,7 +6,7 @@ /* By: ttsubo +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/17 10:25:47 by dayano #+# #+# */ -/* Updated: 2025/04/28 15:47:53 by ttsubo ### ########.fr */ +/* Updated: 2025/05/04 12:14:29 by ttsubo ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,5 +17,12 @@ void free_env_content(char *value); void remove_env_node(t_env **env_lst, t_env *target); +void free_env_list(t_env *head); +void cleanup_minish(t_minish *minish); +void handle_error_and_exit(const char *func_name, t_minish *minish); +void add_env_back(t_env **lst, t_env *new); +t_env *get_env_node(t_env *current, const char *key); +char *get_env_value(t_env *current, const char *key); +bool has_env_key(t_env *current, const char *key); #endif diff --git a/inc/expand_env.h b/inc/builtin/expand_env.h similarity index 93% rename from inc/expand_env.h rename to inc/builtin/expand_env.h index 43dc24e..5df7632 100644 --- a/inc/expand_env.h +++ b/inc/builtin/expand_env.h @@ -6,7 +6,7 @@ /* By: ttsubo +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/26 11:24:25 by ttsubo #+# #+# */ -/* Updated: 2025/04/29 11:45:55 by ttsubo ### ########.fr */ +/* Updated: 2025/05/04 12:15:01 by ttsubo ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,7 @@ # define EXPAND_ENV_H # include "common.h" -# include "env_utils_3.h" +# include "env_utils.h" # include "struct.h" # include diff --git a/inc/cmd.h b/inc/common/cmd.h similarity index 100% rename from inc/cmd.h rename to inc/common/cmd.h diff --git a/inc/common.h b/inc/common/common.h similarity index 87% rename from inc/common.h rename to inc/common/common.h index 9a19ba2..a7c0d6d 100644 --- a/inc/common.h +++ b/inc/common/common.h @@ -6,7 +6,7 @@ /* By: ttsubo +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/29 11:44:19 by ttsubo #+# #+# */ -/* Updated: 2025/04/29 14:12:51 by ttsubo ### ########.fr */ +/* Updated: 2025/05/04 12:18:40 by ttsubo ### ########.fr */ /* */ /* ************************************************************************** */ @@ -16,6 +16,10 @@ # include # include # include "libft.h" +# include "cmd.h" +# include "error.h" +# include "initialize.h" +# include "struct.h" bool is_key_start(int c); bool is_key_char(int c); diff --git a/inc/error.h b/inc/common/error.h similarity index 83% rename from inc/error.h rename to inc/common/error.h index ba2e68d..bda5128 100644 --- a/inc/error.h +++ b/inc/common/error.h @@ -3,15 +3,17 @@ /* ::: :::::::: */ /* error.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dayano +#+ +:+ +#+ */ +/* By: ttsubo +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/29 13:48:47 by dayano #+# #+# */ -/* Updated: 2025/04/29 14:35:12 by dayano ### ########.fr */ +/* Updated: 2025/05/04 12:20:34 by ttsubo ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef ERROR_H # define ERROR_H +# include +# include void print_error(char *cmd_or_path); diff --git a/inc/initialize.h b/inc/common/initialize.h similarity index 100% rename from inc/initialize.h rename to inc/common/initialize.h diff --git a/inc/struct.h b/inc/common/struct.h similarity index 100% rename from inc/struct.h rename to inc/common/struct.h diff --git a/inc/env_utils_2.h b/inc/env_utils_2.h deleted file mode 100644 index 6ced67b..0000000 --- a/inc/env_utils_2.h +++ /dev/null @@ -1,22 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* env_utils_2.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ttsubo +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/04/17 11:40:36 by dayano #+# #+# */ -/* Updated: 2025/05/01 15:20:13 by ttsubo ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef ENV_UTILS_2_H -# define ENV_UTILS_2_H - -# include "struct.h" - -void free_env_list(t_env *head); -void cleanup_minish(t_minish *minish); -void handle_error_and_exit(const char *func_name, t_minish *minish); - -#endif diff --git a/inc/env_utils_3.h b/inc/env_utils_3.h deleted file mode 100644 index ec2e8ff..0000000 --- a/inc/env_utils_3.h +++ /dev/null @@ -1,23 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* env_utils_3.h :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: ttsubo +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2025/04/17 11:40:36 by dayano #+# #+# */ -/* Updated: 2025/04/28 16:51:16 by ttsubo ### ########.fr */ -/* */ -/* ************************************************************************** */ - -#ifndef ENV_UTILS_3_H -# define ENV_UTILS_3_H - -# include "struct.h" - -void add_env_back(t_env **lst, t_env *new); -t_env *get_env_node(t_env *current, const char *key); -char *get_env_value(t_env *current, const char *key); -bool has_env_key(t_env *current, const char *key); - -#endif diff --git a/inc/create_envp.h b/inc/invoke_cmd/create_envp.h similarity index 82% rename from inc/create_envp.h rename to inc/invoke_cmd/create_envp.h index c1d8d10..64d27a3 100644 --- a/inc/create_envp.h +++ b/inc/invoke_cmd/create_envp.h @@ -3,17 +3,21 @@ /* ::: :::::::: */ /* create_envp.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dayano +#+ +:+ +#+ */ +/* By: ttsubo +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/24 13:58:03 by dayano #+# #+# */ -/* Updated: 2025/04/24 13:59:24 by dayano ### ########.fr */ +/* Updated: 2025/05/04 12:26:30 by ttsubo ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef CREATE_ENVP_H # define CREATE_ENVP_H +# define EQUAL_LEN 1 + +# include "libft.h" # include "struct.h" +# include char **create_envp(t_minish *minish); diff --git a/inc/exec_pipeline.h b/inc/invoke_cmd/exec_pipeline.h similarity index 77% rename from inc/exec_pipeline.h rename to inc/invoke_cmd/exec_pipeline.h index e964098..d72da6d 100644 --- a/inc/exec_pipeline.h +++ b/inc/invoke_cmd/exec_pipeline.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* exec_pipeline.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dayano +#+ +:+ +#+ */ +/* By: ttsubo +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/21 13:12:27 by dayano #+# #+# */ -/* Updated: 2025/04/29 16:11:28 by dayano ### ########.fr */ +/* Updated: 2025/05/04 12:33:03 by ttsubo ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,13 @@ # define EXEC_PIPELINE_H # include "cmd.h" +# include "common.h" +# include "execute_cmd.h" +# include "invoke_command.h" +# include "pipeline_helper.h" +# include "struct.h" +# include "redirect.h" +# include typedef struct s_pipe_io { diff --git a/inc/execute_cmd.h b/inc/invoke_cmd/execute_cmd.h similarity index 88% rename from inc/execute_cmd.h rename to inc/invoke_cmd/execute_cmd.h index da773ac..9ca7f11 100644 --- a/inc/execute_cmd.h +++ b/inc/invoke_cmd/execute_cmd.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* execute_cmd.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dayano +#+ +:+ +#+ */ +/* By: ttsubo +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/21 21:39:18 by dayano #+# #+# */ -/* Updated: 2025/04/28 13:56:33 by dayano ### ########.fr */ +/* Updated: 2025/05/04 13:15:50 by ttsubo ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,7 +14,6 @@ # define EXECUTE_CMD_H # define PATH_PREFIX_LEN 5 -# define EQUAL_LEN 1 # define CMD_FAILED_EXIT_STATUS 126 # define CMD_NOT_FOUND_EXIT_STATUS 127 diff --git a/inc/invoke_command.h b/inc/invoke_cmd/invoke_command.h similarity index 81% rename from inc/invoke_command.h rename to inc/invoke_cmd/invoke_command.h index ba7cecb..7e9d22c 100644 --- a/inc/invoke_command.h +++ b/inc/invoke_cmd/invoke_command.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* invoke_command.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dayano +#+ +:+ +#+ */ +/* By: ttsubo +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/20 21:21:13 by dayano #+# #+# */ -/* Updated: 2025/05/01 16:38:55 by dayano ### ########.fr */ +/* Updated: 2025/05/04 12:37:03 by ttsubo ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,12 @@ # define INVOKE_COMMAND_H # include "cmd.h" +# include "create_envp.h" +# include "exec_pipeline.h" +# include "execute_cmd.h" +# include "pipeline_helper.h" +# include "redirect.h" +# include # include int invoke_commands(t_cmd *cmd_head, t_minish *minish); diff --git a/inc/pipeline_helper.h b/inc/invoke_cmd/pipeline_helper.h similarity index 100% rename from inc/pipeline_helper.h rename to inc/invoke_cmd/pipeline_helper.h diff --git a/inc/redirect.h b/inc/invoke_cmd/redirect.h similarity index 100% rename from inc/redirect.h rename to inc/invoke_cmd/redirect.h diff --git a/inc/main.h b/inc/main.h index 436f85c..731cd10 100644 --- a/inc/main.h +++ b/inc/main.h @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* main.h :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dayano +#+ +:+ +#+ */ +/* By: ttsubo +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/03 12:50:38 by ttsubo #+# #+# */ -/* Updated: 2025/04/29 16:09:27 by dayano ### ########.fr */ +/* Updated: 2025/05/04 12:26:20 by ttsubo ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,34 +14,12 @@ # define MAIN_H # include "builtin.h" -# include "builtin_utils.h" -# include "cmd.h" -# include "create_envp.h" -# include "env_utils.h" -# include "env_utils_2.h" -# include "env_utils_3.h" -# include "error.h" -# include "exec_pipeline.h" -# include "execute_cmd.h" -# include "initialize.h" +# include "common.h" # include "invoke_command.h" -# include "libft.h" # include "minish_signal.h" # include "parser.h" -# include "pipeline_helper.h" -# include "redirect.h" -# include "struct.h" # include "tokenizer.h" -# include # include # include -# include -# include -# include -# include -# include -# include -# include -# include #endif diff --git a/inc/parser.h b/inc/parser/parser.h similarity index 100% rename from inc/parser.h rename to inc/parser/parser.h diff --git a/inc/minish_signal.h b/inc/signal/minish_signal.h similarity index 100% rename from inc/minish_signal.h rename to inc/signal/minish_signal.h diff --git a/inc/tokenizer.h b/inc/tokenizer/tokenizer.h similarity index 100% rename from inc/tokenizer.h rename to inc/tokenizer/tokenizer.h