/* ************************************************************************** */
/*                                                                            */
/*                                                        :::      ::::::::   */
/*   minishell_structs.h                                :+:      :+:    :+:   */
/*                                                    +:+ +:+         +:+     */
/*   By: lperrey <lperrey@student.42.fr>            +#+  +:+       +#+        */
/*                                                +#+#+#+#+#+   +#+           */
/*   Created: 2021/10/08 02:35:52 by lperrey           #+#    #+#             */
/*   Updated: 2021/11/29 12:25:34 by lperrey          ###   ########.fr       */
/*                                                                            */
/* ************************************************************************** */

#ifndef MINISHELL_STRUCTS_H
# define MINISHELL_STRUCTS_H

struct	s_all;

typedef struct s_token
{
	char			*content;
	struct s_token	*next;
	enum e_token_id	id;
}				t_token;

typedef int		(*t_builtin_f)(int,char **,struct s_all *);

typedef struct s_cmd
{
	char		**argv;
	char		*path;
	t_builtin_f	builtin_func;
	int			fd_in;
	int			fd_out;
	pid_t		pid;
	int			error;
}				t_cmd;

typedef struct s_all
{
	t_cmd				**pipeline;
	char				**path;
	char				*prompt_base;
	char				*prompt;
	t_token				*token_list;
//	struct termios		ori_termios;
//	struct termios		interactive_termios;
//	int					termios_changed;
//	struct sigaction	ori_signal_behaviour;
	struct sigaction	signal_behaviour;
}				t_all;

#endif
