Commit df45bf93 authored by abenoit's avatar abenoit
Browse files

Merge branch 'master' of https://framagit.org/abenoit/minishell

parents 279acb80 ebfb9b47
......@@ -60,13 +60,13 @@ enum e_retcode
WRITE_ERR,
GNL_ERR,
INVALID_CD_PATH,
INVALID_PWD_PATH,
_EXEC_ERROR_,
AMBIG_REDIR,
HOME_NOT_SET,
NO_SUCH_FILE,
INVALID_EXP_ID,
INVALID_UNS_ID,
INVALID_PWD_PATH,
EXIT_ARG_ERR,
_PARSING_ERROR_,
SQUOTE_MISSING,
......@@ -92,7 +92,8 @@ typedef struct s_command
char **redir_paths;
enum e_redir_op *redir_types;
t_byte pipe_flag;
uint8_t pad[7];
t_byte var_flag;
uint8_t pad[6];
} t_command;
typedef struct s_xe
......
......@@ -44,9 +44,10 @@ typedef struct s_state_machine
enum e_state state;
int stat_loc;
t_byte pipe_flag;
t_byte var_flag;
t_byte var_state;
t_byte quote_state;
uint8_t pad[5];
uint8_t pad[4];
} t_state_machine;
typedef char *(*t_parse)(t_state_machine *, char *);
......
......@@ -11,12 +11,6 @@ et CTRL-\ ne fait rien sans commande en boucle inf
===========================??? oui on peut pas delete l'input en cours, et ensuite si on fait CTRL-C on peut plus refaire tout de suite CTRL-D, et y'a des leaks
CTRL-D apres avoir ecrit un debut de cmd
==========================A regler dans le parsing ?
$unknown_var ; ls ; ls (premiere commande vide mais il fait quand meme ls)
=======================Resolu: ah?
create file when redirecting output without doing anything ("> a")
====================Strerror added
error when redir_in file does not exist ("< unknown_file")
-> tests:
......@@ -27,7 +21,7 @@ ls < e
====================Strerror added
error when redir_out file does not have write permission
memes tests que pour redir_in ci-dessus, en remplacant < par >
-> memes tests que pour redir_in ci-dessus, en remplacant < par >
"cat | exit"======>ne devrait pas exit
......@@ -48,17 +42,19 @@ erreurs de write et de ft_put* a terminer
gestion d'erreurs des fonctions autorisees une a une
builtins: set stat_loc?
mkdir ok; cd ok; rmdir ../ok; pwd
cd: leaks in getcwd
mkdir ok ; cd ok ; rmdir ../ok ; cd ..
mkdir ok ; cd ok ; rmdir ../ok ; cd ..
====> segfault a corriger
references pour gestion des signaux : https://indradhanush.github.io/blog/writing-a-unix-shell-part-3/
trop bizarre la len d'un token ne peut pas etre superieure a 4095 sur linux
......
......@@ -132,7 +132,7 @@ int handle_execution(t_xe *xe, int fd_in, int proc)
return (handle_execution(xe, fd_in, proc));
}
}
if (cur_command->args != NULL)
if (cur_command->args != NULL || cur_command->var_flag == TRUE)
{
return (handle_command(cur_command, xe, fd_in, proc));
}
......
......@@ -30,7 +30,7 @@ int exec_error(int err_code, t_xe *xe)
"No such file or directory",
"export: Variable identifier (name) invalid",
"unset: Variable identifier (name) invalid",
"pwd : erreur de détermination du répertoire actuel : getcwd : ne peut accéder aux répertoires parents : Aucun fichier ou dossier de ce type",
//"pwd : erreur de détermination du répertoire actuel : getcwd : ne peut accéder aux répertoires parents : Aucun fichier ou dossier de ce type",
"exit: too many arguments"};
......@@ -53,7 +53,8 @@ static int err_output(int err_code)
"Memory allocation failure",
"Cannot write on standard output",
"Cannot read standard input (GNL error)",
"cd"};
"cd",
"pwd"};
ft_putstr_fd("error: ", STDERR_FILENO);
ft_putstr_fd(err_msg[err_code - _ERRNO_MSG_ -1], STDERR_FILENO);
......
......@@ -6,7 +6,7 @@
/* By: mvidal-a <mvidal-a@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/02/01 11:25:06 by mvidal-a #+# #+# */
/* Updated: 2021/02/02 13:26:26 by mvidal-a ### ########.fr */
/* Updated: 2021/02/02 14:21:54 by mvidal-a ### ########.fr */
/* */
/* ************************************************************************** */
......@@ -32,6 +32,7 @@ int parse_input(char **line, char **env, int stat_loc,
}
free(machine.cur_arg);
command->pipe_flag = machine.pipe_flag;
command->var_flag = machine.var_flag;
command->redir_paths = machine.redir_paths;
command->redir_types = machine.redir_types;
command->args = machine.args;
......
......@@ -6,7 +6,7 @@
/* By: mvidal-a <mvidal-a@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/01/27 12:14:56 by mvidal-a #+# #+# */
/* Updated: 2021/02/01 11:24:26 by mvidal-a ### ########.fr */
/* Updated: 2021/02/02 14:21:26 by mvidal-a ### ########.fr */
/* */
/* ************************************************************************** */
......@@ -61,6 +61,7 @@ char *parse_variable(t_state_machine *machine, char *line)
free(var_value);
line += var_name_len;
machine->var_state = TRUE;
machine->var_flag = TRUE;
return (line);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment