From 1ddd5534c87ca1b424287a4c63a77d5baf4d39ff Mon Sep 17 00:00:00 2001 From: adjoly Date: Tue, 25 Jun 2024 11:23:25 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=E2=9C=A8=E3=80=8D=20feat:=20CD=20work?= =?UTF-8?q?ing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/builtins.h | 7 +++++-- src/builtins/ft_cd.c | 20 +++++++++----------- src/builtins/ret_cwd.c | 21 +++++++++++++++++++++ 3 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 src/builtins/ret_cwd.c diff --git a/include/builtins.h b/include/builtins.h index 9294c11..009b747 100644 --- a/include/builtins.h +++ b/include/builtins.h @@ -6,16 +6,19 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/22 13:05:18 by adjoly #+# #+# */ -/* Updated: 2024/06/24 12:47:28 by adjoly ### ########.fr */ +/* Updated: 2024/06/25 10:46:04 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #ifndef BUILTINS_H # define BUILTINS_H -#include "env.h" +# include "env.h" + +# define PATH_MAX_LEN 4096 void ft_pwd(t_env *env); void ft_cd(t_env *env, char *args); +char *ret_cwd(void); #endif diff --git a/src/builtins/ft_cd.c b/src/builtins/ft_cd.c index 4192c93..16bb30f 100644 --- a/src/builtins/ft_cd.c +++ b/src/builtins/ft_cd.c @@ -6,13 +6,14 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/22 15:07:24 by adjoly #+# #+# */ -/* Updated: 2024/06/24 18:48:11 by adjoly ### ########.fr */ +/* Updated: 2024/06/25 11:22:08 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" #include "env.h" #include "libft.h" +#include "builtins.h" char *__get_parent_directory(char *pwd) { @@ -29,34 +30,31 @@ char *__get_parent_directory(char *pwd) } parent = ft_calloc(dir - pwd + 1, sizeof(char)); ft_strlcpy(parent, pwd, dir - pwd + 1); - free(pwd); return (parent); } -char *ret_cwd(void) -{ - -} - void ft_cd(t_env *env, char *args) { + char *pwd; char *new_pwd; + int ret; new_pwd = NULL; - pwd = getcwd(); + pwd = ret_cwd(); ft_putendl_fd(args, STDOUT_FILENO); - ft_putendl_fd(env_get_value("PWD", env), STDOUT_FILENO); + ft_putendl_fd(pwd, STDOUT_FILENO); if (!args) new_pwd = env_get_value("HOME", env); else if (args[0] == '/') new_pwd = ft_strdup(args); else if (is_str(args, "..")) - new_pwd = __get_parent_directory(env_get_value("PWD", env)); + new_pwd = __get_parent_directory(pwd); + ft_putendl_fd(new_pwd, STDOUT_FILENO); ret = chdir(new_pwd); if (ret == -1) { + return ; } env_edit("PWD", new_pwd, env); free(args); - ft_putendl_fd(new_pwd, STDOUT_FILENO); } diff --git a/src/builtins/ret_cwd.c b/src/builtins/ret_cwd.c new file mode 100644 index 0000000..0d7c00a --- /dev/null +++ b/src/builtins/ret_cwd.c @@ -0,0 +1,21 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* ret_cwd.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: adjoly +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/06/25 10:41:43 by adjoly #+# #+# */ +/* Updated: 2024/06/25 10:44:01 by adjoly ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "builtins.h" +#include + +char *ret_cwd(void) +{ + char buf[PATH_MAX_LEN]; + + return (getcwd(buf, PATH_MAX_LEN)); +}