aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/builtin/cd.c15
-rw-r--r--src/builtin/echo.c16
-rw-r--r--src/builtin/env.c2
-rw-r--r--src/builtin/export.c6
-rw-r--r--src/builtin/pwd.c13
-rw-r--r--src/builtin/unset.c9
-rw-r--r--src/main.c5
7 files changed, 64 insertions, 2 deletions
diff --git a/src/builtin/cd.c b/src/builtin/cd.c
index e69de29..c67cd23 100644
--- a/src/builtin/cd.c
+++ b/src/builtin/cd.c
@@ -0,0 +1,15 @@
+#include "minishell.h"
+
+int ms_cd(t_state *state, char **argv)
+{
+ char *path;
+
+ path = argv[1];
+ if (argv[1] == NULL)
+ path = ft_htget(state->environment, "HOME");
+ if (path == NULL)
+ return (1);
+ if (chdir(path) == -1)
+ return (1);
+ return (0);
+}
diff --git a/src/builtin/echo.c b/src/builtin/echo.c
index e69de29..b8d2d43 100644
--- a/src/builtin/echo.c
+++ b/src/builtin/echo.c
@@ -0,0 +1,16 @@
+#include "minishell.h"
+
+int ms_echo(char **argv)
+{
+ bool newline;
+
+ newline = ft_strcmp(argv[1], "-n") == 0;
+ while (*++argv != NULL)
+ {
+ ft_putstr(*argv);
+ ft_putchar(' ');
+ }
+ if (newline)
+ ft_putchar('\n');
+ return (0);
+}
diff --git a/src/builtin/env.c b/src/builtin/env.c
index ada0122..24e474f 100644
--- a/src/builtin/env.c
+++ b/src/builtin/env.c
@@ -8,7 +8,7 @@ void st_print_env_variable(t_ftht_content *content)
ft_putchar('\n');
}
-int ms_env(t_state *state)
+int ms_env(t_state *state)
{
ft_htiter(state->environment, st_print_env_variable);
return (0);
diff --git a/src/builtin/export.c b/src/builtin/export.c
index e69de29..e284270 100644
--- a/src/builtin/export.c
+++ b/src/builtin/export.c
@@ -0,0 +1,6 @@
+#include "minishell.h"
+
+int ms_export(t_state *state, char **argv)
+{
+ return (0);
+}
diff --git a/src/builtin/pwd.c b/src/builtin/pwd.c
index e69de29..9825bee 100644
--- a/src/builtin/pwd.c
+++ b/src/builtin/pwd.c
@@ -0,0 +1,13 @@
+#include "minishell.h"
+
+int ms_pwd(t_state *state)
+{
+ char buf[PATH_MAX];
+
+ (void)state;
+ ft_bzero(buf, PATH_MAX);
+ if (getcwd(buf, PATH_MAX) == NULL)
+ return (1);
+ ft_putendl(buf);
+ return (0);
+}
diff --git a/src/builtin/unset.c b/src/builtin/unset.c
index e69de29..ea24a63 100644
--- a/src/builtin/unset.c
+++ b/src/builtin/unset.c
@@ -0,0 +1,9 @@
+#include "minishell.h"
+
+int ms_unset(t_state *state, char **argv)
+{
+ if (argv[1] == NULL)
+ return (1);
+ ft_htdelone(state->environment, argv[1], ms_ht_del_str_entry);
+ return (0);
+}
diff --git a/src/main.c b/src/main.c
index 494fabc..8c2d138 100644
--- a/src/main.c
+++ b/src/main.c
@@ -22,7 +22,10 @@ int main(int argc, char **argv, const char **envp)
(void)argv;
if (ms_state_init(&state, envp) == -1)
return (1);
- ms_env(&state);
+ /* ms_env(&state); */
+ /* ms_pwd(&state); */
+ /* ms_cd(&state, NULL); */
+ /* ms_pwd(&state); */
/* while ((ret = ft_next_line(STDIN_FILENO, &line)) == 1) */
/* { */