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 +++++++++ 6 files changed, 60 insertions(+), 1 deletion(-) (limited to 'src/builtin') 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); +} -- cgit