diff options
| -rw-r--r-- | include/minishell.h | 3 | ||||
| m--------- | libft | 0 | ||||
| m--------- | minishell_test | 0 | ||||
| -rw-r--r-- | src/main.c | 12 | ||||
| -rw-r--r-- | src/preprocess.c | 8 | ||||
| -rw-r--r-- | src/utils.c | 30 |
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 @@ -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)); +} |
