Behaviour seems inconsistent

This commit is contained in:
Jérôme Guélen 2025-04-26 15:53:34 +02:00
parent 497f442d77
commit e5952b3f43
No known key found for this signature in database
4 changed files with 53 additions and 7 deletions

View file

@ -3,10 +3,10 @@
/* ::: :::::::: */ /* ::: :::::::: */
/* wordsplit_utils.c :+: :+: :+: */ /* wordsplit_utils.c :+: :+: :+: */
/* +:+ +:+ +:+ */ /* +:+ +:+ +:+ */
/* By: khais <marvin@42.fr> +#+ +:+ +#+ */ /* By: jguelen <jguelen@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/02/20 14:02:29 by khais #+# #+# */ /* Created: 2025/02/20 14:02:29 by khais #+# #+# */
/* Updated: 2025/04/09 13:34:02 by khais ### ########.fr */ /* Updated: 2025/04/26 15:07:17 by jguelen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */

View file

@ -6,7 +6,7 @@
/* By: jguelen <jguelen@student.42.fr> +#+ +:+ +#+ */ /* By: jguelen <jguelen@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/03/20 15:01:38 by jguelen #+# #+# */ /* Created: 2025/03/20 15:01:38 by jguelen #+# #+# */
/* Updated: 2025/04/25 18:54:06 by jguelen ### ########.fr */ /* Updated: 2025/04/26 15:18:35 by jguelen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -173,5 +173,8 @@ t_wordlist *expand_star(t_worddesc *file_pattern)
clean_pattern(pattern_copy); clean_pattern(pattern_copy);
expanded = expand_star_core(pattern_copy); expanded = expand_star_core(pattern_copy);
worddesc_destroy(pattern_copy); worddesc_destroy(pattern_copy);
return (expanded); if (ft_strcmp(expanded->word->word, file_pattern->word))
return (expanded);
wordlist_destroy(expanded);
return (NULL);
} }

View file

@ -6,7 +6,7 @@
/* By: jguelen <jguelen@student.42.fr> +#+ +:+ +#+ */ /* By: jguelen <jguelen@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/03/15 15:09:56 by jguelen #+# #+# */ /* Created: 2025/03/15 15:09:56 by jguelen #+# #+# */
/* Updated: 2025/04/25 18:53:04 by jguelen ### ########.fr */ /* Updated: 2025/04/26 15:06:41 by jguelen ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@ -66,6 +66,15 @@ int ispattern(t_worddesc *desc)
return (0); return (0);
} }
static char pattern_marker_quote_flip(char c, char *quote)
{
if (*quote == c)
*quote = '\0';
else if (*quote == '\0')
*quote = c;
return (*quote);
}
t_worddesc *deal_with_potential_pattern_marker(t_worddesc *file_pattern) t_worddesc *deal_with_potential_pattern_marker(t_worddesc *file_pattern)
{ {
t_worddesc *pattern_copy; t_worddesc *pattern_copy;
@ -73,14 +82,22 @@ t_worddesc *deal_with_potential_pattern_marker(t_worddesc *file_pattern)
char quote; char quote;
pattern_copy = worddesc_copy(file_pattern); pattern_copy = worddesc_copy(file_pattern);
if (!pattern_copy)
return (NULL);
if (file_pattern->flags & W_HASDOLLAR) if (file_pattern->flags & W_HASDOLLAR)
{ {
i = 0; i = 0;
quote = '\0'; quote = '\0';
while (file_pattern->word[i]) while (pattern_copy->word[i])
{ {
if (quote == '\0' || pattern_copy->word[i] == quote)
pattern_copy->marker[i] = ' ';
else
pattern_copy->marker[i] = quote;
if (pattern_copy->word[i] == '\'' || pattern_copy->word[i] == '"')
pattern_marker_quote_flip(pattern_copy->word[i], &quote);
i++; i++;
} }
} }
return (pattern_copy); return (pattern_copy);
} }

26
test.sh
View file

@ -1330,6 +1330,32 @@ expecting <<EOF
hello hello
hi hi
0 0
when_run <<"EOF" "unquoting behaviour with wildcard"
touch outfile
export target="'out*'"
echo $target
ls
EOF
expecting <<EOF
'out*'
outfile
EOF
when_run <<"EOF" "normal behaviour with wildcard before echo"
export target=out*
echo $target
EOF
expecting <<EOF
outfile
EOF
when_run <<"EOF" "normal behaviour with wildcard after variable expansion"
export target="out*"
echo $target
EOF
expecting <<EOF
outfile
EOF EOF
finalize finalize