From 483d6579d66b5030d962b25a1096c77c9514a1d6 Mon Sep 17 00:00:00 2001 From: tomoron Date: Tue, 16 Apr 2024 09:35:04 +0200 Subject: [PATCH] wildcards (mieux) --- srcs/wildcards.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/srcs/wildcards.c b/srcs/wildcards.c index 2062cb4..015fa4d 100644 --- a/srcs/wildcards.c +++ b/srcs/wildcards.c @@ -6,7 +6,7 @@ /* By: tomoron +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/04/15 12:53:29 by tomoron #+# #+# */ -/* Updated: 2024/04/15 18:54:15 by tomoron ### ########.fr */ +/* Updated: 2024/04/16 09:34:47 by tomoron ### ########.fr */ /* */ /* ************************************************************************** */ #include "minishell.h" @@ -15,11 +15,11 @@ int filename_corresponds(char *wildcard, char *value) { if(*value == '.' && *wildcard != '.') return(0); - while(*wildcard && *value && (*wildcard == '*' || *wildcard == *value)) + while(*wildcard && (*wildcard == '*' || *wildcard == *value)) { if(*wildcard == '*') { - while(*wildcard && *value && *value != wildcard[1]) + while(*wildcard && *value && *value != wildcard[1] && *wildcard != wildcard[1]) value++; wildcard++; } @@ -29,7 +29,7 @@ int filename_corresponds(char *wildcard, char *value) value++; } } - return(!*wildcard); + return(!*wildcard && !*value); } t_token *expand_wildcards(t_token *res, char *value) @@ -37,7 +37,9 @@ t_token *expand_wildcards(t_token *res, char *value) DIR *dir; char *cwd; struct dirent *content; + int found; + found = 0; if(!ft_strchr(value, '*')) return(token_add_back(res, value)); cwd = getcwd(NULL, 100000); @@ -51,11 +53,14 @@ t_token *expand_wildcards(t_token *res, char *value) while(content) { if(filename_corresponds(value, content->d_name)) + { res = token_add_back(res,ft_strdup(content->d_name)); + found = 1; + } content = readdir(dir); } closedir(dir); - if(!res) + if(!found) return(token_add_back(res, value)); free(value); return(res);