You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

95 lines
2.3 KiB

/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* minishell.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: narnaud <narnaud@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/05/02 13:50:44 by narnaud #+# #+# */
/* Updated: 2022/05/02 16:45:28 by narnaud ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef MINISHELL_H
# define MINISHELL_H
# define PIPE_MAX_SIZE 8192
# define PATHS_MAX_SIZE 126
# define PROMPT_PREFIX 0
# include "libft/libft.h"
# include <fcntl.h>
# include <stdio.h>
# include <stdlib.h>
# include <readline/readline.h>
# include <readline/history.h>
# include <sys/types.h>
# include <sys/wait.h>
# include <signal.h>
# include <unistd.h>
# include <dirent.h>
# include <errno.h>
# include <termios.h>
char **g_env;
// ----------------------------------Piper.c
typedef struct s_command
{
char **argv;
char **envp;
int argc;
int fd[2];
char *heredoc;
struct s_command *next;
struct s_command *prev;
} t_command;
// ----------------------------------Parser.c
typedef struct s_token
{
char *value;
t_type type;
struct s_token *next;
} t_token;
size_t count_arguments(t_token tok);
void update_redir(t_command *cmd, t_token tok);
// ----------------------------------Lexer.c
typedef enum e_state
{
OLD_ST,
ROOT_ST,
S_QUOTE_ST,
D_QUOTE_ST,
} t_state;
typedef enum e_type
{
WORD,
PIPE,
OUT,
ADD,
IN,
HD,
} t_type;
typedef struct s_lex
{
t_state state;
t_type type;
t_type next_type;
t_token *tokens;
int n_elem;
} t_lexer;
int create_token(t_lexer *lex, char str[]);
int check_register(t_lexer *lex, char **line, char *tmp);
int replace_var(char **line, char *tmp, int tmp_i);
int check_state(t_lexer *lex, char *line, int i);
#endif