From 46e785f7a047e3cf51a43b54223110c654503880 Mon Sep 17 00:00:00 2001 From: joe Date: Mon, 30 Nov 2020 15:09:26 +0100 Subject: get normed --- src/b_alias_register.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/b_alias_register.c (limited to 'src/b_alias_register.c') diff --git a/src/b_alias_register.c b/src/b_alias_register.c new file mode 100644 index 0000000..8f75e36 --- /dev/null +++ b/src/b_alias_register.c @@ -0,0 +1,67 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* b_alias_register.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: rbousset +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ +/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ +/* */ +/* ************************************************************************** */ + +#include +#ifdef __linux__ +# include +#else +# include +#endif + +#include "d_define.h" +#include "s_struct.h" +#include "u_alias.h" + +static void b_cpy_alias(char name[], char *ptr, char value[]) +{ + char *rptr; + char tmp; + + 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); + } +} + +void b_register_arg(const char arg[], t_msh *msh) +{ + char name[255]; + char *ptr; + char value[ARG_MAX]; + + ptr = (char*)arg; + while (*ptr != C_NUL && *ptr != C_EQUALS) + { + ptr++; + } + if (*ptr == C_EQUALS) + { + ft_strlcpy(name, arg, (ptr - arg < 255) ? ((ptr - arg) + 1) : (255)); + ptr += 1; + b_cpy_alias(name, ptr, value); + u_set_alias_value(name, value, msh); + } +} + + -- cgit v1.2.3