Closed melobern closed 6 months ago
Après changement du code (voir branche builtins), echo ne redirige pas vers le fichier et print dans l'entrée standard. Fix à venir : appeler exec builtin directement dans exec et pas dans le main.
>>> Minishell>$ echo ouaf > dog
ouaf
>>> Minishell>$ cat dog
cat: dog: No such file or directory
Fonction + main + exec changés. Par contre, il faut que je vois comment les commandes de la process list sont qualifiés en builtin.
>>> Minishell>$ echo miaou > cat
>>> Minishell>$ cat cat
miaou
>>> Minishell>$ echo ouaf > cat
>>> Minishell>$ cat cat
ouaf
>>> Minishell>$ echo miaou > cat
>>> Minishell>$ cat cat
miaou
Echo ne echo pas si on met un infile : dans bash, il echo meme s'il y a un infile.
mbernard@z3r8p3:~/sgoinfre/42_minishell.c$ < Makefile echo
mbernard@z3r8p3:~/sgoinfre/42_minishell.c$ < Makefile echo prout
prout
>>> Minishell>$ < Makefile echo
>>> Minishell>$ < Makefile echo prout
Commande modifiée : le paramètre utilisé n'est plus la liste de tokens mais la cmd_table
, qui fonctionne beaucoup mieux puisqu'elle ne contient QUE ses arguments.
Les builtins devraient prendre cmd_table
comme paramètre plutôt que la liste de tokens, à l'instar des commandes originelles.
int ft_echo(char **cmd_table)
{
bool flag;
size_t i;
i = 1;
flag = 0;
while (cmd_table[i] && check_n_arg(cmd_table[i]))
{
flag = 1;
i++;
}
while (cmd_table[i])
{
if (printf("%s", cmd_table[i]) == -1)
return (EXIT_FAILURE);
i++;
if (cmd_table[i] && printf(" ") == -1)
return (EXIT_FAILURE);
}
if (flag == 0 && printf("\n") == -1)
return (EXIT_FAILURE);
return (EXIT_SUCCESS);
}
La fonction fonctionne très bien ainsi.
MINISHELL
BASH