From 425fbd15cd7d27bf23b18c194901d1243d800d22 Mon Sep 17 00:00:00 2001 From: Etienne Rey-bethbeder Date: Fri, 14 Apr 2023 14:16:09 +0200 Subject: [PATCH] _ --- utils/ft_split_charset_quoted.c | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/utils/ft_split_charset_quoted.c b/utils/ft_split_charset_quoted.c index f5e83c7..268007c 100644 --- a/utils/ft_split_charset_quoted.c +++ b/utils/ft_split_charset_quoted.c @@ -6,7 +6,7 @@ /* By: erey-bet +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2023/04/11 14:50:26 by erey-bet #+# #+# */ -/* Updated: 2023/04/11 16:59:15 by cchauvet ### ########.fr */ +/* Updated: 2023/04/14 14:14:25 by erey-bet ### ########.fr */ /* */ /* ************************************************************************** */ @@ -14,6 +14,8 @@ int new_strs(char ***strs, const char *to_split, int *i, int *j) { + if (ft_strlen((*strs)[(*i)]) <= 0) + return (0); (*i)++; (*j) = 0; (*strs)[(*i)] = ft_calloc(sizeof(char), @@ -31,9 +33,6 @@ int get_strs(const char *to_split, const char *charset, char ***strs, int *i) x = -1; j = 0; - (*strs)[(*i)] = ft_calloc(sizeof(char), (ft_strlen(to_split) + 1)); - if (!(*strs)[(*i)]) - return (1); while (to_split[++x]) { y = -1; @@ -42,10 +41,12 @@ int get_strs(const char *to_split, const char *charset, char ***strs, int *i) if (to_split[x] == charset[y] && !ft_is_in_quote(to_split, x)) { y = 0; - x++; - if (ft_strlen((*strs)[(*i)]) > 0) + if (to_split[x + 1]) + { + x++; if (new_strs(strs, to_split, i, &j)) return (1); + } } } (*strs)[(*i)][j++] = to_split[x]; @@ -62,6 +63,12 @@ char **ft_split_charset_quoted(const char *to_split, const char *charset) if (!strs) return (NULL); i = 0; + strs[0] = ft_calloc(sizeof(char), (ft_strlen(to_split) + 1)); + if (!strs[0]) + { + free(strs); + return (NULL); + } if (get_strs(to_split, charset, &strs, &i)) { i = -1; @@ -73,11 +80,13 @@ char **ft_split_charset_quoted(const char *to_split, const char *charset) return (strs); } -/*int main(int argc, char **argv) +/*#include + +int main(int argc, char **argv) { char **strs; if (argc == 3) - strs = ft_split_charset(argv[1], argv[2]); + strs = ft_split_charset_quoted(argv[1], argv[2]); int i = -1; while (strs[++i]) printf("%s\n", strs[i]);