Ejemplo n.º 1
0
int		exec_builtin(t_group *grp, char *order)
{
	int		active;

	active = 0;
	order = ft_strtrim(order);
	if (ft_strcmp(grp->cmd[0], "env") == 0)
	{
		active++;
		if (manage_opt(grp) < 0)
			return (active);
		(grp->options->on[u] == true ||
			(grp->define_cmd[namenv] > 0 && grp->define_cmd[utils] == false) ||
			grp->cmd[1] == NULL) ? exec_env(grp, 1) : exec_env(grp, 0);
	}
	else if (ft_strcmp(grp->cmd[0], "cd") == 0)
		(active += 1) ? manage_cd(grp) : 0;
	else if (ft_strcmp(grp->cmd[0], "setenv") == 0)
		(active += 1) ? ft_setenv(grp) : 0;
	else if (ft_strcmp(grp->cmd[0], "unsetenv") == 0)
		(active += 1) ? ft_unsetenv(grp) : 0;
	else if (ft_strcmp(grp->cmd[0], "exit") == 0)
		grp->cmd[1] ? exit(ft_atoi(grp->cmd[1])) : exit(0);
	return (active);
}
Ejemplo n.º 2
0
Archivo: env.c Proyecto: Zethir/42sh
static int	deal_with_arg(t_shell *sh, char **arg, char **env_cpy)
{
	char	**res;
	char	*cmd;

	res = NULL;
	if (cmp_line(arg, env_cpy) == 0)
	{
		if (check_caract(*arg, '=') < 0)
			return (print_wrong_identifier_env(*arg));
		else if (check_caract(*arg, '=') != 1)
		{
			cmd = join_tab(arg);
			exec_env(sh, cmd, env_cpy);
			free(cmd);
			return (sh->return_val);
		}
		else if (check_caract(*arg, '=') == 1)
		{
			res = add_elem(env_cpy, *arg);
			ft_print_tab(res);
			ft_free_tab(res);
			return (0);
		}
	}
	ft_print_tab(env_cpy);
	return (0);
}
Ejemplo n.º 3
0
static int	check_i_opt(t_shell *sh, char **arg, char **env_cpy)
{
	char	*cmd;
	char	**tab_cpy;

	if (arg[0][0] == '-' && arg[0][1] == 'i' && !arg[0][2] && arg[1])
	{
		arg++;
		cmd = join_tab(arg);
		tab_cpy = ft_tabdup(env_cpy);
		ft_free_tab(tab_cpy);
		tab_cpy = NULL;
		exec_env(sh, cmd, tab_cpy);
		free(cmd);
		return (0);
	}
	else
		return (1);
}
Ejemplo n.º 4
0
static int	check_u_opt(t_shell *sh, char **arg, char **env_cpy)
{
	char	*cmd;

	if (arg[0][0] == '-' && arg[0][1] == 'u' && !arg[0][2] && arg[1])
	{
		arg++;
		if (check_arg(env_cpy, *arg) == 0)
			return (print_error_opt(*arg));
		arg++;
		if (*arg)
		{
			cmd = join_tab(arg);
			exec_env(sh, cmd, env_cpy);
			free(cmd);
			return (sh->return_val);
		}
		else
			ft_print_tab(env_cpy);
		return (0);
	}
	else
		return (1);
}