/* ************************************************************************** */ /* */ /* :::::::: */ /* builtin_export.c :+: :+: */ /* +:+ */ /* By: whaffman +#+ */ /* +#+ */ /* Created: 2025/02/20 11:32:53 by whaffman #+# #+# */ /* Updated: 2025/03/04 16:41:06 by whaffman ######## odam.nl */ /* */ /* ************************************************************************** */ #include "minishell.h" static int ft_isvalid_identifier(char *str) { if (ft_isalpha(*str) == FALSE && *str != '_') return (FALSE); while (*str != '\0') { if (ft_isalnum(*str) == FALSE && *str != '_') return (FALSE); str++; } return (TRUE); } int builtin_export(t_minishell *msh, t_command *cmd) { char *err; char **arr; int i; i = 0; arr = NULL; if (cmd->args[1] == NULL) environment_print(msh, TRUE); while (cmd->args[++i] != NULL) { arr = ft_split_safe(msh, cmd->args[i], '='); if (arr != NULL && arr[0] != NULL && ft_isvalid_identifier(arr[0]) == TRUE) environment_update(msh, arr[0], arr[1]); else { err = ft_strjoin_safe(msh, cmd->args[1], ": not a valid identifier"); error_msg("export", err); return (ft_free_arr_safe(msh, arr), EXIT_FAILURE); } ft_free_arr_safe(msh, arr); } return (EXIT_SUCCESS); }