aboutsummaryrefslogtreecommitdiff
path: root/src/builtin
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-09-12 17:12:41 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-09-12 17:12:41 +0200
commit65006d0c14d3efa647b3c866ab54bdb1749fa31d (patch)
tree716de58438e96bde6a5553a8dd2a44620f529617 /src/builtin
parent9446bb78646bef4e3449a59a9e01118b025402bf (diff)
downloadminishell-65006d0c14d3efa647b3c866ab54bdb1749fa31d.tar.gz
minishell-65006d0c14d3efa647b3c866ab54bdb1749fa31d.tar.bz2
minishell-65006d0c14d3efa647b3c866ab54bdb1749fa31d.zip
Added concurrent pipeline (not working with minishell_test for some obscure reason)
Diffstat (limited to 'src/builtin')
-rw-r--r--src/builtin/cd.c8
-rw-r--r--src/builtin/echo.c2
-rw-r--r--src/builtin/export.c16
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);
}