aboutsummaryrefslogtreecommitdiff
path: root/src/builtin
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-09-15 17:54:48 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-09-15 17:54:48 +0200
commitf626f2715ab696fdb326ed67256d012d86faef9f (patch)
treef25f2d95688a89c662622e3c2f11786f27689713 /src/builtin
parent170d0b74fa725196bca0fa549520d0d8bfa07576 (diff)
downloadminishell-f626f2715ab696fdb326ed67256d012d86faef9f.tar.gz
minishell-f626f2715ab696fdb326ed67256d012d86faef9f.tar.bz2
minishell-f626f2715ab696fdb326ed67256d012d86faef9f.zip
Refactoring env, Removing bloat from utils, exec and env
Diffstat (limited to 'src/builtin')
-rw-r--r--src/builtin/cd.c4
-rw-r--r--src/builtin/exit.c7
-rw-r--r--src/builtin/export.c11
-rw-r--r--src/builtin/unset.c10
4 files changed, 19 insertions, 13 deletions
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 <charles@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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 <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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 <charles@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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 <charles@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* 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);
}