int sh_env(t_info *info) { int i; t_info context; sh_context(info, &context); UNSET(context.opt, OPT_A); i = 1; while (env_opt(context.args[i], &context)) i++; if (GET(context.opt, OPT_I)) env_i(&context, i); else if (!context.args[1]) { sh_printenv(&context); return (EXIT_SUCCESS); } else env_set(&context); if (ft_strequ(context.args[0], "cd")) return (EXIT_SUCCESS); else if (context.args[0]) sh_exec(&context); else sh_printenv(&context); sh_clear_context(&context); return (EXIT_SUCCESS); }
void builtin_setenv(char **params) { if (ft_strtable_size(params) == 0) sh_printenv(sgt_sh()->env); else if (ft_strtable_size(params) > 2) ERR("setenv: %s", ERR_TOOMANY); else if (s_check_var(params[0]) == -1) ERR("setenv: %s", ERR_ALNUM); else sh_setenvsep(&sgt_sh()->env, params[0], params[1]); }
int sh_setenv(t_info *info, char **env, char **args) { char name[1024]; if (!args[0]) sh_printenv(info, env, args); else if (args[1] && args[2]) ft_putendl_fd("sh_setenv: Too many arguments.", 2); else if (test_alpha(args[0])) ft_putendl_fd("sh_setenv: Variable name must contain" " alphanumeric characters.", 2); else { ft_bzero(name, 1024); ft_strcpy(name, args[0]); ft_strcat(name, "="); if (args[1]) ft_strcat(name, args[1]); if (ft_replaceenv(name, info->env)) ft_addenv(name, &info->env); } return (EXIT_SUCCESS); }