diff options
author | JozanLeClerc <bousset.rudy@gmail.com> | 2020-09-08 18:50:11 +0200 |
---|---|---|
committer | JozanLeClerc <bousset.rudy@gmail.com> | 2020-09-08 18:50:11 +0200 |
commit | 4dd10e6f4de22446ea84d7b194d2a18cb6e43c6c (patch) | |
tree | 2768d27ebe01fa5e74b4e6d14c5defdfd501a1d6 /src/p_lcom_next.c | |
parent | static hist, words fix (diff) | |
download | 42-minishell-4dd10e6f4de22446ea84d7b194d2a18cb6e43c6c.tar.gz 42-minishell-4dd10e6f4de22446ea84d7b194d2a18cb6e43c6c.tar.bz2 42-minishell-4dd10e6f4de22446ea84d7b194d2a18cb6e43c6c.tar.xz 42-minishell-4dd10e6f4de22446ea84d7b194d2a18cb6e43c6c.tar.zst 42-minishell-4dd10e6f4de22446ea84d7b194d2a18cb6e43c6c.zip |
Names
Diffstat (limited to 'src/p_lcom_next.c')
-rw-r--r-- | src/p_lcom_next.c | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/src/p_lcom_next.c b/src/p_lcom_next.c deleted file mode 100644 index 16d8aac..0000000 --- a/src/p_lcom_next.c +++ /dev/null @@ -1,223 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* p_line_next.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> -#include <stdlib.h> -#include <stdint.h> -#include <limits.h> - -#include "d_define.h" -#include "s_destroy.h" -#include "f_fail.h" -#include "s_struct.h" -#include "u_utils.h" -#include "u_vars.h" -#include "u_vars_next.h" - -/* TODO: norme */ - -static char - *p_subst_this_var(char **p, int64_t i, char word[], t_msh *msh) -{ - char tmp[4096]; - char varval[4096]; - char *ptr; - size_t varlen; - - ptr = word; - varlen = i + 1; - while (ptr[varlen] != C_NUL && - ft_ischarset("$=\\/@%^*+{}[]<>,.-", ptr[varlen]) == FALSE && - ft_iswhitespace(ptr[varlen]) == FALSE) - varlen += 1; - ft_strlcpy(tmp, ptr + i, varlen + 1 - i); - u_get_var_value(varval, tmp, 4096, msh); - ft_strlcpy(tmp, ptr + varlen, varlen); - word = ft_nrealloc(word, i, i + ft_strlen(varval) + ft_strlen(tmp) + 1); - ft_strlcpy(word + i, varval, ft_strlen(varval) + 1); - ft_strlcpy(word + (i + ft_strlen(varval)), tmp, ft_strlen(tmp) + 1); - *(p) = word + (i + ft_strlen(varval) - 1); - return (word); -} - -char - *p_subst_vars(char word[], t_msh *msh) -{ - char *ptr; - - ptr = word; - while (*ptr != C_NUL) - { - if (*ptr == '$' && u_is_not_escaped(word, ptr) == TRUE) - { - if ((word = p_subst_this_var(&ptr, (ptr - word), word, msh)) == NULL) - { - return (NULL); - } - } - ptr++; - } - return (word); -} - -char - **p_subst_home(char *words[], - t_msh *msh) -{ - char path[PATH_MAX]; - char **ptr; - - u_get_var_value(path, "$HOME", PATH_MAX, msh); - if (path[0] == C_NUL) - return (words); - ptr = words; - while (*ptr != NULL) - { - if (*ptr[0] == '~') - { - *ptr = ft_strsubst(*ptr, "~", path); - } - ptr++; - } - return (words); -} - -static void - p_register_word(char word[], - t_msh *msh) -{ - char name[255]; - char val[255]; - char *ptr; - size_t i; - - name[0] = '$'; - ptr = word; - i = 1; - while (*ptr != '=' && *ptr != '\0') - { - name[i] = *ptr; - i++; - ptr++; - } - name[i] = '\0'; - ptr++; - i = 0; - while (*ptr != '\0') - { - val[i] = *ptr; - i++; - ptr++; - } - val[i] = '\0'; - u_subst_var_value(name, val, msh); -} - -static char - **p_add_to_variables_and_delete(char *words[], - t_bool reg, - int64_t i, - t_msh *msh) -{ - int64_t j; - int64_t k; - char **rewords; - - j = 0; - if (reg == TRUE) - { - while (words[j] && j < i) - { - p_register_word(words[j], msh); - j++; - } - } - j = 0; - while (words[i + j] != NULL) - j++; - if (!(rewords = (char**)malloc((j + 1) * sizeof(char*)))) - { - ft_delwords(words); - f_alloc_and_destroy_msh(msh); - } - k = i; - while (i - k < j) - { - if ((rewords[i - k] = ft_strdup(words[i])) == NULL) - { - ft_delwords(words); - f_alloc_and_destroy_msh(msh); - } - i++; - } - rewords[i - k] = 0; - ft_delwords(words); - i++; - return (rewords); -} - -static void - p_add_to_env_fork(int64_t i, - char *words[], - t_msh *msh) -{ - int64_t j; - - j = 0; - while(j < i) - { - ft_strlcpy(msh->env_fork_tmp[j], words[j], ft_strlen(words[j]) + 1); - j++; - } - msh->env_fork_tmp[j][0] = '\0'; -} - -char - **p_check_args_equals(char *words[], - t_msh *msh) -{ - char *ptr; - t_bool reg; - t_bool isvar; - int64_t i; - - i = 0; - reg = FALSE; - isvar = FALSE; - while (words[i]) - { - ptr = words[i]; - while (*ptr != '\0' && *ptr != '=') - ptr++; - if (*ptr == '=') - { - reg = TRUE; - isvar = TRUE; - } - if (*ptr == '\0' || words[i][0] == '=' || - ft_isdigit(words[i][0]) == TRUE) - { - reg = FALSE; - if (i == 0) - isvar = FALSE; - if (isvar == TRUE) - p_add_to_env_fork(i, words, msh); - else - msh->env_fork_tmp[0][0] = '\0'; - break ; - } - i++; - } - if (isvar == TRUE) - return (p_add_to_variables_and_delete(words, reg, i, msh)); - return (words); -} |