diff options
| -rw-r--r-- | include/minishell.h | 16 | ||||
| -rw-r--r-- | src/builtin/builtin.c | 16 | ||||
| -rw-r--r-- | src/eval/cmd.c | 6 | ||||
| -rw-r--r-- | src/main.c | 15 |
4 files changed, 33 insertions, 20 deletions
diff --git a/include/minishell.h b/include/minishell.h index 9405109..67c2266 100644 --- a/include/minishell.h +++ b/include/minishell.h @@ -6,7 +6,7 @@ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/26 15:33:51 by cacharle #+# #+# */ -/* Updated: 2020/07/14 09:35:14 by charles ### ########.fr */ +/* Updated: 2020/07/14 11:06:50 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -48,6 +48,7 @@ typedef t_ftht* t_path; typedef t_ftvec* t_env; extern int g_last_status_code; +extern char *g_basename; /* ** path.c @@ -85,7 +86,6 @@ typedef struct { char *name; t_builtin_func func; - bool child_process; } t_builtin_entry; t_builtin_entry *builtin_search_func(char *name); @@ -118,14 +118,20 @@ enum e_error ERROR_CMD_FOUND_ERROR, }; +/* +** \brief Error specification +** \param id Error type +** \param status Status code returned +** \param msg Error message to print, if is NULL, use strerror as a msg +*/ + typedef struct { enum e_error id; int status; - char *msg; // if NULL call strerror - // char basename; + char *msg; } t_error; -void error_eval_put(enum e_error id, char *unexpected); +void error_eval_put(enum e_error id, char *content); #endif diff --git a/src/builtin/builtin.c b/src/builtin/builtin.c index 80b263e..9c5fe9e 100644 --- a/src/builtin/builtin.c +++ b/src/builtin/builtin.c @@ -6,7 +6,7 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:11:01 by charles #+# #+# */ -/* Updated: 2020/06/23 08:35:15 by charles ### ########.fr */ +/* Updated: 2020/07/14 11:06:37 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -22,13 +22,13 @@ */ static t_builtin_entry g_builtin_lookup[] = { - {"echo", builtin_echo, true}, - {"cd", builtin_cd, false}, - {"pwd", builtin_pwd, true}, - {"export", builtin_export, false}, - {"unset", builtin_unset, false}, - {"env", builtin_env, true}, - {"exit", builtin_exit, false}, + {"echo", builtin_echo}, + {"cd", builtin_cd}, + {"pwd", builtin_pwd}, + {"export", builtin_export}, + {"unset", builtin_unset}, + {"env", builtin_env}, + {"exit", builtin_exit}, }; t_builtin_entry *builtin_search_func(char *name) diff --git a/src/eval/cmd.c b/src/eval/cmd.c index e79cb88..b3cdc15 100644 --- a/src/eval/cmd.c +++ b/src/eval/cmd.c @@ -6,7 +6,7 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/14 10:41:31 by charles #+# #+# */ -/* Updated: 2020/07/13 11:03:09 by charles ### ########.fr */ +/* Updated: 2020/07/14 11:07:00 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -92,8 +92,8 @@ int eval_cmd(int fds[2], t_env env, t_path path, t_ast *ast) return (-1); // return error status } } - else if (!param.builtin->child_process) - return (param.builtin->func(argv, env)); + /* else if (!param.builtin->child_process) // solved with pipeline */ + /* return (param.builtin->func(argv, env)); */ param.argv = argv; param.env = env; @@ -6,7 +6,7 @@ /* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 11:45:44 by cacharle #+# #+# */ -/* Updated: 2020/07/14 10:03:35 by charles ### ########.fr */ +/* Updated: 2020/07/14 11:34:18 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -62,7 +62,6 @@ void signal_sigterm(int signum) (void)signum; } - /* ** TODO ** $? @@ -70,10 +69,13 @@ void signal_sigterm(int signum) ** signal ** pipeline ** cmd are path +** cmd variable ** interpolation order -** PATH with no permission +** PATH with no permission, link and other file system fun stuff */ +char *g_basename = "minishell"; + int main(int argc, char **argv, char **envp) { t_path path; @@ -81,12 +83,17 @@ int main(int argc, char **argv, char **envp) env = env_from_array(envp); path = path_update(NULL, env_search(env, "PATH")); - /* printf("%s\n", argv[2]); */ signal(SIGINT, signal_sigint); signal(SIGQUIT, signal_sigquit); signal(SIGTERM, signal_sigterm); + char *last_slash = ft_strrchr(argv[0], '/'); + if (last_slash == NULL) + g_basename = argv[0]; + else + g_basename = last_slash + 1; + if (argc == 3 && ft_strcmp(argv[1], "-l") == 0) { t_ftlst *lex_out = lexer(ft_strdup(argv[2])); |
