diff options
Diffstat (limited to 'src/s_lcom.c')
-rw-r--r-- | src/s_lcom.c | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/src/s_lcom.c b/src/s_lcom.c deleted file mode 100644 index 536a8ff..0000000 --- a/src/s_lcom.c +++ /dev/null @@ -1,149 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* s_lcom.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 "p_lcom.h" -#include "p_lcom_next.h" -#include "s_struct.h" -#include "s_lcom_next.h" - -static int8_t - fill_lcom(char *words[], - t_lcom **lcom) -{ - /* TODO: norme */ - uint64_t i; - uint64_t j; - - i = 0; - if (words[0]) - { - if (!((*lcom)->com = (char*)malloc((ft_strlen(words[0]) + 1) * - sizeof(char)))) - return (-1); - ft_strlcpy((*lcom)->com, words[0], ft_strlen(words[0]) + 1); - } - else - return (0); - while(words[i]) - { - /* TODO: cut fd number "msh ~> echo a 2>file" */ - /* ^ */ - if (ft_ischarset("<>", words[i][0])) - break ; - i++; - } - if (!((*lcom)->argv = (char**)malloc((i + 1) * sizeof(char*)))) - return (-1); - j = 0; - while (i > 0 && j < i) - { - if (!((*lcom)->argv[j] = ft_strdup(words[j]))) - return (-1); - j++; - } - (*lcom)->argv[j] = 0; - return (0); -} - -t_lcom - *lcom_last(t_lcom *lcom) -{ - while (lcom->next != NULL) - lcom = lcom->next; - return (lcom); -} - -void - lcom_add_back(t_lcom **alcom, - t_lcom *new) -{ - t_lcom *tmp; - - if (!*alcom) - *alcom = new; - else - { - tmp = lcom_last(*alcom); - tmp->next = new; - } -} - -void - lcom_clear(t_lcom **lcom) -{ - t_lcom *tmp; - t_lcom *renext; - - if (!lcom) - return ; - tmp = *lcom; - while (tmp) - { - renext = tmp->next; - ft_memdel((void*)&tmp->com); - if (tmp->argv) - ft_delwords(tmp->argv); - if (tmp->redir != 0) - ft_memdel((void*)&tmp->rdrpath); - if (tmp->env_fork != NULL) - ft_delwords(tmp->env_fork); - ft_memdel((void*)&tmp); - tmp = renext; - } - *lcom = NULL; -} - -t_lcom - *lcom_new(const char word[], - t_msh *msh) -{ - /* TODO: norme */ - t_lcom *link; - char **words; - - if (!(link = (t_lcom*)malloc(sizeof(t_lcom)))) - return (NULL); - link->redir = 0; - link->com = NULL; - link->argv = NULL; - link->rdrfd = 0; - link->rdrpath = NULL; - link->pipes = NULL; - link->env_fork = NULL; - if (!word) - { - link->next = NULL; - return (link); - } - link->pipes = NULL; - if (get_redir(word, &link) != 0) - return (NULL); - if (!(words = p_subst_args(word, link->redir))) - return (NULL); - if (!(words = p_subst_vars(words, msh))) - return (NULL); - words = p_check_args_equals(words, msh); - if (msh->env_fork_tmp[0][0] != '\0') - lcom_cpy_env_fork(&link, msh); - if (fill_lcom(words, &link) < 0) - { - ft_delwords(words); - return (NULL); - } - link->next = NULL; - ft_delwords(words); - return (link); -} |