mirror of
https://github.com/KeyZox71/ft_minipowershell.git
synced 2025-03-15 03:16:51 +01:00
「🏗️」 wip: Working but not entirely
This commit is contained in:
@ -6,7 +6,7 @@
|
|||||||
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
|
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/04/25 12:20:26 by adjoly #+# #+# */
|
/* Created: 2024/04/25 12:20:26 by adjoly #+# #+# */
|
||||||
/* Updated: 2024/07/29 19:24:08 by adjoly ### ########.fr */
|
/* Updated: 2024/08/02 17:17:39 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -37,6 +37,14 @@
|
|||||||
obj:/usr/bin/clear
|
obj:/usr/bin/clear
|
||||||
fun:(below main)
|
fun:(below main)
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
</bin/clear>
|
||||||
|
Memcheck:Leak
|
||||||
|
match-leak-kinds: reachable
|
||||||
|
...
|
||||||
|
obj:/nix/store/znz0yrnzmfz6can2kng3anp5gkjrwf0y-ncurses-6.4/bin/clear
|
||||||
|
fun:(below main)
|
||||||
|
}
|
||||||
{
|
{
|
||||||
</bin/cat>
|
</bin/cat>
|
||||||
Memcheck:Leak
|
Memcheck:Leak
|
||||||
@ -51,3 +59,11 @@
|
|||||||
obj:/usr/bin/ls
|
obj:/usr/bin/ls
|
||||||
fun:(below main)
|
fun:(below main)
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
</bin/ls>
|
||||||
|
Memcheck:Leak
|
||||||
|
...
|
||||||
|
obj:/nix/store/204ak4443zipfr2yi6y5wal05bck1qqg-coreutils-9.3/bin/coreutils
|
||||||
|
fun:(below main)
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
|
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/05/20 09:19:39 by mmoussou #+# #+# */
|
/* Created: 2024/05/20 09:19:39 by mmoussou #+# #+# */
|
||||||
/* Updated: 2024/08/01 17:51:13 by adjoly ### ########.fr */
|
/* Updated: 2024/08/04 16:57:45 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
|
/* By: mmoussou <mmoussou@student.42angouleme.fr +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/04/24 11:18:04 by adjoly #+# #+# */
|
/* Created: 2024/04/24 11:18:04 by adjoly #+# #+# */
|
||||||
/* Updated: 2024/07/21 17:47:45 by adjoly ### ########.fr */
|
/* Updated: 2024/08/04 12:43:53 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/05/30 10:48:41 by adjoly #+# #+# */
|
/* Created: 2024/05/30 10:48:41 by adjoly #+# #+# */
|
||||||
/* Updated: 2024/07/30 19:03:54 by adjoly ### ########.fr */
|
/* Updated: 2024/08/03 18:43:13 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -24,6 +24,20 @@ void parsing_msg(t_cmd *cmd)
|
|||||||
send_error_parsing(ERROR_NO_FILE);
|
send_error_parsing(ERROR_NO_FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
t_cmd *init_cmd(void)
|
||||||
|
{
|
||||||
|
t_cmd *cmd;
|
||||||
|
|
||||||
|
cmd = ft_calloc(sizeof(t_cmd), 1);
|
||||||
|
if (!cmd)
|
||||||
|
return (NULL);
|
||||||
|
cmd->infile = -2;
|
||||||
|
cmd->outfile = -2;
|
||||||
|
cmd->argv = NULL;
|
||||||
|
cmd->cmd = NULL;
|
||||||
|
return (cmd);
|
||||||
|
}
|
||||||
|
|
||||||
t_cmd *get_redir_fd(void *content, t_list *tmp)
|
t_cmd *get_redir_fd(void *content, t_list *tmp)
|
||||||
{
|
{
|
||||||
t_redir_sign sign[2];
|
t_redir_sign sign[2];
|
||||||
@ -31,7 +45,7 @@ t_cmd *get_redir_fd(void *content, t_list *tmp)
|
|||||||
|
|
||||||
sign[0] = INFILE;
|
sign[0] = INFILE;
|
||||||
sign[1] = OUTFILE;
|
sign[1] = OUTFILE;
|
||||||
cmd = ft_calloc(sizeof(t_cmd), 1);
|
cmd = init_cmd();
|
||||||
if (!cmd)
|
if (!cmd)
|
||||||
return (NULL);
|
return (NULL);
|
||||||
while (tmp)
|
while (tmp)
|
||||||
@ -45,9 +59,9 @@ t_cmd *get_redir_fd(void *content, t_list *tmp)
|
|||||||
}
|
}
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
}
|
}
|
||||||
if (sign[0] == INFILE)
|
if (sign[0] == INFILE || cmd->outfile == -1)
|
||||||
cmd->outfile = STDOUT_FILENO;
|
cmd->outfile = STDOUT_FILENO;
|
||||||
if (sign[1] == OUTFILE)
|
if (sign[1] == OUTFILE || cmd->infile == -1)
|
||||||
cmd->infile = STDIN_FILENO;
|
cmd->infile = STDIN_FILENO;
|
||||||
cmd = split_cmd(((t_token *)content)->argv, cmd);
|
cmd = split_cmd(((t_token *)content)->argv, cmd);
|
||||||
return (cmd);
|
return (cmd);
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/06/30 15:56:53 by adjoly #+# #+# */
|
/* Created: 2024/06/30 15:56:53 by adjoly #+# #+# */
|
||||||
/* Updated: 2024/07/14 17:32:34 by adjoly ### ########.fr */
|
/* Updated: 2024/08/03 18:44:03 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -18,9 +18,9 @@
|
|||||||
|
|
||||||
t_redir_sign __close_unused_fd(t_cmd *cmd, t_redir_sign sign)
|
t_redir_sign __close_unused_fd(t_cmd *cmd, t_redir_sign sign)
|
||||||
{
|
{
|
||||||
if (cmd->outfile != 0 && sign >= 2)
|
if (cmd->outfile > 1 && sign >= 2)
|
||||||
close(cmd->outfile);
|
close(cmd->outfile);
|
||||||
else if (cmd->infile != 0 && sign < 2)
|
else if (cmd->infile > 1 && sign < 2)
|
||||||
close(cmd->infile);
|
close(cmd->infile);
|
||||||
return (sign);
|
return (sign);
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/05/25 15:06:15 by adjoly #+# #+# */
|
/* Created: 2024/05/25 15:06:15 by adjoly #+# #+# */
|
||||||
/* Updated: 2024/07/30 19:08:20 by adjoly ### ########.fr */
|
/* Updated: 2024/08/04 12:53:17 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -23,6 +23,8 @@ char *__redir_filename_cpy(char *redir_s)
|
|||||||
char *tmp;
|
char *tmp;
|
||||||
|
|
||||||
tmp = ft_calloc(__get_len_arg(redir_s) + 1, sizeof(char));
|
tmp = ft_calloc(__get_len_arg(redir_s) + 1, sizeof(char));
|
||||||
|
if (!tmp)
|
||||||
|
return (NULL);
|
||||||
__cpy_arg(tmp, redir_s);
|
__cpy_arg(tmp, redir_s);
|
||||||
tmp = format_quotes_string(tmp);
|
tmp = format_quotes_string(tmp);
|
||||||
return (tmp);
|
return (tmp);
|
||||||
@ -33,6 +35,8 @@ t_redirection *__to_redir(char *redir_s)
|
|||||||
t_redirection *redir;
|
t_redirection *redir;
|
||||||
|
|
||||||
redir = ft_calloc(sizeof(t_redirection), 1);
|
redir = ft_calloc(sizeof(t_redirection), 1);
|
||||||
|
if (!redir)
|
||||||
|
return (NULL);
|
||||||
redir->sign = __to_redir_sign(redir_s);
|
redir->sign = __to_redir_sign(redir_s);
|
||||||
redir->file_name = NULL;
|
redir->file_name = NULL;
|
||||||
if (redir->sign == OUT_APPEND || redir->sign == HEREDOC)
|
if (redir->sign == OUT_APPEND || redir->sign == HEREDOC)
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/05/20 21:05:04 by adjoly #+# #+# */
|
/* Created: 2024/05/20 21:05:04 by adjoly #+# #+# */
|
||||||
/* Updated: 2024/07/30 19:07:22 by adjoly ### ########.fr */
|
/* Updated: 2024/08/04 12:52:25 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -17,6 +17,17 @@
|
|||||||
|
|
||||||
size_t __get_len_arg(char *s);
|
size_t __get_len_arg(char *s);
|
||||||
|
|
||||||
|
bool check_argvcontent(char *argv)
|
||||||
|
{
|
||||||
|
if (!argv)
|
||||||
|
return (false);
|
||||||
|
while (*argv && ft_isspace(*argv))
|
||||||
|
argv++;
|
||||||
|
if (!*argv)
|
||||||
|
return (true);
|
||||||
|
return (false);
|
||||||
|
}
|
||||||
|
|
||||||
size_t __get_sizeof_redir(char *redir_s, t_redirection *redir)
|
size_t __get_sizeof_redir(char *redir_s, t_redirection *redir)
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
@ -57,7 +68,13 @@ t_token *__to_token(char *cmd)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
token->argv = ft_strjoin_free(token->argv, ft_substr(tmp, 0, 1));
|
token->argv = ft_strjoin_free(token->argv, ft_substr(tmp, 0, 1));
|
||||||
|
if (check_argvcontent(token->argv))
|
||||||
|
{
|
||||||
|
free(token->argv);
|
||||||
|
token->argv = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp++;
|
tmp++;
|
||||||
}
|
}
|
||||||
return (token);
|
return (token);
|
||||||
|
@ -6,12 +6,13 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/05/18 20:13:50 by adjoly #+# #+# */
|
/* Created: 2024/05/18 20:13:50 by adjoly #+# #+# */
|
||||||
/* Updated: 2024/06/30 13:12:38 by adjoly ### ########.fr */
|
/* Updated: 2024/08/04 16:16:59 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#include "tokenizer.h"
|
#include "tokenizer.h"
|
||||||
#include "parsing.h"
|
#include "parsing.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
t_list *tokenizer(char *readline)
|
t_list *tokenizer(char *readline)
|
||||||
{
|
{
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
/* By: adjoly <adjoly@student.42angouleme.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2024/07/04 20:10:35 by adjoly #+# #+# */
|
/* Created: 2024/07/04 20:10:35 by adjoly #+# #+# */
|
||||||
/* Updated: 2024/08/01 19:15:44 by adjoly ### ########.fr */
|
/* Updated: 2024/08/04 16:58:07 by adjoly ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@ -42,9 +42,9 @@ void free_cmd(void *content)
|
|||||||
cmd = (t_cmd *)content;
|
cmd = (t_cmd *)content;
|
||||||
if (!cmd)
|
if (!cmd)
|
||||||
return ;
|
return ;
|
||||||
if (cmd->infile != STDIN_FILENO && cmd->infile != -1)
|
if (cmd->infile > 1)
|
||||||
close(cmd->infile);
|
close(cmd->infile);
|
||||||
if (cmd->outfile != STDOUT_FILENO && cmd->outfile != -1)
|
if (cmd->outfile > 1)
|
||||||
close(cmd->outfile);
|
close(cmd->outfile);
|
||||||
if (cmd->cmd)
|
if (cmd->cmd)
|
||||||
free(cmd->cmd);
|
free(cmd->cmd);
|
||||||
|
Reference in New Issue
Block a user