recherche du pbm dans heredoc
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/11/16 01:57:38 by lperrey #+# #+# */
|
||||
/* Updated: 2021/12/05 09:28:00 by hulamy ### ########.fr */
|
||||
/* Updated: 2021/12/05 14:09:43 by hulamy ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -19,7 +19,6 @@ int exec_cmd_line(t_all *c)
|
||||
free_pipeline(&c->pipeline);
|
||||
return (0);
|
||||
}
|
||||
//write(1, "here\n", 5);
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/10/24 10:52:40 by lperrey #+# #+# */
|
||||
/* Updated: 2021/12/04 16:06:48 by hulamy ### ########.fr */
|
||||
/* Updated: 2021/12/05 14:02:10 by hulamy ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/11/11 18:46:43 by lperrey #+# #+# */
|
||||
/* Updated: 2021/12/05 10:58:56 by hulamy ### ########.fr */
|
||||
/* Updated: 2021/12/05 14:15:09 by hulamy ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -117,31 +117,3 @@ static int here_doc_write(char *delimiter, int doc_fd)
|
||||
sigaction(SIGINT, &signal_action, NULL);
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*
|
||||
static int here_doc_write(char *delimiter, int doc_fd)
|
||||
{
|
||||
char *line;
|
||||
int ret;
|
||||
|
||||
line = NULL;
|
||||
ret = 1;
|
||||
while (ret)
|
||||
{
|
||||
ret = gnl(STDIN_FILENO, &line, 0);
|
||||
if (ret == -1)
|
||||
return (ft_reti_perror_free(0, line, free, "gnl() STDIN"));
|
||||
if (ft_strncmp(line, delimiter, ft_strlen(line) + 1) == 0) // Ou ft_strlen(delimiter) + 1 ? Ça devrais être identique et ça peux se calculer une seul fois.
|
||||
break ;
|
||||
if (write(doc_fd, line, ft_strlen(line)) == -1)
|
||||
return (ft_reti_perror_free(0, line, free, "write() "TMP_HERE_DOC));
|
||||
if (write(doc_fd, "\n", 1) == -1)
|
||||
return (ft_reti_perror_free(0, line, free, "write() "TMP_HERE_DOC));
|
||||
free(line);
|
||||
line = NULL;
|
||||
}
|
||||
free(line);
|
||||
gnl(STDIN_FILENO, NULL, 1);
|
||||
return (1);
|
||||
}
|
||||
*/
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/11/11 18:46:43 by lperrey #+# #+# */
|
||||
/* Updated: 2021/12/04 16:05:46 by hulamy ### ########.fr */
|
||||
/* Updated: 2021/12/05 14:00:22 by hulamy ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/10/04 05:59:26 by lperrey #+# #+# */
|
||||
/* Updated: 2021/12/04 16:08:48 by hulamy ### ########.fr */
|
||||
/* Updated: 2021/12/05 14:15:18 by hulamy ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -23,9 +23,6 @@ void shell_loop(t_all *c)
|
||||
{
|
||||
if (line_input)
|
||||
free(line_input);
|
||||
write(2, c->prompt, ft_strlen(c->prompt));
|
||||
rl_already_prompted = 1;
|
||||
// line_input = read_input(NULL, c);
|
||||
line_input = read_input(c->prompt, c);
|
||||
if (line_input && *line_input)
|
||||
{
|
||||
|
||||
@@ -4,40 +4,38 @@
|
||||
#include <string.h>
|
||||
#include <readline/readline.h>
|
||||
|
||||
#define CYAN "\001\e[1;36m\002"
|
||||
#define WHITE "\001\e[1;37m\002"
|
||||
#define RESET "\001\e[0m\002"
|
||||
|
||||
int main(void)
|
||||
{
|
||||
char *prompt;
|
||||
char *line_input;
|
||||
char *heredoc;
|
||||
char *delimiter;
|
||||
char *here_line;
|
||||
|
||||
//prompt = WHITE"mybash a very long prompt to test the output in case of a redirection in a file> "RESET;
|
||||
prompt = WHITE"mybash> "RESET;
|
||||
line_input = NULL;
|
||||
while (1)
|
||||
{
|
||||
if (line_input)
|
||||
free(line_input);
|
||||
line_input = readline(prompt);
|
||||
line_input = readline(WHITE"mybash> "RESET);
|
||||
if (line_input)
|
||||
{
|
||||
if (!strncmp(line_input, "echo ", 5))
|
||||
heredoc = strstr(line_input, " << ");
|
||||
if (heredoc)
|
||||
{
|
||||
write(1, line_input + 5, strlen(line_input) - 5);
|
||||
write(1, "\n", 1);
|
||||
delimiter = heredoc + strlen(" << ");
|
||||
while(1)
|
||||
{
|
||||
here_line = NULL;
|
||||
here_line = readline(CYAN"> "RESET);
|
||||
if (!strncmp(here_line, delimiter, strlen(here_line) + 1))
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!line_input)
|
||||
{
|
||||
write(2, "exit\n", 5);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
/*
|
||||
prompt = WHITE"mybash a very long prompt to test the output in case of a redirection in a file, style longer than that even> "RESET;
|
||||
write(1, prompt, strlen(prompt));
|
||||
write(1, "\n", 1);
|
||||
*/
|
||||
return (0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user