#include "pipex.h" char *read_file(int fd) { char *str; int len; int old_len; str = get_next_line(fd); len = ft_strlen(str); old_len = 0; while (len != old_len) { old_len = len; str = ft_strjoin_free(str, get_next_line(fd), 2); len = ft_strlen(str); } str[len] = '\0'; return (str); } int get_next(char *cmd, char c) { int i; i = 0; while (cmd[i] != c) i++; return (i); } char *get_flags(char *cmd) { int i; int y; char *new_str; i = get_next(cmd, ' '); new_str = ft_calloc(ft_strlen(cmd) - i + 1); y = i; while (cmd[i]) new_str[y++] = cmd[i++]; new_str[y] = '\0'; return (new_str); } char *get_command(char *cmd) { int i; char *new_str; new_str = ft_calloc(get_next(cmd, ' ') + 1); i = -1; while (cmd[++i] != ' ') new_str[i] = cmd[i]; new_str[i] = '\0'; return (new_str); } int parsing(char *argv[], t_data *data) { int fd1; int fd2; fd2 = open(argv[4], O_WRONLY | O_TRUNC | O_CREAT); if (fd2 < 0) return (-1); fd1 = open(argv[1], O_RDONLY); if (fd1 < 0) { close(fd2); return (-1); } data->cmd1 = get_command(argv[2]); data->cmd2 = get_command(argv[3]); data->flg1 = get_flags(argv[2]); data->flg2 = get_flags(argv[3]); data->fl1 = argv[1]; data->fl2 = argv[4]; data->ct_fl1 = read_file(fd1); close(fd1); return (0); } int find_command(char **env) { char *s; while (*env != NULL) { if (ft_strnstr(*env, "PATH=/", ft_strlen(*env))) s = *env; env++; } } int first_cmd(int fd[2], t_data data) { close(fd[0]); execve(data->cmd1) } int second_cmd(int fd[2], t_data data) { } int pipex(t_data data) { int fd[2] int id; if (pipe(fd) < -1) return (1); id = fork(); if (id == 0) 1_cmd(fd, data); else 2_cmd(fd, data); } #include int main(int argc, char *argv[], char **env) { //t_data data; (void)argc; (void)argv; /*if (argc < 5) return (1); if (parsing(argv, &data)) return (2); find_command(env); if (pipex(data)) return (3); free(data.fl1);*/ return (0); }