aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/minishell.h3
m---------libft0
m---------minishell_test0
-rw-r--r--src/main.c12
-rw-r--r--src/preprocess.c8
-rw-r--r--src/utils.c30
6 files changed, 48 insertions, 5 deletions
diff --git a/include/minishell.h b/include/minishell.h
index fe05b7e..5ea68c5 100644
--- a/include/minishell.h
+++ b/include/minishell.h
@@ -6,7 +6,7 @@
/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/26 15:33:51 by cacharle #+# #+# */
-/* Updated: 2020/07/19 19:24:06 by charles ### ########.fr */
+/* Updated: 2020/08/19 17:42:15 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -149,6 +149,7 @@ int utils_directory_iter(
size_t utils_var_end(char *name);
bool utils_valid_identifier(char *name);
bool utils_start_with_valid_identifier(char *name);
+char **ms_split_notrim(const char *s, char c);
void print_prompt(void);
diff --git a/libft b/libft
-Subproject 450e36f8ddf974e503731288c8d8bb8c62e67e4
+Subproject b878aa62024fdff08a9a76d80ddbeb1ee19d917
diff --git a/minishell_test b/minishell_test
-Subproject cae6075853516fba08b61f42fa9f25f4afd1df1
+Subproject aacf088db4d9d3e0b450247abe1d8f258d07d86
diff --git a/src/main.c b/src/main.c
index 27dae1b..31c6370 100644
--- a/src/main.c
+++ b/src/main.c
@@ -6,7 +6,7 @@
/* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/28 11:45:44 by cacharle #+# #+# */
-/* Updated: 2020/08/19 10:03:24 by charles ### ########.fr */
+/* Updated: 2020/08/19 17:54:22 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -51,6 +51,16 @@ char *g_basename = "minishell";
int main(int argc, char **argv, char **envp)
{
+ /* char **strs = ms_split_notrim(ft_strdup(" bar "), ' '); */
+ /* printf("p %p\n", strs); */
+ /* */
+ /* for (size_t i = 0; strs[i] != NULL; i++) */
+ /* printf("|%s|\n", strs[i]); */
+ /* return 0; */
+
+
+
+
t_path path;
t_env env;
diff --git a/src/preprocess.c b/src/preprocess.c
index b3cb493..01e24a3 100644
--- a/src/preprocess.c
+++ b/src/preprocess.c
@@ -6,7 +6,7 @@
/* By: charles <charles@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/04/03 08:58:49 by charles #+# #+# */
-/* Updated: 2020/08/19 16:32:22 by charles ### ########.fr */
+/* Updated: 2020/08/19 17:56:12 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -21,7 +21,7 @@ static t_ftlst *st_field_split(char *str)
t_ftlst *node;
int i;
- if ((strs = ft_split(str, ' ')) == NULL)
+ if ((strs = ms_split_notrim(str, ' ')) == NULL)
return (NULL);
ret = NULL;
i = 0;
@@ -39,6 +39,7 @@ static t_ftlst *st_field_split(char *str)
return (ret);
}
+// FIXME field split space before/after when arg not sticked
char **preprocess(t_ftlst **tokens, t_env env)
{
t_ftlst *curr;
@@ -167,7 +168,10 @@ char *preprocess_filename(t_ftlst **tokens, t_env env)
if ((strs = preprocess(tokens, env)) == NULL
|| strs[0] == NULL)
+ {
+ free(strs);
return (NULL);
+ }
if (strs[1] != NULL)
{
/* save tokens */
diff --git a/src/utils.c b/src/utils.c
index b301751..a0771db 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -6,7 +6,7 @@
/* By: cacharle <cacharle@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/28 11:56:31 by cacharle #+# #+# */
-/* Updated: 2020/07/20 17:06:21 by charles ### ########.fr */
+/* Updated: 2020/08/19 17:50:43 by charles ### ########.fr */
/* */
/* ************************************************************************** */
@@ -97,3 +97,31 @@ void print_prompt(void)
printf("\033[0;32m%s\033[0m$ ", getcwd(NULL, 0));
fflush(stdout);
}
+
+char **ms_split_notrim(const char *s, char c)
+{
+ t_ftvec *ret;
+ char *match;
+
+ if ((ret = ft_vecnew(16)) == NULL)
+ return (NULL);
+ while (*s != '\0')
+ {
+ if ((match = ft_strchr(s, c)) == NULL)
+ {
+ if (ft_vecpush_safe(ret, ft_strdup(s)) == NULL)
+ return (ft_vecdestroy(ret, free));
+ break;
+ }
+ if (ft_vecpush_safe(ret, ft_strndup(s, match - s)) == NULL)
+ return (ft_vecdestroy(ret, free));
+ while (*++match == c)
+ ;
+ s = match;
+ if (*s == '\0' && ft_vecpush_safe(ret, ft_strdup(s)) == NULL)
+ return (ft_vecdestroy(ret, free));
+ }
+ if (ft_vecpush(ret, NULL) == NULL)
+ return (ft_vecdestroy(ret, free));
+ return ((char**)ft_vecunwrap(ret));
+}