correction leak cd + 2-3 autres ptits trucs

This commit is contained in:
gwojda 2017-02-17 13:58:27 +01:00
parent 497ab7a02a
commit d136e2be04
3 changed files with 15 additions and 8 deletions

View file

@ -3,10 +3,10 @@
/* ::: :::::::: */ /* ::: :::::::: */
/* builtin_cd.c :+: :+: :+: */ /* builtin_cd.c :+: :+: :+: */
/* +:+ +:+ +:+ */ /* +:+ +:+ +:+ */
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */ /* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/12/03 11:57:53 by jhalford #+# #+# */ /* Created: 2016/12/03 11:57:53 by jhalford #+# #+# */
/* Updated: 2017/01/11 14:29:14 by jhalford ### ########.fr */ /* Updated: 2017/02/17 13:51:18 by gwojda ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -28,7 +28,7 @@ static char *builtin_cd_special(char *const av[], char *const env[])
return (NULL); return (NULL);
} }
else if (ft_strcmp(*av, "-") == 0) else if (ft_strcmp(*av, "-") == 0)
target = ft_getenv((char**)env, "OLDPWD"); target = ft_strdup(ft_getenv((char**)env, "OLDPWD"));
else else
target = *av; target = *av;
return (target); return (target);
@ -66,12 +66,15 @@ int builtin_cd(const char *path, char *const av[], char *const envp[])
int i; int i;
int opts; int opts;
char *target; char *target;
char *cwd;
opts = 0; opts = 0;
i = builtin_cd_opts(av, &opts); i = builtin_cd_opts(av, &opts);
if (!(target = builtin_cd_special(av + i, envp))) if (!(target = builtin_cd_special(av + i, envp)))
return (0); return (0);
builtin_setenv(path, (char*[3]){"OLDPWD", getcwd(NULL, 0)}, envp); cwd = getcwd(NULL, 0);
builtin_setenv(path, (char*[3]){"OLDPWD", cwd, NULL}, envp);
free(cwd);
if (chdir(target)) if (chdir(target))
{ {
ft_printf(CDERR_1, target); ft_printf(CDERR_1, target);
@ -79,6 +82,10 @@ int builtin_cd(const char *path, char *const av[], char *const envp[])
} }
else if (target != av[i]) else if (target != av[i])
ft_printf("%s\n", target); ft_printf("%s\n", target);
builtin_setenv(path, (char*[3]){"PWD", getcwd(NULL, 0)}, envp); cwd = getcwd(NULL, 0);
builtin_setenv(path, (char*[3]){"PWD", cwd, NULL}, envp);
free(cwd);
if (!ft_strcmp(*(av + i), "-"))
free(target);
return (0); return (0);
} }

View file

@ -6,7 +6,7 @@
/* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */ /* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/28 14:14:20 by jhalford #+# #+# */ /* Created: 2016/11/28 14:14:20 by jhalford #+# #+# */
/* Updated: 2017/02/17 10:27:05 by gwojda ### ########.fr */ /* Updated: 2017/02/17 11:06:40 by gwojda ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -3,10 +3,10 @@
/* ::: :::::::: */ /* ::: :::::::: */
/* builtin_setenv.c :+: :+: :+: */ /* builtin_setenv.c :+: :+: :+: */
/* +:+ +:+ +:+ */ /* +:+ +:+ +:+ */
/* By: jhalford <jack@crans.org> +#+ +:+ +#+ */ /* By: jhalford <jhalford@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */ /* Created: 2016/11/28 14:25:17 by jhalford #+# #+# */
/* Updated: 2017/02/06 14:05:23 by jhalford ### ########.fr */ /* Updated: 2017/02/17 13:18:25 by gwojda ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */