Esempio n. 1
0
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);
}
Esempio n. 2
0
File: setenv.c Progetto: w0dm4n/42sh
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]);
}
Esempio n. 3
0
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);
}