From db8435b6c2f6392140b1305fd5fedca8c8668abe Mon Sep 17 00:00:00 2001 From: adjoly Date: Tue, 25 Jun 2024 14:40:44 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=8F=97=EF=B8=8F=E3=80=8D=20wip:?= =?UTF-8?q?=20CD=20reworked?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/builtins.h | 4 ++-- src/builtins/ft_cd.c | 30 ++++++++++++++++++++++++------ src/builtins/ft_pwd.c | 8 ++++---- src/main.c | 4 ++-- 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/include/builtins.h b/include/builtins.h index 009b747..957c9d0 100644 --- a/include/builtins.h +++ b/include/builtins.h @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/22 13:05:18 by adjoly #+# #+# */ -/* Updated: 2024/06/25 10:46:04 by adjoly ### ########.fr */ +/* Updated: 2024/06/25 11:30:49 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,7 @@ # define PATH_MAX_LEN 4096 -void ft_pwd(t_env *env); +void ft_pwd(void); void ft_cd(t_env *env, char *args); char *ret_cwd(void); diff --git a/src/builtins/ft_cd.c b/src/builtins/ft_cd.c index 16bb30f..b25ab7c 100644 --- a/src/builtins/ft_cd.c +++ b/src/builtins/ft_cd.c @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/22 15:07:24 by adjoly #+# #+# */ -/* Updated: 2024/06/25 11:22:08 by adjoly ### ########.fr */ +/* Updated: 2024/06/25 13:47:17 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ char *__get_parent_directory(char *pwd) { char *tmp; char *dir; - char *parent; + //char *parent; tmp = pwd; while (*tmp) @@ -28,9 +28,27 @@ char *__get_parent_directory(char *pwd) dir = tmp; tmp++; } - parent = ft_calloc(dir - pwd + 1, sizeof(char)); - ft_strlcpy(parent, pwd, dir - pwd + 1); - return (parent); + //parent = ft_calloc(dir - pwd + 1, sizeof(char)); + ft_strlcpy(pwd, pwd, dir - pwd + 1); + return (pwd); +} + +char *__relative_path(char *args, char *pwd) +{ + char **path; + char **tmp; + char *new_path; + + path = ft_split(args, '/'); + tmp = path; + new_path = pwd; + while (*tmp) + { + if (is_str(*tmp, "..")) + new_path = __get_parent_directory(new_path); + tmp++; + } + return (new_path); } void ft_cd(t_env *env, char *args) @@ -47,7 +65,7 @@ void ft_cd(t_env *env, char *args) new_pwd = env_get_value("HOME", env); else if (args[0] == '/') new_pwd = ft_strdup(args); - else if (is_str(args, "..")) + else new_pwd = __get_parent_directory(pwd); ft_putendl_fd(new_pwd, STDOUT_FILENO); ret = chdir(new_pwd); diff --git a/src/builtins/ft_pwd.c b/src/builtins/ft_pwd.c index 760c606..0d8d7a0 100644 --- a/src/builtins/ft_pwd.c +++ b/src/builtins/ft_pwd.c @@ -6,19 +6,19 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/22 13:02:02 by adjoly #+# #+# */ -/* Updated: 2024/06/24 12:33:50 by adjoly ### ########.fr */ +/* Updated: 2024/06/25 11:31:15 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #include #include "env.h" #include "libft.h" +#include "builtins.h" -void ft_pwd(t_env *env) +void ft_pwd(void) { char *pwd; - pwd = env_get_value("PWD", env); + pwd = ret_cwd(); ft_putendl_fd(pwd, STDOUT_FILENO); - free(pwd); } diff --git a/src/main.c b/src/main.c index 76e4415..d9190f4 100644 --- a/src/main.c +++ b/src/main.c @@ -6,7 +6,7 @@ /* By: mmoussou