예제 #1
0
int	main(void)
{
	char	*ptr;
	char	*name;
	char	**arg;

	while (1)
	{
		write(1, "$>", 2);
		get_next_line(0, &ptr);
		if (ft_strcmp(ptr, "exit") == 0)
			return (0);
		arg = ft_get_args(&ptr, &name);
		if (!ft_check_builtin(arg))
		{
			if (!ft_run_cmd(name, arg))
			{
				ft_putstr_fd(name, 2);
				ft_putendl_fd(": command not found", 2);
			}
		}
		free(name);
		ft_free(arg);
	}
	return (0);
}
예제 #2
0
int				ft_traitement(char *str)
{
	int		i;
	char	*path;
	char	**parsed;

	str = ft_formatting(str);
	i = ft_opera_handler(str);
	if (i >= 0)
	{
		ft_strdel(&str);
		return (i);
	}
	if (!(parsed = parse_command(str)))
	{
		ft_strdel(&str);
		return (-1);
	}
	i = ft_check_builtin(parsed);
	path = get_val("PATH");
	if (i >= 0)
		g_status = g_listefonctions[i](parsed);
	else if (!ft_check_exe(parsed, path))
		return (ft_not_found(&parsed, &str));
	ft_arrfree(&parsed);
	ft_strdel(&str);
	return (1);
}
예제 #3
0
파일: l_path.c 프로젝트: SleepyFanjo/42sh
int					ft_checkpath(char *s, t_list **begin, t_param *param)
{
	char			*path;
	char			**tmp;
	int				i;

	i = 0;
	ft_check_builtin(s, begin);
	if ((path = get_env(g_env, "PATH")) == NULL)
		return (0);
	tmp = ft_strsplit(path, ':');
	ft_process(tmp, s, i, begin);
	ft_clear(tmp);
	if (*begin != NULL)
		del_word(s, param, &STR);
	return (0);
}