diff options
Diffstat (limited to 'src/builtin')
| -rw-r--r-- | src/builtin/cd.c | 8 | ||||
| -rw-r--r-- | src/builtin/echo.c | 2 | ||||
| -rw-r--r-- | src/builtin/export.c | 16 |
3 files changed, 15 insertions, 11 deletions
diff --git a/src/builtin/cd.c b/src/builtin/cd.c index 5f7cdd8..de1eeb9 100644 --- a/src/builtin/cd.c +++ b/src/builtin/cd.c @@ -6,7 +6,7 @@ /* By: charles <charles@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:10:20 by charles #+# #+# */ -/* Updated: 2020/09/10 19:40:31 by charles ### ########.fr */ +/* Updated: 2020/09/12 11:09:49 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -19,7 +19,7 @@ int builtin_cd(char **argv, t_env env) { - char buf[PATH_MAX]; + char buf[PATH_MAX + 1]; char *home; (void)env; @@ -36,9 +36,9 @@ int builtin_cd(char **argv, t_env env) errno = 0; if (chdir(argv[1]) == -1) return (errorf_ret(1, "cd: %s: %s\n", argv[1], strerror(errno))); - if (!(getcwd(buf, PATH_MAX))) + if (getcwd(buf, PATH_MAX) == NULL) return (1); if (env_export(env, "PWD", buf) == NULL) - return (2); // FIXME malloc error recognition in builtins and cmd + return (EVAL_FATAL); return (0); } diff --git a/src/builtin/echo.c b/src/builtin/echo.c index 75a350c..9ad427a 100644 --- a/src/builtin/echo.c +++ b/src/builtin/echo.c @@ -6,7 +6,7 @@ /* By: charles <charles.cabergs@gmail.com> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:10:47 by charles #+# #+# */ -/* Updated: 2020/06/15 14:26:30 by charles ### ########.fr */ +/* Updated: 2020/09/12 15:24:34 by charles ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/builtin/export.c b/src/builtin/export.c index e19756d..d394af6 100644 --- a/src/builtin/export.c +++ b/src/builtin/export.c @@ -6,7 +6,7 @@ /* By: charles <charles@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/04/01 17:11:34 by charles #+# #+# */ -/* Updated: 2020/08/28 17:49:47 by charles ### ########.fr */ +/* Updated: 2020/09/12 11:06:47 by charles ### ########.fr */ /* */ /* ************************************************************************** */ @@ -21,16 +21,20 @@ static void st_put_declare_x(char *s) { char *equal_ptr; - // could use errorf on stdout if (s == NULL) return ; - ft_putstr("declare -x "); + ft_putstr("export "); if ((equal_ptr = ft_strchr(s, '=')) == NULL) equal_ptr = ft_strchr(s, '\0'); write(STDOUT_FILENO, s, equal_ptr - s); ft_putchar('='); ft_putchar('"'); - ft_putstr(equal_ptr + 1); + while (*++equal_ptr != '\0') + { + if (*equal_ptr == '"') + ft_putchar('\\'); + ft_putchar(*equal_ptr); + } ft_putchar('"'); ft_putchar('\n'); } @@ -38,7 +42,7 @@ static void st_put_declare_x(char *s) int builtin_export(char **argv, t_env env) { int status; - size_t i; + size_t i; char *equal_ptr; if (argv[1] == NULL) @@ -62,7 +66,7 @@ int builtin_export(char **argv, t_env env) continue; } if (env_export(env, argv[i], equal_ptr == NULL ? "" : equal_ptr + 1) == NULL) - return (127); // malloc error + return (EVAL_FATAL); } return (status); } |
