Beispiel #1
0
int		main( void )
{
	char			buf[BUFF_SIZE];
	extern char 	**environ;
	t_sh1			sh1;
	int				call;
	// void			*sign_f;

	// sign_f = ft_kill_them_all;
	ft_init(&sh1, environ);
	write(1, "> ", 2);
	// signal(SIGINT, sign_f);
	while (42)
	{
		buf[read(0, buf, (BUFF_SIZE + 1))] = '\0';
		call = ft_parser(&sh1, buf);
		if (call == 1)
		{
			// printf("\n");
			// debug_array(sh1.params);
			// printf("\n");
			// printf("%s\n", sh1.command);
			// printf("\n");
			// sleep(50);
			ft_execve(&sh1);
		}
		else
			write(1, "> ", 2);
	}
	return (0);
}
Beispiel #2
0
int				lexer(char *line, char **env)
{
	char	*op;

	if ((op = is_operator(line)))
		return (exec_op(op, line, env));
	ft_execve(env, line);
	return (0);
}
Beispiel #3
0
static void			exec_absolu(char *line, t_list *list)
{
	char	**str;

	str = ft_strsplit(line, ' ');
	if (check_cmd(str[0]))
		ft_execve(str[0], str, list);
	else
		ft_erreur(line, ERR_NO_SUCH_FILE, 0);
	free_char_array(str);
}
Beispiel #4
0
int				ft_read_path(t_pipe *tree, t_data *env, int flag)
{
	int		temp;

	temp = 0;
	if (!tree)
		return (-1);
	if (tree)
	{
		if (tree->code < COM)
			temp = ft_pipecode_path(&tree, env, flag);
		else if (tree->code == COM)
			temp = ft_execve(tree->name, tree->argv, env);
	}
	return (temp);
}
Beispiel #5
0
static int		exec_test(t_env *env, char **pth)
{
	int		ret;

	if (access(*pth, 0))
		return (-1);
	if ((ret = is_directory(*pth)) > 0)
	{
		if (ret == 2)
			return (RESET_PUT("permission denied: ", E_ARG[0]));
		if (ret == 1)
			return (RESET_PUT("argument is a directory: ", E_ARG[0]));
	}
	if (!access(*pth, R_OK) && !access(*pth, X_OK))
		return (ft_execve(env, pth));
	else
		return (RESET_PUT("permission denied: ", E_ARG[0]));
}
Beispiel #6
0
void	ft_execcmd(char *tcmd, char ***env)
{
	pid_t	father;
	char	**cmd;
	int		stat_loc;

	cmd = ft_strsplit(tcmd, ' ');
	if (!ft_builtin(env, cmd))
	{
		father = fork();
		if (!father)
		{
			ft_signal_off();
			ft_execve(cmd, env);
		}
		else
		{
			waitpid(father, &stat_loc, WUNTRACED);
			ft_signal_on();
			ft_single_ret(stat_loc, 1);
		}
	}
	ft_strdel2d(&cmd);
}