summaryrefslogtreecommitdiffstats
path: root/src/b_alias_register.c
diff options
context:
space:
mode:
authorjoe <rbousset@42lyon.fr>2020-11-30 15:09:26 +0100
committerjoe <rbousset@42lyon.fr>2020-11-30 15:09:26 +0100
commit46e785f7a047e3cf51a43b54223110c654503880 (patch)
tree91539bef97ec7f6a2a884cfd29a4ccd7e88673a6 /src/b_alias_register.c
parentFixed alias but norme (diff)
download42-minishell-46e785f7a047e3cf51a43b54223110c654503880.tar.gz
42-minishell-46e785f7a047e3cf51a43b54223110c654503880.tar.bz2
42-minishell-46e785f7a047e3cf51a43b54223110c654503880.tar.xz
42-minishell-46e785f7a047e3cf51a43b54223110c654503880.tar.zst
42-minishell-46e785f7a047e3cf51a43b54223110c654503880.zip
get normed
Diffstat (limited to 'src/b_alias_register.c')
-rw-r--r--src/b_alias_register.c67
1 files changed, 67 insertions, 0 deletions
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 <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */
+/* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#include <libft.h>
+#ifdef __linux__
+# include <linux/limits.h>
+#else
+# include <limits.h>
+#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);
+ }
+}
+
+