diff options
| author | joe <rbousset@42lyon.fr> | 2020-11-30 13:25:02 +0100 | 
|---|---|---|
| committer | joe <rbousset@42lyon.fr> | 2020-11-30 13:25:02 +0100 | 
| commit | 8d6a9c4848cae74be5b07390079cf888af2786b4 (patch) | |
| tree | 069cc533a46ca8a036333dcc60e48da96ab6591b /src | |
| parent | Fix (diff) | |
| download | 42-minishell-8d6a9c4848cae74be5b07390079cf888af2786b4.tar.gz 42-minishell-8d6a9c4848cae74be5b07390079cf888af2786b4.tar.bz2 42-minishell-8d6a9c4848cae74be5b07390079cf888af2786b4.tar.xz 42-minishell-8d6a9c4848cae74be5b07390079cf888af2786b4.tar.zst 42-minishell-8d6a9c4848cae74be5b07390079cf888af2786b4.zip  | |
Fixed alias but norme
Diffstat (limited to '')
| -rw-r--r-- | src/b_alias.c | 19 | 
1 files changed, 18 insertions, 1 deletions
diff --git a/src/b_alias.c b/src/b_alias.c index 02dfedb..fc1651b 100644 --- a/src/b_alias.c +++ b/src/b_alias.c @@ -72,11 +72,14 @@ static unsigned char	b_print_arg(const char arg[], t_msh *msh)  	return (b_print_arg_next(ptr, arg, invalid, msh));  } +#include <stdlib.h>  static void				b_register_arg(const char arg[], t_msh *msh)  {  	char	*ptr; +	char	*rptr;  	char	name[255];  	char	value[ARG_MAX]; +	char	tmp;  	ptr = (char*)arg;  	while (*ptr != C_NUL && *ptr != C_EQUALS) @@ -87,7 +90,21 @@ static void				b_register_arg(const char arg[], t_msh *msh)  	{  		ft_strlcpy(name, arg, (ptr - arg < 255) ? ((ptr - arg) + 1) : (255));  		ptr += 1; -		ft_strlcpy(value, ptr, ARG_MAX); +		rptr = ptr; +		while (*rptr != C_NUL && ft_iswhitespace(*rptr) == TRUE) +			rptr++; +		tmp = *(rptr + ft_strlen(name)); +		*(rptr + ft_strlen(name)) = C_NUL; +		if (ft_strncmp(rptr, name, ft_strlen(name) + 1) == 0) { +			*(rptr + ft_strlen(name)) = tmp; +			ft_strlcpy(value, ptr, ARG_MAX); +			ft_memmove(value + (rptr - ptr) + 1, value + (rptr - ptr), ft_strlen(value + (rptr - ptr)) + 1); +			*(value + (rptr - ptr)) = C_BACKS; +		} +		else { +			*(rptr + ft_strlen(name)) = tmp; +			ft_strlcpy(value, ptr, ARG_MAX); +		}  		u_set_alias_value(name, value, msh);  	}  }  | 
