summaryrefslogtreecommitdiffstats
path: root/src/ft_p_lcom.c
diff options
context:
space:
mode:
authorJozanLeClerc <bousset.rudy@gmail.com>2020-07-27 18:55:07 +0200
committerJozanLeClerc <bousset.rudy@gmail.com>2020-07-27 18:55:07 +0200
commit487a66394061f2d14a2fa421302966b5442d643f (patch)
tree34237d4e9cb85f94bcefd46f399d2224dff3f6b3 /src/ft_p_lcom.c
parentCorrect shell prompt (diff)
download42-minishell-487a66394061f2d14a2fa421302966b5442d643f.tar.gz
42-minishell-487a66394061f2d14a2fa421302966b5442d643f.tar.bz2
42-minishell-487a66394061f2d14a2fa421302966b5442d643f.tar.xz
42-minishell-487a66394061f2d14a2fa421302966b5442d643f.tar.zst
42-minishell-487a66394061f2d14a2fa421302966b5442d643f.zip
I couldn't see shit
Diffstat (limited to 'src/ft_p_lcom.c')
-rw-r--r--src/ft_p_lcom.c158
1 files changed, 0 insertions, 158 deletions
diff --git a/src/ft_p_lcom.c b/src/ft_p_lcom.c
deleted file mode 100644
index a8449ae..0000000
--- a/src/ft_p_lcom.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* ************************************************************************** */
-/* */
-/* ::: :::::::: */
-/* ft_p_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 <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-
-#include "ft_d_define.h"
-#include "ft_f_fail.h"
-#include "ft_s_lcom.h"
-#include "ft_s_lpipes.h"
-#include "ft_s_struct.h"
-
-static void
- ft_rdr_err_check(char *ptr,
- t_lcom **link)
-{
- if ((*link)->redir == -1 && ft_ischarset("><", *(ptr + 1)))
- {
- /* TODO: syntax err */
- }
- else if ((*link)->redir == 1 && ft_ischarset("<", *(ptr + 1)))
- {
- /* TODO: syntax err */
- }
- else if ((*link)->redir == 2 && ft_ischarset("<>", *(ptr + 1)))
- {
- /* TODO: syntax err */
- }
-}
-
-static int8_t
- ft_get_rdrpath(char *ptr,
- t_lcom **link)
-{
- char *p_rdrpath;
-
- ptr += ((*link)->redir == 2) ? (2) : (1);
- if (!((*link)->rdrpath =
- (char*)malloc((ft_strlen(ptr) + 1) * sizeof(char))))
- {
- return (-1);
- }
- p_rdrpath = (*link)->rdrpath;
- while (*ptr)
- {
- if (*ptr != ' ')
- {
- *p_rdrpath = *ptr;
- p_rdrpath++;
- }
- ptr++;
- }
- *p_rdrpath = '\0';
- return (0);
-}
-
-static void
- ft_get_rdrfd(const char *ptr,
- t_lcom **link)
-{
- while (ft_isdigit(*ptr))
- {
- ptr--;
- }
- if (*ptr != ' ')
- (*link)->rdrfd = STDOUT_FILENO;
- else
- {
- ptr += 1;
- (*link)->rdrfd = ft_atoi(ptr);
- }
-}
-
-int8_t
- ft_get_redir(const char word[],
- t_lcom **link)
-{
- /* TODO: norme */
- char *ptr;
-
- ptr = (char *)word;
- while (*ptr)
- {
- if (*ptr == '<')
- {
- (*link)->redir = -1;
- break ;
- }
- if (*ptr == '>')
- {
- (*link)->redir = (*(ptr + 1) == '>') ? (2) : (1);
- break ;
- }
- ptr++;
- /* TODO: handle correctly multiples "msh ~> echo qwe > qwe > asd >> zxc > qweasdzxc" */
- /* hint: bash only handles the last one */
- /* TODO: handle "msh ~> cat < Makefile >qwe" | gl hf */
- }
- if ((*link)->redir > 0)
- {
- if (ft_isdigit(*(ptr - 1)))
- ft_get_rdrfd(ptr - 1, link);
- else
- (*link)->rdrfd = STDOUT_FILENO;
- ft_rdr_err_check(ptr, link);
- if (ft_get_rdrpath(ptr, link) != 0)
- return (-1);
- }
- return (0);
-}
-
-int8_t
- ft_p_lcom(const char line[],
- const uint64_t count,
- t_msh *msh)
-{
- /* TODO: norme */
- uint64_t i;
- t_lcom *link;
- char **words;
- t_bool next;
-
- i = 0;
- if (!(words = ft_split(line, ';')))
- return (-1);
- while (i <= count && words[i])
- {
- next = FALSE;
- /* TODO: split pipes here */
- if (ft_strchr(words[i], '|'))
- {
- if (!(link = ft_lcom_new(NULL, msh)))
- return (-1);
- if (!(ft_split_pipes(words[i], link, msh)))
- return (-1);
- next = TRUE;
- }
- if (next == FALSE && !(link = ft_lcom_new(words[i], msh)))
- return (-1);
- ft_lcom_add_back(&msh->curr, link);
- i++;
- }
- ft_delwords(words);
- return (0);
-}