summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJozanLeClerc <bousset.rudy@gmail.com>2020-09-01 16:40:05 +0200
committerJozanLeClerc <bousset.rudy@gmail.com>2020-09-01 16:40:05 +0200
commit06217e697520e5c97393bc06b89fda073efa7ea6 (patch)
tree7f0c744900487395ffc36ed4185035876633bef3
parentSecured malloc (diff)
download42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.tar.gz
42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.tar.bz2
42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.tar.xz
42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.tar.zst
42-minishell-06217e697520e5c97393bc06b89fda073efa7ea6.zip
Update
-rw-r--r--Makefile1
-rw-r--r--TODO.org2
-rw-r--r--src/p_args.c52
-rw-r--r--src/p_args.h20
-rw-r--r--src/p_lcom_next.c47
-rw-r--r--src/s_com.c3
6 files changed, 101 insertions, 24 deletions
diff --git a/Makefile b/Makefile
index fd79f8f..bf8bb0c 100644
--- a/Makefile
+++ b/Makefile
@@ -61,6 +61,7 @@ SRCS_NAME += s_init
SRCS_NAME += s_line
SRCS_NAME += s_lvars
SRCS_NAME += s_lpipes
+SRCS_NAME += p_args
SRCS_NAME += p_line
SRCS_NAME += p_lcom
SRCS_NAME += p_lcom_next
diff --git a/TODO.org b/TODO.org
index b46e26e..5fa00b7 100644
--- a/TODO.org
+++ b/TODO.org
@@ -7,7 +7,7 @@
** DONE [#A] fix pwd when cd /
** DONE [#A] Multiline pipes (ls |)
** TODO [#A] Go full tok + quotes
-** TODO [#A] ls qweqwe; echo $? <---- reparse
+** TODO [#A] ls qweqwe; echo $? <---- substitute
** TODO [#A] <>>
** DONE [#B] forked write(2) stuff on cd
** DONE [#B] Multiline && ||
diff --git a/src/p_args.c b/src/p_args.c
new file mode 100644
index 0000000..6b285da
--- /dev/null
+++ b/src/p_args.c
@@ -0,0 +1,52 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* p_args.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#include <libft.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+char
+ **p_split_args(const char word[], int8_t redir)
+{
+ char **words;
+
+ (void)word;
+ if (redir == 0)
+ {
+ return (words);
+ }
+ return (words);
+ /* char **words; */
+ /* char *subst; */
+ /* size_t i; */
+
+ /* if (redir == 0) */
+ /* { */
+ /* if (!(words = ft_split(word, ' '))) */
+ /* return (NULL); */
+ /* return (words); */
+ /* } */
+ /* i = 0; */
+ /* while (word[i] && ft_ischarset("<>", word[i]) == FALSE) */
+ /* i++; */
+ /* while (redir > 0 && ft_isdigit(word[i]) == TRUE) */
+ /* i--; */
+ /* if (!(subst = ft_substr(word, 0, i))) */
+ /* return (NULL); */
+ /* if (!(words = ft_split(subst, ' '))) */
+ /* { */
+ /* ft_memdel((void*)&subst); */
+ /* return (NULL); */
+ /* } */
+ /* ft_memdel((void*)&subst); */
+ /* return (words); */
+}
diff --git a/src/p_args.h b/src/p_args.h
new file mode 100644
index 0000000..162723d
--- /dev/null
+++ b/src/p_args.h
@@ -0,0 +1,20 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* p_args.h :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#ifndef P_ARGS_H
+#define P_ARGS_H
+
+#include <stdint.h>
+
+char **p_split_args(const char word[], int8_t redir);
+
+#endif
diff --git a/src/p_lcom_next.c b/src/p_lcom_next.c
index b04d393..28ad821 100644
--- a/src/p_lcom_next.c
+++ b/src/p_lcom_next.c
@@ -76,29 +76,32 @@ char
int8_t redir)
{
char **words;
- char *subst;
- size_t i;
- if (redir == 0)
- {
- if (!(words = ft_split(word, ' ')))
- return (NULL);
- return (words);
- }
- i = 0;
- while (word[i] && ft_ischarset("<>", word[i]) == FALSE)
- i++;
- while (redir > 0 && ft_isdigit(word[i]) == TRUE)
- i--;
- if (!(subst = ft_substr(word, 0, i)))
- return (NULL);
- if (!(words = ft_split(subst, ' ')))
- {
- ft_memdel((void*)&subst);
- return (NULL);
- }
- ft_memdel((void*)&subst);
return (words);
+ /* char **words; */
+ /* char *subst; */
+ /* size_t i; */
+
+ /* if (redir == 0) */
+ /* { */
+ /* if (!(words = ft_split(word, ' '))) */
+ /* return (NULL); */
+ /* return (words); */
+ /* } */
+ /* i = 0; */
+ /* while (word[i] && ft_ischarset("<>", word[i]) == FALSE) */
+ /* i++; */
+ /* while (redir > 0 && ft_isdigit(word[i]) == TRUE) */
+ /* i--; */
+ /* if (!(subst = ft_substr(word, 0, i))) */
+ /* return (NULL); */
+ /* if (!(words = ft_split(subst, ' '))) */
+ /* { */
+ /* ft_memdel((void*)&subst); */
+ /* return (NULL); */
+ /* } */
+ /* ft_memdel((void*)&subst); */
+ /* return (words); */
}
char
@@ -184,7 +187,7 @@ static char
k = i;
while (i - k < j)
{
- if (!(rewords[i - k] = ft_strdup(words[i])))
+ if ((rewords[i - k] = ft_strdup(words[i])) == NULL)
{
ft_delwords(words);
f_alloc_and_destroy_msh(msh);
diff --git a/src/s_com.c b/src/s_com.c
index 550616c..75a5040 100644
--- a/src/s_com.c
+++ b/src/s_com.c
@@ -14,6 +14,7 @@
#include <stdlib.h>
#include "f_fail.h"
+#include "p_args.h"
#include "p_lcom.h"
#include "p_lcom_next.h"
#include "s_struct.h"
@@ -113,7 +114,7 @@ t_com
com->env_fork = NULL;
if (get_redir(word, &com) != 0)
return (NULL);
- if ((words = p_subst_args(word, com->redir)) == NULL)
+ if ((words = p_split_args(word, com->redir)) == NULL)
return (NULL);
if ((words = p_subst_vars(words, msh)) == NULL)
return (NULL);