Beispiel #1
0
// #include <stdio.h>
void			check_cmd(t_env *e)
{
	char		**str;
	int			i;

	//printf("\t\tReceived command\n");
	i = 0;
	//str = ft_split(line);
	// ft_memcpy(e->line, line, _POSIX2_LINE_MAX);
	// e->len = sizeof(line) - 1;
	// launch_interprete(e);
	str = e->argv;
	put_env(e);
	if (str[0] && ft_strcmp(str[0], "setenv") == 0)
	{
		while(str[i])
			i++;
		if (i == 3)
			ft_set(e->list, str[1], str[2]);
		else if(i == 2)
			ft_set(e->list, str[1], "\0");
		else if(i > 3)
			ft_putstr_fd("setenv: Too many arguments.\n", 2);
		else
			print_env(e->env);
	}
	else if (str[0] && ft_strcmp(str[0], "unsetenv") == 0)
	{
		if (str[1])
			ft_unset(e->list, str);
		else
			ft_putstr_fd("unsetenv: Too few arguments.\n", 2);
	}
	else
		check_cmd2(str, e);
							// if (str)
							// 	ft_free_tab(&str);
}
Beispiel #2
0
void	update_env(char **args, t_list **aim, int *i)
{
	int		ret;

	*i = 0;
	while (args[*i] && ((!ft_strcmp("-u", args[*i]))
		|| !ft_strcmp("--unset", args[*i]) || ft_get_char(args[*i], '=') != -1
			|| !ft_strcmp("-i", args[*i])))
	{
		if (args[*i + 1] && (!ft_strcmp("-u", args[*i]) || !ft_strcmp("--unset", args[*i])))
			ft_unset(args[++(*i)], *aim);
		if ((ret = ft_get_char(args[*i], '=')) != -1)
		{
			args[*i][ret] = '\0';
			if (!(*aim))
				new_in_list(ft_ptrf("%s=%s", args[*i],
							args[*i] + ret + 1), aim, &env_node);
			else
				ft_set(args[*i], args[*i] + ret + 1, 1, *aim);
		}
		(*i)++;
	}
}