From f626f2715ab696fdb326ed67256d012d86faef9f Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Tue, 15 Sep 2020 17:54:48 +0200 Subject: Refactoring env, Removing bloat from utils, exec and env --- src/builtin/cd.c | 4 ++-- src/builtin/exit.c | 7 +++++-- src/builtin/export.c | 11 +++++++---- src/builtin/unset.c | 10 +++++----- 4 files changed, 19 insertions(+), 13 deletions(-) (limited to 'src/builtin') diff --git a/src/builtin/cd.c b/src/builtin/cd.c index 3be77ea..815149f 100644 --- a/src/builtin/cd.c +++ b/src/builtin/cd.c @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:10:20 by charles #+# #+# */ -/* Updated: 2020/09/13 20:20:13 by charles ### ########.fr */ +/* Updated: 2020/09/15 17:03:32 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -36,7 +36,7 @@ int builtin_cd(char **argv, t_env env) return (0); if (argv[1] == NULL) { - if ((home = env_search(env, "HOME")) == NULL) + if ((home = env_search(env, "HOME", NULL)) == NULL) return (errorf_ret(1, "cd: HOME not set\n")); argv[1] = home; } diff --git a/src/builtin/exit.c b/src/builtin/exit.c index 51c8013..31acd11 100644 --- a/src/builtin/exit.c +++ b/src/builtin/exit.c @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:10:16 by charles #+# #+# */ -/* Updated: 2020/09/13 20:25:55 by charles ### ########.fr */ +/* Updated: 2020/09/15 17:48:22 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -39,7 +39,10 @@ int builtin_exit(char **argv, t_env env) while (ft_isblank(*after)) after++; if (*after != '\0' || errno == ERANGE) - return (errorf_ret(2, "exit: %s: numeric argument required\n", argv[1])); + { + errorf("exit: %s: numeric argument required\n", argv[1]); + return (2); + } if (argv[2] != NULL) return (errorf_ret(1, "exit: too many arguments\n")); } diff --git a/src/builtin/export.c b/src/builtin/export.c index 4ac6626..e6fca73 100644 --- a/src/builtin/export.c +++ b/src/builtin/export.c @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:11:34 by charles #+# #+# */ -/* Updated: 2020/09/13 20:22:10 by charles ### ########.fr */ +/* Updated: 2020/09/15 17:49:35 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -18,7 +18,8 @@ #include "minishell.h" /* -** \brief Put an environment variable in the format "declare -x id=value" of bash +** \brief Put an environment variable in the format +** "declare -x id=value" of bash ** \param s Full variable (id=value) */ @@ -81,7 +82,8 @@ int builtin_export(char **argv, t_env env) equal_ptr = ft_strchr(argv[i], '='); if (equal_ptr != NULL) *equal_ptr = '\0'; - if (!utils_valid_identifier(argv[i])) + if (*argv[i] == '\0' + || env_key_len(argv[i], false) != ft_strlen(argv[i])) { if (equal_ptr != NULL) *equal_ptr = '='; @@ -89,7 +91,8 @@ int builtin_export(char **argv, t_env env) status = 1; continue; } - if (env_export(env, argv[i], equal_ptr == NULL ? "" : equal_ptr + 1) == NULL) + if (equal_ptr != NULL + && env_export(env, argv[i], equal_ptr + 1) == NULL) return (EVAL_FATAL); } return (status); diff --git a/src/builtin/unset.c b/src/builtin/unset.c index 9d0c66f..3f3ae42 100644 --- a/src/builtin/unset.c +++ b/src/builtin/unset.c @@ -6,7 +6,7 @@ /* By: charles +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:10:51 by charles #+# #+# */ -/* Updated: 2020/09/13 20:22:35 by charles ### ########.fr */ +/* Updated: 2020/09/15 17:46:55 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -27,21 +27,21 @@ int builtin_unset(char **argv, t_env env) { size_t i; - int found_index; + size_t found_index; int status; status = 0; i = 0; while (argv[++i] != NULL) { - if (!utils_valid_identifier(argv[i])) + if (*argv[i] == '\0' + || env_key_len(argv[i], false) != ft_strlen(argv[i])) { errorf("unset: `%s': not a valid identifier\n", argv[i]); status = 1; continue ; } - found_index = env_search_index(env, argv[i]); - if (found_index == -1) + if (env_search(env, argv[i], &found_index) == NULL) continue ; ft_vecremove(env, found_index, free); } -- cgit