From 9b3753960b986d0dcf84369846fd7ac74d2baef6 Mon Sep 17 00:00:00 2001 From: Charles Date: Wed, 4 Mar 2020 17:37:44 +0100 Subject: Added builtins draft --- src/builtin/cd.c | 15 +++++++++++++++ src/builtin/echo.c | 16 ++++++++++++++++ src/builtin/env.c | 2 +- src/builtin/export.c | 6 ++++++ src/builtin/pwd.c | 13 +++++++++++++ src/builtin/unset.c | 9 +++++++++ src/main.c | 5 ++++- 7 files changed, 64 insertions(+), 2 deletions(-) (limited to 'src') 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) */ /* { */ -- cgit