Skip to content

Commit 211a07b

Browse files
author
Miguel Gonzalez Clayton
committed
clean
1 parent 8488dcc commit 211a07b

10 files changed

Lines changed: 118 additions & 91 deletions

File tree

.DS_Store

0 Bytes
Binary file not shown.

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"unistd.h": "c",
44
"pipex.h": "c",
55
"wait.h": "c",
6-
"libft.h": "c"
6+
"libft.h": "c",
7+
"stdio.h": "c"
78
}
89
}

Makefile

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
NAME = pipex
2-
SRC = anything/main.c anything/path.c anything/stuff.c
2+
3+
SRC = source/main.c source/pipex.c source/path.c source/child.c
34

45
OBJ = $(SRC:.c=.o)
56
#-fsanitize=address
@@ -17,10 +18,15 @@ ${NAME}: ${OBJ}
1718
# @gcc $(FLAGS) -c $(SRC)
1819

1920
exe: all
20-
@./$(NAME) file1 "ls" "wc -l" "cat -e" "cat -e" "cat -e" file2
21-
#< file1 ls | wc -l | cat -e > file3
21+
@./$(NAME) file1 "ls" "cat -e" file2
22+
< file1 ls | cat -e > file3
23+
cmp file2 file3
24+
2225
#cmd << LIMITER | cmd1 >> file
23-
exe2:
26+
27+
exe2: all
28+
@./$(NAME) file1 "ls" "wc -l" "cat -e" "cat -e" "cat -e" file2
29+
< file1 ls | wc -l | cat -e | cat -e | cat -e > file3
2430
cmp file2 file3
2531

2632
clean:

file2

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +0,0 @@
1-
7$$$
2-
hola que tal$
3-
estamos bien$
4-
creo$
5-
omg$

file3

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,7 @@
1-
7$
1+
Makefile$
2+
file1$
3+
file2$
4+
file3$
5+
libft$
6+
pipex$
7+
source$
Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
/* ************************************************************************** */
22
/* */
33
/* ::: :::::::: */
4-
/* stuff.c :+: :+: :+: */
4+
/* child.c :+: :+: :+: */
55
/* +:+ +:+ +:+ */
66
/* By: miggonza <miggonza@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2023/09/26 10:37:32 by miggonza #+# #+# */
9-
/* Updated: 2023/11/22 19:28:30 by miggonza ### ########.fr */
9+
/* Updated: 2023/11/23 12:54:19 by miggonza ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

1313
#include "pipex.h"
1414

15-
void ft_read_file(char **argv, char **env, int *fd)
15+
void ft_child_input(char **argv, char **env, int *fd)
1616
{
1717
pid_t f;
1818
int file;
@@ -28,11 +28,11 @@ void ft_read_file(char **argv, char **env, int *fd)
2828
close(fd[0]);
2929
dup2(file, 0);
3030
dup2(fd[1], 1);
31-
ft_split_cmd(argv[2], env);
31+
ft_execve(argv[2], env);
3232
}
3333
}
3434

35-
void ft_write_file(char **argv, char **env, int *fd)
35+
void ft_child_output(char **argv, char **env, int *fd, int argc)
3636
{
3737
pid_t f;
3838
int file;
@@ -42,52 +42,54 @@ void ft_write_file(char **argv, char **env, int *fd)
4242
ft_perror("fork");
4343
if (f == 0)
4444
{
45-
file = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC);
45+
file = open(argv[argc + 1], O_WRONLY | O_CREAT | O_TRUNC);
4646
if (file < 0)
47-
ft_perror(argv[4]);
47+
ft_perror(argv[argc + 1]);
4848
close(fd[1]);
4949
dup2(file, 1);
5050
dup2(fd[0], 0);
51-
ft_split_cmd(argv[3], env);
51+
ft_execve(argv[argc], env);
5252
}
5353
}
5454

55-
void ft_write_file_bonus(char **argv, char **env, int *fd, int argc)
55+
void ft_child_middle(char *argv, char **env, int *fd)
5656
{
5757
pid_t f;
58-
int file;
58+
int save;
5959

60+
save = fd[0];
61+
close(fd[1]);
62+
pipe(fd);
6063
f = fork();
6164
if (f < 0)
6265
ft_perror("fork");
6366
if (f == 0)
6467
{
65-
file = open(argv[argc + 1], O_WRONLY | O_CREAT | O_TRUNC);
66-
if (file < 0)
67-
ft_perror(argv[argc + 1]);
68-
close(fd[1]);
69-
dup2(file, 1);
70-
dup2(fd[0], 0);
71-
ft_split_cmd(argv[argc], env);
68+
close(fd[0]);
69+
dup2(save, 0);
70+
dup2(fd[1], 1);
71+
ft_execve(argv, env);
7272
}
7373
}
7474

75-
void ft_child_middle(char *argv, char **env, int *fd)
75+
/*
76+
void ft_child_output(char **argv, char **env, int *fd)
7677
{
7778
pid_t f;
78-
int save;
79+
int file;
7980
80-
save = fd[0];
81-
close(fd[1]);
82-
pipe(fd);
8381
f = fork();
8482
if (f < 0)
8583
ft_perror("fork");
8684
if (f == 0)
8785
{
88-
close(fd[0]);
89-
dup2(save, 0);
90-
dup2(fd[1], 1);
91-
ft_split_cmd(argv, env);
86+
file = open(argv[4], O_WRONLY | O_CREAT | O_TRUNC);
87+
if (file < 0)
88+
ft_perror(argv[4]);
89+
close(fd[1]);
90+
dup2(file, 1);
91+
dup2(fd[0], 0);
92+
ft_execve(argv[3], env);
9293
}
9394
}
95+
*/

anything/main.c renamed to source/main.c

Lines changed: 4 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: miggonza <miggonza@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2023/09/20 12:32:46 by miggonza #+# #+# */
9-
/* Updated: 2023/11/22 19:28:21 by miggonza ### ########.fr */
9+
/* Updated: 2023/11/23 13:04:48 by miggonza ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -27,57 +27,15 @@ void ft_perror(char *str)
2727
exit(1);
2828
}
2929

30-
void wtf(char **argv, char **env)
31-
{
32-
int fd[2];
33-
int status;
34-
35-
if (pipe(fd) < 0)
36-
ft_print_error("ERRRRROR");
37-
ft_read_file(argv, env, fd);
38-
ft_write_file(argv, env, fd);
39-
close(fd[0]);
40-
close(fd[1]);
41-
waitpid(-1, &status, 0);
42-
waitpid(-1, &status, 0);
43-
}
44-
45-
void wtf_bonus(int argc, char **argv, char **env)
46-
{
47-
int fd[2];
48-
int status;
49-
int num_cmd;
50-
int i;
51-
52-
num_cmd = argc - 3;
53-
if (pipe(fd) < 0)
54-
ft_print_error("ERRRRROR");
55-
i = 3;
56-
ft_read_file(argv, env, fd);
57-
while (i < argc - 2)
58-
{
59-
ft_child_middle(argv[i], env, fd);
60-
i++;
61-
}
62-
ft_write_file_bonus(argv, env, fd, argc - 2);
63-
close(fd[0]);
64-
close(fd[1]);
65-
while (num_cmd >= 0)
66-
{
67-
waitpid(-1, &status, 0);
68-
num_cmd--;
69-
}
70-
}
71-
7230
int main(int argc, char **argv, char **env)
7331
{
7432
ft_find_path(env);
7533
if (argc < 5)
76-
ft_print_error("ERROR NOT ENOUGH COMMANDS\n");
34+
ft_print_error("Error, less than 5 commands");
7735
if (argc == 5)
78-
wtf(argv, env);
36+
ft_pipex(argc, argv, env);
7937
if (argc > 5)
80-
wtf_bonus(argc, argv, env);
38+
ft_pipex_bonus(argc, argv, env);
8139
return (0);
8240
}
8341

anything/path.c renamed to source/path.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,18 @@ int ft_find_path(char **env)
2727
return (i);
2828
}
2929

30-
void ft_split_cmd(char *argv, char **env)
30+
void ft_execve(char *argv, char **env)
3131
{
3232
char **cmd;
3333
char *send;
3434

3535
cmd = ft_split(argv, ' ');
3636
if (!cmd || !cmd[0])
37-
ft_print_error("command not found");
37+
ft_print_error("Error command not found");
3838
send = ft_join_path(cmd[0], env);
3939
if (execve(send, cmd, env) == -1)
40-
ft_print_error("Error command not executable?");
40+
ft_perror("");
41+
//ft_print_error("Error command not executable");
4142
}
4243

4344
char *ft_join_path(char *cmd, char **env)

source/pipex.c

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/* ************************************************************************** */
2+
/* */
3+
/* ::: :::::::: */
4+
/* pipex.c :+: :+: :+: */
5+
/* +:+ +:+ +:+ */
6+
/* By: miggonza <miggonza@student.42.fr> +#+ +:+ +#+ */
7+
/* +#+#+#+#+#+ +#+ */
8+
/* Created: 2023/11/23 10:50:27 by miggonza #+# #+# */
9+
/* Updated: 2023/11/23 12:41:29 by miggonza ### ########.fr */
10+
/* */
11+
/* ************************************************************************** */
12+
13+
#include "pipex.h"
14+
15+
void ft_pipex(int argc, char **argv, char **env)
16+
{
17+
int fd[2];
18+
int status;
19+
20+
if (pipe(fd) < 0)
21+
ft_print_error("Error");
22+
ft_child_input(argv, env, fd);
23+
ft_child_output(argv, env, fd, argc - 2);
24+
close(fd[0]);
25+
close(fd[1]);
26+
waitpid(-1, &status, 0);
27+
waitpid(-1, &status, 0);
28+
}
29+
30+
void ft_pipex_bonus(int argc, char **argv, char **env)
31+
{
32+
int fd[2];
33+
int status;
34+
int num_cmd;
35+
int i;
36+
37+
num_cmd = argc - 3;
38+
if (pipe(fd) < 0)
39+
ft_print_error("Error");
40+
i = 3;
41+
ft_child_input(argv, env, fd);
42+
while (i < argc - 2)
43+
{
44+
ft_child_middle(argv[i], env, fd);
45+
i++;
46+
}
47+
ft_child_output(argv, env, fd, argc - 2);
48+
close(fd[0]);
49+
close(fd[1]);
50+
while (num_cmd >= 0)
51+
{
52+
waitpid(-1, &status, 0);
53+
num_cmd--;
54+
}
55+
}

anything/pipex.h renamed to source/pipex.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
/* By: miggonza <miggonza@student.42.fr> +#+ +:+ +#+ */
77
/* +#+#+#+#+#+ +#+ */
88
/* Created: 2023/09/20 12:33:09 by miggonza #+# #+# */
9-
/* Updated: 2023/11/22 19:21:06 by miggonza ### ########.fr */
9+
/* Updated: 2023/11/23 12:36:33 by miggonza ### ########.fr */
1010
/* */
1111
/* ************************************************************************** */
1212

@@ -24,17 +24,20 @@
2424
//LEFT == 1
2525
//RIGHT == 0
2626

27+
void ft_pipex(int argc, char **argv, char **env);
28+
void ft_pipex_bonus(int argc, char **argv, char **env);
29+
2730
int ft_find_path(char **env);
2831
char *ft_join_path(char *cmd, char **env);
29-
void ft_split_cmd(char *argv, char **env);
32+
void ft_execve(char *argv, char **env);
3033

3134
void ft_print_error(char *str);
3235
void ft_perror(char *str);
3336

34-
void ft_read_file(char **argv, char **env, int *fd);
35-
void ft_write_file(char **argv, char **env, int *fd);
37+
void ft_child_input(char **argv, char **env, int *fd);
38+
//void ft_child_output(char **argv, char **env, int *fd);
3639

37-
void ft_write_file_bonus(char **argv, char **env, int *fd, int argc);
40+
void ft_child_output(char **argv, char **env, int *fd, int argc);
3841
void ft_child_middle(char *argv, char **env, int *fd);
3942

4043
#endif

0 commit comments

Comments
 (0)