summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/p_args.c2
-rw-r--r--src/p_lblock_next.c46
-rw-r--r--src/s_com.c3
3 files changed, 45 insertions, 6 deletions
diff --git a/src/p_args.c b/src/p_args.c
index 5276ae1..54a95a7 100644
--- a/src/p_args.c
+++ b/src/p_args.c
@@ -72,7 +72,7 @@ static uint16_t
mode = u_meet_dquote(word, ptr, mode);
else if (*ptr == C_SQUOTE)
mode = u_meet_squote(word, ptr, mode);
- if (ft_iswhitespace(*ptr) &&
+ if (ft_iswhitespace(*ptr) == TRUE &&
p_meet_whitespace((char*)word, ptr, mode) == TRUE)
{
ptr = p_skip_whitespace(ptr);
diff --git a/src/p_lblock_next.c b/src/p_lblock_next.c
index 036d6b5..8b755da 100644
--- a/src/p_lblock_next.c
+++ b/src/p_lblock_next.c
@@ -100,27 +100,65 @@ static char
return (ptr);
}
+static t_bool
+ p_meet_whitespace(char *head, char *ptr, t_quote_mode mode)
+{
+ if (mode == Q_NONE && u_is_not_escaped(head, ptr) == TRUE)
+ {
+ return (TRUE);
+ }
+ return (FALSE);
+}
+
void
p_subst_alias(char word[], t_msh *msh)
{
char *ptr;
- size_t first;
+ char tmp[255];
+ size_t locat[2];
+ t_bool good;
t_quote_mode mode;
(void)msh;
mode = Q_NONE;
ptr = word;
- p_skip_whitespace(ptr);
- first = 1;
+ ptr = p_skip_whitespace(ptr);
+ good = TRUE;
+ locat[0] = (ptr - word);
+ locat[1] = (ptr - word);
while (*ptr != C_NUL)
{
if (*ptr == C_DQUOTE)
mode = u_meet_dquote(word, ptr, mode);
if (*ptr == C_SQUOTE)
mode = u_meet_squote(word, ptr, mode);
- if (ft_iswhitespace(*ptr) == TRUE && p_meet_whitespace((char*)word, ptr, mode) == TRUE)
+ if (mode == Q_NONE && *ptr == C_EQUALS)
+ good = FALSE;
+ if (ft_iswhitespace(*ptr) == TRUE &&
+ p_meet_whitespace((char*)word, ptr, mode) == TRUE)
+ {
+ locat[1] = (ptr - word);
+ if (good == TRUE)
+ break ;
+ else
+ {
+ ptr = p_skip_whitespace(ptr);
+ locat[0] = (ptr - word);
+ ptr -= 1;
+ good = TRUE;
+ }
+ }
ptr++;
}
+ if (*ptr == C_NUL && good == TRUE)
+ locat[1] = (ptr - word);
+ if (good == TRUE)
+ {
+ ft_strlcpy(tmp,
+ word + locat[0],
+ ((locat[1] - locat[0] < 253) ? (locat[1] - locat[0]) : (254)) + 1);
+ ft_printf("(%s)\n", tmp);
+ }
}
char
diff --git a/src/s_com.c b/src/s_com.c
index 4d78573..b85905e 100644
--- a/src/s_com.c
+++ b/src/s_com.c
@@ -116,7 +116,8 @@ t_com
ft_strlcpy(nword, word, ARG_MAX);
if (p_get_redir(nword, &com) != 0)
return (NULL);
- p_subst_alias(nword, msh);
+ /* if (msh->alias != NULL) */
+ p_subst_alias(nword, msh);
p_subst_vars(nword, msh);
if ((words = p_split_args(nword, com->redir)) == NULL)
return (NULL);