diff options
| m--------- | minishell_test | 0 | ||||
| -rw-r--r-- | print_argv_env_main.c | 6 | ||||
| -rw-r--r-- | src/builtin/export.c | 3 | ||||
| -rw-r--r-- | src/eval/operation.c | 4 | ||||
| -rw-r--r-- | src/lexer/utils.c | 3 | ||||
| -rw-r--r-- | src/parser/parser.c | 21 | ||||
| -rw-r--r-- | src/utils.c | 8 |
7 files changed, 31 insertions, 14 deletions
diff --git a/minishell_test b/minishell_test -Subproject f06e8de42359cff6cb93dad4a89c64078d86479 +Subproject 93ead396473526e5f4849ad2f4194b8cc6c9ce4 diff --git a/print_argv_env_main.c b/print_argv_env_main.c index 330638c..c668639 100644 --- a/print_argv_env_main.c +++ b/print_argv_env_main.c @@ -11,8 +11,8 @@ int main(int argc, char **argv, char **envp) printf("ARGV:\n"); for (int i = 0; i < argc; i++) printf("[%d] %s\n", i, argv[i]); - /* printf("\nENV:\n"); */ - /* for (int i = 0; envp[i] != NULL && i < 10; i++) */ - /* printf("[%d] %s\n", i, envp[i]); */ + printf("\nENV:\n"); + for (int i = 0; envp[i] != NULL && i < 10; i++) + printf("[%d] %s\n", i, envp[i]); return 0; } diff --git a/src/builtin/export.c b/src/builtin/export.c index c026755..e388700 100644 --- a/src/builtin/export.c +++ b/src/builtin/export.c @@ -6,7 +6,7 @@ /* By: charles <charles@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:11:34 by charles #+# #+# */ -/* Updated: 2020/10/07 11:12:33 by cacharle ### ########.fr */ +/* Updated: 2020/10/08 16:59:28 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -26,7 +26,6 @@ static void st_put_declare_x(char *s) { char *equal_ptr; - int shlvl; if (s == NULL) return ; diff --git a/src/eval/operation.c b/src/eval/operation.c index 1620be2..cb7de34 100644 --- a/src/eval/operation.c +++ b/src/eval/operation.c @@ -6,7 +6,7 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/17 15:27:22 by charles #+# #+# */ -/* Updated: 2020/10/07 15:08:11 by cacharle ### ########.fr */ +/* Updated: 2020/10/08 16:59:42 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -88,7 +88,7 @@ int eval_pipeline(int fds[2], t_env env, t_ast *ast) g_child_pid = pid; close(p[FD_READ]); - int status = 0; + /* int status = 0; */ waitpid(pid, &pid, 0); while (wait(NULL) != -1) diff --git a/src/lexer/utils.c b/src/lexer/utils.c index d2b35cb..0b7baa3 100644 --- a/src/lexer/utils.c +++ b/src/lexer/utils.c @@ -6,7 +6,7 @@ /* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/07/16 08:18:15 by nahaddac #+# #+# */ -/* Updated: 2020/10/08 14:10:17 by cacharle ### ########.fr */ +/* Updated: 2020/10/08 14:11:51 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -35,6 +35,7 @@ enum e_tok tok_assign_tag(char *content) return (TAG_PARENT_CLOSE); return (0); } + /* ** return tag ** le tag stick est rajouter si diff --git a/src/parser/parser.c b/src/parser/parser.c index 25e9531..8b4732f 100644 --- a/src/parser/parser.c +++ b/src/parser/parser.c @@ -6,7 +6,7 @@ /* By: nahaddac <nahaddac@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/06/17 18:09:04 by nahaddac #+# #+# */ -/* Updated: 2020/10/08 12:29:52 by cacharle ### ########.fr */ +/* Updated: 2020/10/08 16:58:19 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -61,7 +61,7 @@ t_parsed *parse_cmd(t_tok_lst *input) t_ast *ast; t_parsed *tmp; - if (input->tag & TAG_IS_SEP || input->tag == TAG_PIPE) + if (input->tag & TAG_IS_SEP || input->tag == TAG_PIPE || input->tag == TAG_PARENT_CLOSE) { t_parsed *ret = parsed_error("syntax error near unexpected token `%s'\n", input->content); tok_lst_destroy(&input, free); @@ -142,6 +142,8 @@ t_parsed *parse_op(t_tok_lst *input) t_parsed *right; enum e_tok sep_tag; + if (input == NULL) + return (NULL); left = parse_pipeline(input); if (left == NULL || left->syntax_error) return (left); @@ -154,7 +156,10 @@ t_parsed *parse_op(t_tok_lst *input) g_sep_str_lookup[sep_tag])); ft_lstpop_front((t_ftlst**)&input, free); if (input == NULL && sep_tag == TAG_END) + { + left->rest = NULL; return (left); + } if (input == NULL) { ast_destroy(left->ast); @@ -193,7 +198,10 @@ t_parsed *parse_expr(t_tok_lst *input) if (input->tag & TAG_PARENT_OPEN) { ft_lstpop_front(&input, free); - if (!(parsed = parse_op(input)) || parsed->syntax_error) + if (input == NULL) + return (parsed_error("syntax error: unexpected end of file\n")); + parsed = parse_op(input); + if (parsed == NULL || parsed->syntax_error) return (parsed); input = parsed->rest; if (input == NULL || !(input->tag & TAG_PARENT_CLOSE)) @@ -221,5 +229,10 @@ t_parsed *parse(t_tok_lst *input) { if (input == NULL) return (NULL); - return (parse_op(input)); + t_parsed *parsed = parse_op(input); + if (parsed == NULL || parsed->syntax_error) + return parsed; + if (parsed->rest != NULL) + return (parsed_error("syntax error near unexpected token `%s'\n", parsed->rest->content)); + return (parsed); } diff --git a/src/utils.c b/src/utils.c index b816a3f..3da5c59 100644 --- a/src/utils.c +++ b/src/utils.c @@ -6,7 +6,7 @@ /* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/28 11:56:31 by cacharle #+# #+# */ -/* Updated: 2020/10/08 11:31:05 by cacharle ### ########.fr */ +/* Updated: 2020/10/08 17:02:52 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ @@ -24,6 +24,7 @@ void print_prompt(void) { char cwd[PATH_MAX + 1]; + char *last_slash; ft_bzero(cwd, PATH_MAX + 1); if (getcwd(cwd, PATH_MAX) == NULL) @@ -31,6 +32,9 @@ void print_prompt(void) ft_putstr_fd("$ ", STDERR_FILENO); return ; } + last_slash = ft_strrchr(cwd, '/'); + if (last_slash != NULL && ft_strlen(cwd) != 1) + ft_strcpy(cwd, last_slash + 1); ft_putstr_fd("\033[0;32m", STDERR_FILENO); ft_putstr_fd(cwd, STDERR_FILENO); ft_putstr_fd("\033[0m$ ", STDERR_FILENO); @@ -40,6 +44,6 @@ void try(void *ptr) { if (ptr != NULL) return ; - ft_putendl_fd(STDERR_FILENO, "minishell: fatal error"); + ft_putendl_fd("minishell: fatal error", STDERR_FILENO); exit(3); } |
