Exemplo n.º 1
0
void ft_exe(char **arg, char **env)
{
	t_exe	exe;

	exe.i = 0;
	exe.test = 1;
	exe.test = fork();
	exe.tab = set_tab(env);
	if (exe.test > 0)
		wait(&exe.w);
	if (exe.test == 0)
	{
		execve(arg[0], arg, env);
		if (ft_findbuiltin(arg) < 0)
		{
			while (exe.tab[exe.i])
			{
				exe.tmp = get_path(arg[0], exe.tab[exe.i]);
				execve(exe.tmp, arg, env);
				exe.i++;
			}
			ft_putstr("Error: Command not found\n");
		}
		exit(0);
	}
}
Exemplo n.º 2
0
static void	ft_checkcmd(char *cmdline, t_conf *config)
{
	char		**cmdline_split;
	static void	(*tabf[5])(t_conf *, char **) = {&ft_cd, &ft_exit,
		&ft_unsetenv, &ft_env, &ft_setenv};
	int			builtin;
	t_bin		*cmd;

	cmd = NULL;
	if (!cmdline || !*cmdline || !(cmdline_split = ft_strsplit(cmdline, ' ')))
		return ;
	if ((builtin = ft_findbuiltin(*cmdline_split)) != -1)
		(tabf[builtin])(config, cmdline_split);
	else if (*cmdline_split[0] == '/' ||
			*cmdline_split[0] == '.' ||
			(cmd = ft_findcmd(*cmdline_split, ft_hashsearch(config,
															*cmdline_split))))
		ft_execcmd(cmd, cmdline_split, config);
	else
		ft_error(*cmdline_split, CMD_NOTFOUND, KEEP);
	ft_free_split(cmdline_split);
	free(cmdline_split);
}