#include "minishell.h" int getenv_position(char **envp, char *name) { int i; i = 0; while (envp[i] && ft_strncmp(envp[i], name, ft_strlen(name))) i++; if (!envp[i]) return (-1); return (i); } int builtin_export(int argc, char *argv[], t_all *c) { char **var; int position; (void)argc; var = ft_split(argv[1], '='); position = getenv_position(c->envp, var[0]); if (position == -1 || !ft_strchr(argv[1], '=')) return (0); c->envp[position] = ft_strjoin(var[0], "="); if (var[1]) // parce que ft_strjoin return NULL si var[1] est null, pourquoi ? c->envp[position] = ft_strjoin(c->envp[position], var[1]); return (0); } /* ** comportement de bash : ** 1. modifier une variable dans bash : ** > ca ne la modifie pas dans zsh ** > ca ne la garde pas apres exit de bash ** 2. ajouter une variable dans bash : ** > ca ne la modifie pas dans zsh ** > ca ne la garde pas apres exit de bash ** 3. ajouter une variable avec erreur : ** > 'export VARIABLE' n'exporte rien ** > 'export VARIABLE=' exporte une variable vide ** 4. ordre d'insertion d'une nouvelle variable : ** ** */