faut afire les hairdoc
This commit is contained in:
parent
dac4fe9717
commit
f30c4843ee
|
@ -6,7 +6,7 @@
|
|||
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/01/18 18:04:58 by erey-bet #+# #+# */
|
||||
/* Updated: 2023/01/20 17:58:22 by erey-bet ### ########.fr */
|
||||
/* Updated: 2023/01/30 14:24:01 by erey-bet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -32,68 +32,69 @@ int free_all(t_data *data)
|
|||
i = -1;
|
||||
while (++i < data->argc - 3)
|
||||
free(data->cmds[i]);
|
||||
free(data->cmds);
|
||||
return (1);
|
||||
}
|
||||
|
||||
void make_cmd(int fd[2][2], t_data data, int fl1, int fl2)
|
||||
void make_cmd(t_data data, int i, int fl1, int fl2)
|
||||
{
|
||||
dup2(fl1, 0);
|
||||
dup2(fl2, 1);
|
||||
close(fd[0][0]);
|
||||
close(fd[0][1]);
|
||||
close(fd[1][0]);
|
||||
close(fd[1][1]);
|
||||
execve(data.cmds[0], data.flgs[0], data.env);
|
||||
close(data.fd[0][0]);
|
||||
close(data.fd[0][1]);
|
||||
close(data.fd[1][0]);
|
||||
close(data.fd[1][1]);
|
||||
execve(data.cmds[i], data.flgs[i], data.env);
|
||||
}
|
||||
|
||||
void cmd(int fd[2][2], t_data data, int i, int t)
|
||||
void cmd(t_data data, int i, int t)
|
||||
{
|
||||
if (t == 0)
|
||||
make_cmd(fd, data, data.fd1, 0);
|
||||
make_cmd(data, 0, data.fd1, data.fd[0][1]);
|
||||
else if (t == 1)
|
||||
make_cmd(fd, data, (i + 1) % 2, i % 2);
|
||||
make_cmd(data, i, data.fd[(i + 1) % 2][0], data.fd[i % 2][1]);
|
||||
else if (t == 2)
|
||||
make_cmd(fd, data, (i + 1) % 2, data.fd2);
|
||||
make_cmd(data, i, data.fd[(i + 1) % 2][0], data.fd2);
|
||||
free_all(&data);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
int pipex(int argc, t_data data)
|
||||
{
|
||||
int fd[2][2];
|
||||
int *fk;
|
||||
int i;
|
||||
|
||||
if (pipe(fd[0]) < -1)
|
||||
if (pipe(data.fd[0]) < -1)
|
||||
return (1);
|
||||
if (pipe(fd[1]) < -1)
|
||||
if (pipe(data.fd[1]) < -1)
|
||||
return (1);
|
||||
fk = ft_calloc(argc - 3, sizeof(int));
|
||||
i = -1;
|
||||
while (++i < argc - 3)
|
||||
{
|
||||
fk[i] = fork();
|
||||
if (fk < 0)
|
||||
if (fk[i] < 0)
|
||||
return (1);
|
||||
if (fk == 0)
|
||||
if (fk[i] == 0)
|
||||
{
|
||||
if (i == 0 && data.fd1 > 0 && data.cmds[0])
|
||||
cmd(fd, data, i, 0);
|
||||
else if (i == argc - 3)
|
||||
cmd(fd, data, i, 1);
|
||||
cmd(data, i, 0);
|
||||
else if (i + 1 < argc - 3)
|
||||
cmd(data, i, 1);
|
||||
else
|
||||
cmd(fd, data, i, 2);
|
||||
cmd(data, i, 2);
|
||||
}
|
||||
}
|
||||
close(fd[0][0]);
|
||||
close(fd[0][1]);
|
||||
close(fd[1][0]);
|
||||
close(fd[1][1]);
|
||||
close(data.fd[0][0]);
|
||||
close(data.fd[0][1]);
|
||||
close(data.fd[1][0]);
|
||||
close(data.fd[1][1]);
|
||||
if (data.fd1 > 0 && data.cmds[0])
|
||||
waitpid(fk[0], NULL, 0);
|
||||
i = -1;
|
||||
while (++i < argc - 3)
|
||||
waitpid(fk[i], NULL, 0);
|
||||
free(fk);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/01/11 15:33:34 by erey-bet #+# #+# */
|
||||
/* Updated: 2023/01/20 17:48:08 by erey-bet ### ########.fr */
|
||||
/* Updated: 2023/01/30 14:03:26 by erey-bet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -28,6 +28,7 @@ typedef struct s_data
|
|||
char *fl2;
|
||||
int fd1;
|
||||
int fd2;
|
||||
int fd[2][2];
|
||||
char **env;
|
||||
int argc;
|
||||
} t_data;
|
||||
|
|
BIN
bonus/pipex.o
Normal file
BIN
bonus/pipex.o
Normal file
Binary file not shown.
|
@ -6,7 +6,7 @@
|
|||
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/01/19 17:03:01 by erey-bet #+# #+# */
|
||||
/* Updated: 2023/01/20 17:49:08 by erey-bet ### ########.fr */
|
||||
/* Updated: 2023/01/30 14:19:02 by erey-bet ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
|
@ -16,7 +16,7 @@ int parsing(int argc, char *argv[], t_data *data)
|
|||
{
|
||||
int i;
|
||||
|
||||
data->fd2 = open(argv[4], O_WRONLY | O_TRUNC | O_CREAT);
|
||||
data->fd2 = open(argv[argc - 1], O_WRONLY | O_TRUNC | O_CREAT);
|
||||
if (data->fd2 < 0)
|
||||
return (1);
|
||||
data->fd1 = open(argv[1], O_RDONLY);
|
||||
|
@ -25,13 +25,13 @@ int parsing(int argc, char *argv[], t_data *data)
|
|||
data->cmds = ft_calloc(argc - 2, sizeof(char *));
|
||||
data->flgs = ft_calloc(argc - 2, sizeof(char *));
|
||||
i = -1;
|
||||
while (++i < argc - 4)
|
||||
while (++i < argc - 3)
|
||||
{
|
||||
data->cmds[i] = get_command(argv[2 + i]);
|
||||
data->flgs[i] = ft_split(argv[2 + i], ' ');
|
||||
}
|
||||
data->fl1 = argv[1];
|
||||
data->fl2 = argv[4];
|
||||
data->fl2 = argv[argc - 1];
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
|
BIN
bonus/pipex_parsing.o
Normal file
BIN
bonus/pipex_parsing.o
Normal file
Binary file not shown.
BIN
bonus/pipex_utils.o
Normal file
BIN
bonus/pipex_utils.o
Normal file
Binary file not shown.
BIN
get_next_line/get_next_line.o
Normal file
BIN
get_next_line/get_next_line.o
Normal file
Binary file not shown.
BIN
get_next_line/get_next_line_utils.o
Normal file
BIN
get_next_line/get_next_line_utils.o
Normal file
Binary file not shown.
22
input
Executable file → Normal file
22
input
Executable file → Normal file
|
@ -1,22 +0,0 @@
|
|||
hello that's why we are here s, your name
|
||||
im not kidding
|
||||
what's your name
|
||||
please can we talk
|
||||
commandes are not wrking, if you want send me in private
|
||||
how can i reach you dud, s
|
||||
pelase give me a wrod that end with a
|
||||
oh do you mean likw palama
|
||||
what !!!
|
||||
palama
|
||||
sorry id don't know what this mean
|
||||
me too i don't know,
|
||||
so way you say it
|
||||
not your bussnis
|
||||
hahahahahah
|
||||
why you ??
|
||||
i wnat it to end with s
|
||||
okay
|
||||
what bout lives
|
||||
emmm thats nice
|
||||
and eyes
|
||||
emmm thats batter
|
BIN
libft/ft_atoi.o
Normal file
BIN
libft/ft_atoi.o
Normal file
Binary file not shown.
BIN
libft/ft_atoi_check.o
Normal file
BIN
libft/ft_atoi_check.o
Normal file
Binary file not shown.
BIN
libft/ft_bzero.o
Normal file
BIN
libft/ft_bzero.o
Normal file
Binary file not shown.
BIN
libft/ft_calloc.o
Normal file
BIN
libft/ft_calloc.o
Normal file
Binary file not shown.
BIN
libft/ft_get_size.o
Normal file
BIN
libft/ft_get_size.o
Normal file
Binary file not shown.
BIN
libft/ft_isalnum.o
Normal file
BIN
libft/ft_isalnum.o
Normal file
Binary file not shown.
BIN
libft/ft_isalpha.o
Normal file
BIN
libft/ft_isalpha.o
Normal file
Binary file not shown.
BIN
libft/ft_isascii.o
Normal file
BIN
libft/ft_isascii.o
Normal file
Binary file not shown.
BIN
libft/ft_isdigit.o
Normal file
BIN
libft/ft_isdigit.o
Normal file
Binary file not shown.
BIN
libft/ft_isprint.o
Normal file
BIN
libft/ft_isprint.o
Normal file
Binary file not shown.
BIN
libft/ft_itoa.o
Normal file
BIN
libft/ft_itoa.o
Normal file
Binary file not shown.
BIN
libft/ft_memchr.o
Normal file
BIN
libft/ft_memchr.o
Normal file
Binary file not shown.
BIN
libft/ft_memcmp.o
Normal file
BIN
libft/ft_memcmp.o
Normal file
Binary file not shown.
BIN
libft/ft_memcpy.o
Normal file
BIN
libft/ft_memcpy.o
Normal file
Binary file not shown.
BIN
libft/ft_memmove.o
Normal file
BIN
libft/ft_memmove.o
Normal file
Binary file not shown.
BIN
libft/ft_memset.o
Normal file
BIN
libft/ft_memset.o
Normal file
Binary file not shown.
BIN
libft/ft_power.o
Normal file
BIN
libft/ft_power.o
Normal file
Binary file not shown.
BIN
libft/ft_putchar_fd.o
Normal file
BIN
libft/ft_putchar_fd.o
Normal file
Binary file not shown.
BIN
libft/ft_putendl_fd.o
Normal file
BIN
libft/ft_putendl_fd.o
Normal file
Binary file not shown.
BIN
libft/ft_putnbr_fd.o
Normal file
BIN
libft/ft_putnbr_fd.o
Normal file
Binary file not shown.
BIN
libft/ft_putstr_fd.o
Normal file
BIN
libft/ft_putstr_fd.o
Normal file
Binary file not shown.
BIN
libft/ft_split.o
Normal file
BIN
libft/ft_split.o
Normal file
Binary file not shown.
BIN
libft/ft_strchr.o
Normal file
BIN
libft/ft_strchr.o
Normal file
Binary file not shown.
BIN
libft/ft_strdup.o
Normal file
BIN
libft/ft_strdup.o
Normal file
Binary file not shown.
BIN
libft/ft_strdup_free.o
Normal file
BIN
libft/ft_strdup_free.o
Normal file
Binary file not shown.
BIN
libft/ft_strdups.o
Normal file
BIN
libft/ft_strdups.o
Normal file
Binary file not shown.
BIN
libft/ft_striteri.o
Normal file
BIN
libft/ft_striteri.o
Normal file
Binary file not shown.
BIN
libft/ft_strjoin.o
Normal file
BIN
libft/ft_strjoin.o
Normal file
Binary file not shown.
BIN
libft/ft_strjoin_free.o
Normal file
BIN
libft/ft_strjoin_free.o
Normal file
Binary file not shown.
BIN
libft/ft_strlcat.o
Normal file
BIN
libft/ft_strlcat.o
Normal file
Binary file not shown.
BIN
libft/ft_strlcpy.o
Normal file
BIN
libft/ft_strlcpy.o
Normal file
Binary file not shown.
BIN
libft/ft_strlen.o
Normal file
BIN
libft/ft_strlen.o
Normal file
Binary file not shown.
BIN
libft/ft_strlen_double.o
Normal file
BIN
libft/ft_strlen_double.o
Normal file
Binary file not shown.
BIN
libft/ft_strmapi.o
Normal file
BIN
libft/ft_strmapi.o
Normal file
Binary file not shown.
BIN
libft/ft_strncmp.o
Normal file
BIN
libft/ft_strncmp.o
Normal file
Binary file not shown.
BIN
libft/ft_strnstr.o
Normal file
BIN
libft/ft_strnstr.o
Normal file
Binary file not shown.
BIN
libft/ft_strrchr.o
Normal file
BIN
libft/ft_strrchr.o
Normal file
Binary file not shown.
BIN
libft/ft_strslen.o
Normal file
BIN
libft/ft_strslen.o
Normal file
Binary file not shown.
BIN
libft/ft_strtrim.o
Normal file
BIN
libft/ft_strtrim.o
Normal file
Binary file not shown.
BIN
libft/ft_substr.o
Normal file
BIN
libft/ft_substr.o
Normal file
Binary file not shown.
BIN
libft/ft_tolower.o
Normal file
BIN
libft/ft_tolower.o
Normal file
Binary file not shown.
BIN
libft/ft_toupper.o
Normal file
BIN
libft/ft_toupper.o
Normal file
Binary file not shown.
BIN
libft/libft.a
Normal file
BIN
libft/libft.a
Normal file
Binary file not shown.
Loading…
Reference in a new issue