aboutsummaryrefslogtreecommitdiff
path: root/src/builtin
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2020-04-01 23:16:47 +0200
committerCharles <sircharlesaze@gmail.com>2020-04-01 23:21:25 +0200
commitf66cb8f28a2779159baeef6ea91a7684d59cc295 (patch)
treeeda02dc289d25a776cb347f45d54e34476190f2b /src/builtin
parent1ff9504c6b6f4c8bcebb75935b2d999f6c7b018c (diff)
downloadminishell-f66cb8f28a2779159baeef6ea91a7684d59cc295.tar.gz
minishell-f66cb8f28a2779159baeef6ea91a7684d59cc295.tar.bz2
minishell-f66cb8f28a2779159baeef6ea91a7684d59cc295.zip
Changed representation of environment to vector
Diffstat (limited to 'src/builtin')
-rw-r--r--src/builtin/cd.c4
-rw-r--r--src/builtin/env.c12
-rw-r--r--src/builtin/export.c12
-rw-r--r--src/builtin/unset.c14
4 files changed, 24 insertions, 18 deletions
diff --git a/src/builtin/cd.c b/src/builtin/cd.c
index dc88dae..66f1f81 100644
--- a/src/builtin/cd.c
+++ b/src/builtin/cd.c
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:10:20 by charles #+# #+# */
-/* Updated: 2020/04/01 17:10:21 by charles ### ########.fr */
+/* Updated: 2020/04/01 22:15:49 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -23,7 +23,7 @@ int builtin_cd(char **argv, t_env env)
path = argv[1];
if (argv[1] == NULL)
- path = ft_htget(env, "HOME");
+ path = env_search(env, "HOME");
if (path == NULL)
return (1);
if (chdir(path) == -1)
diff --git a/src/builtin/env.c b/src/builtin/env.c
index d3f4024..5854828 100644
--- a/src/builtin/env.c
+++ b/src/builtin/env.c
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:10:32 by charles #+# #+# */
-/* Updated: 2020/04/01 17:10:33 by charles ### ########.fr */
+/* Updated: 2020/04/01 22:25:43 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -17,17 +17,9 @@
#include "minishell.h"
-void st_print_env_variable(t_ftht_entry *entry)
-{
- ft_putstr(entry->key);
- ft_putchar('=');
- ft_putstr((char*)entry->value);
- ft_putchar('\n');
-}
-
int builtin_env(char **argv, t_env env)
{
(void)argv;
- ft_htiter(env, st_print_env_variable);
+ ft_veciter(env, (void (*)(void*))ft_putendl);
return (0);
}
diff --git a/src/builtin/export.c b/src/builtin/export.c
index 8a62412..650a421 100644
--- a/src/builtin/export.c
+++ b/src/builtin/export.c
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:11:34 by charles #+# #+# */
-/* Updated: 2020/04/01 17:11:38 by charles ### ########.fr */
+/* Updated: 2020/04/01 22:37:47 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -19,7 +19,13 @@
int builtin_export(char **argv, t_env env)
{
- (void)argv;
- (void)env;
+ char *tmp;
+
+ if (ft_strchr(argv[1], '=') == NULL)
+ return (1);
+ if ((tmp = ft_strdup(argv[1])) == NULL)
+ return (2);
+ if (ft_vecpush(env, tmp) == NULL)
+ return (2); // internal error code
return (0);
}
diff --git a/src/builtin/unset.c b/src/builtin/unset.c
index 2ae6c27..ffcf60f 100644
--- a/src/builtin/unset.c
+++ b/src/builtin/unset.c
@@ -6,7 +6,7 @@
/* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/01 17:10:51 by charles #+# #+# */
-/* Updated: 2020/04/01 17:10:51 by charles ### ########.fr */
+/* Updated: 2020/04/01 23:05:33 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -19,8 +19,16 @@
int builtin_unset(char **argv, t_env env)
{
+ size_t i;
+
if (argv[1] == NULL)
return (1);
- ft_htdelone(env, argv[1], ht_del_str_entry);
- return (0);
+ i = 0;
+ while (i < env->size)
+ if (ft_strncmp(env->data[i], argv[1], ft_strlen(argv[1])) == 0)
+ {
+ ft_vecremove(env, i, free);
+ return (0);
+ }
+ return (1);
}