summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRudy Bousset <rbousset@z2r5p6.le-101.fr>2019-10-29 13:22:04 +0100
committerRudy Bousset <rbousset@z2r5p6.le-101.fr>2019-10-29 13:22:04 +0100
commit079d839aee68e52932eacbd8d4c75ba1388b006a (patch)
tree406665acdbfa9e61fbccad924d4dcc27de0463e1 /src
parentlibft included (diff)
download42-minishell-079d839aee68e52932eacbd8d4c75ba1388b006a.tar.gz
42-minishell-079d839aee68e52932eacbd8d4c75ba1388b006a.tar.bz2
42-minishell-079d839aee68e52932eacbd8d4c75ba1388b006a.tar.xz
42-minishell-079d839aee68e52932eacbd8d4c75ba1388b006a.tar.zst
42-minishell-079d839aee68e52932eacbd8d4c75ba1388b006a.zip
tons of changes
Diffstat (limited to '')
-rw-r--r--src/ft_echo.c31
-rw-r--r--src/ft_process_arg.c22
-rw-r--r--src/ft_pwd.c13
-rw-r--r--src/main.c10
4 files changed, 74 insertions, 2 deletions
diff --git a/src/ft_echo.c b/src/ft_echo.c
index a7e6303..66d803f 100644
--- a/src/ft_echo.c
+++ b/src/ft_echo.c
@@ -1,5 +1,32 @@
#include <libft.h>
-void
-ft_echo(const char *arg)
+#include <minishell.h>
+#include <inttypes.h>
+
+int
+ft_echo(char **com, uint8_t n)
{
+ uint8_t i;
+ int fd;
+
+ i = 1;
+ fd = 1;
+ if (!com[1])
+ ft_putendl_fd("", fd);
+ else if (ft_strncmp(com[1], "-n", ft_strlen(com[1])))
+ {
+ while (i < n)
+ {
+ ft_putendl_fd(com[i], fd);
+ i++;
+ }
+ }
+ else
+ {
+ while (i < n)
+ {
+ ft_putstr_fd(com[i], fd);
+ i++;
+ }
+ }
+ return (0);
}
diff --git a/src/ft_process_arg.c b/src/ft_process_arg.c
new file mode 100644
index 0000000..d82f9da
--- /dev/null
+++ b/src/ft_process_arg.c
@@ -0,0 +1,22 @@
+#include <libft.h>
+#include <minishell.h>
+#include <inttypes.h>
+
+int
+ft_process_arg(const char *arg)
+{
+ char **com;
+ uint8_t i;
+
+ i = 0;
+ com = ft_split(arg, ' ');
+ while (com[i])
+ i++;
+ if (!ft_strncmp(com[0], "exit", ft_strlen(com[0])))
+ return (8);
+ else if (!ft_strncmp(com[0], "echo", ft_strlen(com[0])))
+ ft_echo(com, i);
+ else if (!ft_strncmp(com[0], "pwd", ft_strlen(com[0])))
+ ft_pwd();
+ return (0);
+}
diff --git a/src/ft_pwd.c b/src/ft_pwd.c
new file mode 100644
index 0000000..24394fe
--- /dev/null
+++ b/src/ft_pwd.c
@@ -0,0 +1,13 @@
+#include <libft.h>
+#include <stddef.h>
+#include <unistd.h>
+
+int
+ft_pwd(void)
+{
+ char *buff;
+
+ buff = NULL;
+ ft_putstr(getcwd(buff, 1000));
+ return (0);
+}
diff --git a/src/main.c b/src/main.c
index a841322..5db5fb7 100644
--- a/src/main.c
+++ b/src/main.c
@@ -12,6 +12,7 @@
/* ************************************************************************** */
#include <libft.h>
+#include <minishell.h>
#include <stdlib.h>
#include <stddef.h>
#include <unistd.h>
@@ -25,8 +26,14 @@ int
uint8_t i;
i = 0;
+ arg = NULL;
while (1)
{
+ if (arg)
+ {
+ free(arg);
+ arg = NULL;
+ }
if (!(arg = (char*)ft_calloc(129, sizeof(char))))
return (1);
write(1, "joe-shell~> ", 12);
@@ -44,7 +51,10 @@ int
i++;
}
arg[i] = '\0';
+ if (ft_process_arg(arg) == 8)
+ break ;
}
free(arg);
+ arg = NULL;
return (0);
}