#include "minishell.h" int nbr_pipes(t_token *token) { int nb; nb = 0; while (token) { if (token->id == T_PIPE) nb++; token = token->next; } return (nb); } int nbr_argv(t_token *token) { int i; i = 0; while (token && token->id != T_PIPE) { token = token->next; i++; } return (i); } //void handle_argv(t_token **token, t_cmd *cmd) //{ // int argc; // int i; // // argc = nbr_argv(*token); // cmd->argv = calloc(argc + 1, sizeof(char *)); // cmd->argv[argc] = NULL; // i = 0; // while (*token && (*token)->id != T_PIPE) // { // if ((*token)->id == T_WORD) // { // cmd->argv[i] = ft_strdup((*token)->content); // i++; // } // *token = (*token)->next; // } // if (*token && (*token)->id == T_PIPE) // *token = (*token)->next; //} //void handle_fd(t_token *token, t_cmd **cmd) //{ // int *pipes_fd; // // (*cmd)->fd_out = 1; // while (token && token->id != T_PIPE) // { // // T_LESS : '<', // if (token->id == T_LESS) // { // if ((*cmd)->fd_in != 0) // close((*cmd)->fd_in); // (*cmd)->fd_in = open(token->next->content, O_RDONLY | O_CREAT); // token->id = T_TOKEN; // token->next->id = T_TOKEN; // } // // T_GREAT : '>', // if (token->id == T_GREAT) // { // (*cmd)->fd_out = open(token->next->content, O_WRONLY | O_CREAT | O_TRUNC, S_IRWXU); // token->id = T_TOKEN; // token->next->id = T_TOKEN; // } // // T_DGREAT : '>>' // if (token->id == T_DGREAT) // { // (*cmd)->fd_out = open(token->next->content, O_WRONLY | O_CREAT | O_APPEND, S_IRWXU); // token->id = T_TOKEN; // token->next->id = T_TOKEN; // } // // T_DLESS : '<<' (heredoc) // // if (token->id == T_DGREAT) // // { // // cmd->fd_out = open(token->next->content, O_WRONLY | O_TMPFILE | O_APPEND, S_IRWXU); // // token->out = T_TOKEN; // // token->next->id = T_TOKEN; // // } // token = token->next; // } // if (token && token->id == T_PIPE) // { // pipes_fd = calloc(2, sizeof(int)); // pipe(pipes_fd); // if ((*cmd)->fd_out == 1) // (*cmd)->fd_out = pipes_fd[1]; // else // close(pipes_fd[1]); // cmd[1]->fd_in = pipes_fd[0]; // } //} //int handle_builtin(t_token *token, t_cmd *cmd) //{ // (void)token; // (void)cmd; // return (0); //} // //void handle_cmd(char **argv, char **envp) //{ // int i; // char **path; // char *cmd; // // i = 0; // while (envp[i] && ft_strncmp(envp[i], "PATH=", 5)) // i++; // path = ft_split(envp[i] + 5, ':'); // 5 = lentgh of "PATH=" // i = -1; // while (*path && i != 0) // { // cmd = ft_strjoin(path[0], "/"); // cmd = ft_strjoin(cmd, argv[0]); // i = access(cmd, X_OK); // path++; // } // argv[0] = cmd; //} /* t_cmd **fill_cmd(t_token *token, char **envp) { t_cmd **cmd; int pipes; int i; // pipes = nbr_pipes(token); // cmd = ft_calloc(pipes + 2, sizeof(t_cmd*)); // cmd[pipes + 1] = NULL; // i = -1; // while (++i <= pipes) // { // cmd[i] = ft_calloc(1, sizeof(t_cmd)); // ft_bzero(cmd[i], sizeof(t_cmd)); // } i = 0; while (i <= pipes) { handle_fd(token, cmd + i); handle_argv(&token, cmd[i]); if (!handle_builtin(token, cmd[i])) handle_cmd(cmd[i]->argv, envp); i++; } return(cmd); } */