/* ************************************************************************** */ /* */ /* ::: :::::::: */ /* u_utils.c :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: rbousset +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2020/02/14 17:19:27 by rbousset #+# #+# */ /* Updated: 2020/02/14 17:19:29 by rbousset ### ########lyon.fr */ /* */ /* ************************************************************************** */ #include #include #include #include "d_define.h" #include "f_fail.h" #include "s_struct.h" t_bool u_is_not_escaped(const char *head, const char *ptr) { if (((ptr - head) == 0) || ((ptr - head) >= 1 && *(ptr - 1) != C_BACKS) || ((ptr - head) > 1 && *(ptr - 1) == C_BACKS && *(ptr - 2) == C_BACKS)) return (TRUE); return (FALSE); } void u_eof_fd(int fd) { char *line; close(fd); get_next_line(fd, &line); ft_memdel((void*)&line); } char **u_get_env_var_names(t_msh *msh) { char **vars; size_t i; i = 0; while (msh->envp[i] != NULL) i++; if ((vars = (char**)malloc((i + 1) * sizeof(char*))) == NULL) f_alloc_and_destroy_msh(msh); i = 0; while (msh->envp[i] != NULL) { if ((vars[i] = (char*)malloc((ft_strclen(msh->envp[i], '=') + 1) * sizeof(char))) == NULL) f_alloc_and_destroy_msh(msh); ft_strlcpy(vars[i], msh->envp[i], ft_strclen(msh->envp[i], '=') + 1); i++; } vars[i] = NULL; return (vars); } unsigned long u_builtins_get_argc(const char *args[]) { unsigned long argc; argc = 0; while (args[argc] != NULL) { argc++; } return (argc); } unsigned char u_get_builtin_id(const char bin[]) { char tmp[M_BUILTINS_REF_LEN]; char *tok; unsigned char i; i = 0; ft_strlcpy(tmp, M_BUILTINS_REF, M_BUILTINS_REF_LEN); tok = ft_strtok(tmp, ":"); while (tok != NULL && ft_strncmp(bin, tok, ft_strlen(tok) + 1) != 0) { tok = ft_strtok(NULL, ":"); i++; } return (i); }