fix some things
This commit is contained in:
parent
cbd9442469
commit
1ec3636d5d
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/03/09 22:33:49 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/22 11:43:15 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/22 13:01:36 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -37,7 +37,6 @@ typedef struct s_simple {
|
||||
struct s_command *big_cmd;
|
||||
int fd[2];
|
||||
int pipe[2];
|
||||
int last;
|
||||
int last_pipe[2];
|
||||
int child;
|
||||
int nb_args;
|
||||
@ -123,7 +122,9 @@ char *ft_input(char *line, t_s_cmd *cmd, int index);
|
||||
char *ft_output(char *line, t_s_cmd *cmd, int index);
|
||||
|
||||
//set_var.c
|
||||
char *get_var(t_cmd *cmd, char *var_name);
|
||||
char *set_var(t_cmd *big_cmd, char *cmd);
|
||||
char *find_var(t_cmd *big_cmd, char *cmd, int i, int *index);
|
||||
|
||||
//set_signals.c
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/04/20 04:43:32 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/20 04:44:20 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/22 11:51:32 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -42,7 +42,6 @@ void exec_cmd(t_cmd *cmd, char **env, int *fdpipe)
|
||||
|
||||
void exec_last_cmd(t_cmd *cmd, int *fdin, int *fdout, int i)
|
||||
{
|
||||
cmd->current_s_cmd->last = 1;
|
||||
if (cmd->current_s_cmd->outfile)
|
||||
*fdout = open(cmd->current_s_cmd->outfile,
|
||||
O_RDWR | O_CREAT | O_APPEND, 0666);
|
||||
@ -58,7 +57,6 @@ void exec_last_cmd(t_cmd *cmd, int *fdin, int *fdout, int i)
|
||||
|
||||
void exec_not_last_cmd(t_cmd *cmd, int *fdpipe, int *fdin, int *fdout)
|
||||
{
|
||||
cmd->current_s_cmd->last = 0;
|
||||
pipe(fdpipe);
|
||||
cmd->current_s_cmd->fd[0] = *fdin;
|
||||
if (cmd->current_s_cmd->outfile)
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/03/08 15:19:42 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/22 11:41:45 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/22 11:50:17 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -24,6 +24,7 @@ t_s_cmd *set_s_cmd(char *line, int index)
|
||||
return (0);
|
||||
s_cmd->fd[0] = -1;
|
||||
s_cmd->fd[1] = -1;
|
||||
s_cmd->cmd = 0;
|
||||
s_cmd->args = 0;
|
||||
s_cmd->infile = 0;
|
||||
s_cmd->outfile = 0;
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/04/19 15:02:01 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/22 10:41:04 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/22 13:01:30 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -53,29 +53,20 @@ char *get_var(t_cmd *cmd, char *var_name)
|
||||
char *change_var(t_cmd *big_cmd, char *cmd, int *index)
|
||||
{
|
||||
int i;
|
||||
char *swap;
|
||||
char *swap2;
|
||||
char *ret;
|
||||
char *var;
|
||||
|
||||
i = *index + 1;
|
||||
while (cmd[i] && (ft_isalnum(cmd[i]) || cmd[i] == '_'
|
||||
|| cmd[i] == '?' || cmd[i] == '$'))
|
||||
i++;
|
||||
swap = ft_substr(cmd, *index + 1, i - *index - 1);
|
||||
var = get_var(big_cmd, swap);
|
||||
free(swap);
|
||||
swap2 = ft_strdup(cmd + i);
|
||||
cmd[*index] = 0;
|
||||
ret = ft_strjoin(cmd, var);
|
||||
free(cmd);
|
||||
if (*index > 0)
|
||||
*index += ft_strlen(var) - 1;
|
||||
free(var);
|
||||
var = ret;
|
||||
ret = ft_strjoin(ret, swap2);
|
||||
free(var);
|
||||
free(swap2);
|
||||
if (i == *index + 1)
|
||||
{
|
||||
(*index)++;
|
||||
ret = ft_strdup(cmd);
|
||||
free(cmd);
|
||||
return (ret);
|
||||
}
|
||||
ret = find_var(big_cmd, cmd, i, index);
|
||||
return (ret);
|
||||
}
|
||||
|
||||
|
||||
@ -6,23 +6,44 @@
|
||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/04/19 14:45:10 by apommier #+# #+# */
|
||||
/* Updated: 2022/04/22 11:43:15 by apommier ### ########.fr */
|
||||
/* Updated: 2022/04/22 13:02:24 by apommier ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include "../../includes/minishell.h"
|
||||
|
||||
char *find_var(t_cmd *big_cmd, char *cmd, int i, int *index)
|
||||
{
|
||||
char *swap;
|
||||
char *swap2;
|
||||
char *ret;
|
||||
char *var;
|
||||
|
||||
swap = ft_substr(cmd, *index + 1, i - *index - 1);
|
||||
var = get_var(big_cmd, swap);
|
||||
free(swap);
|
||||
swap2 = ft_strdup(cmd + i);
|
||||
cmd[*index] = 0;
|
||||
ret = ft_strjoin(cmd, var);
|
||||
free(cmd);
|
||||
if (*index > 0)
|
||||
*index += ft_strlen(var) - 1;
|
||||
free(var);
|
||||
var = ret;
|
||||
ret = ft_strjoin(ret, swap2);
|
||||
free(var);
|
||||
free(swap2);
|
||||
return (ret);
|
||||
}
|
||||
|
||||
int check_access_output(t_s_cmd *cmd)
|
||||
{
|
||||
if (access(cmd->outfile, W_OK))
|
||||
if (!access(cmd->outfile, F_OK) && access(cmd->outfile, W_OK))
|
||||
{
|
||||
g_var = 1;
|
||||
ft_putstr_fd("Minishell: ", 2);
|
||||
ft_putstr_fd(cmd->outfile, 2);
|
||||
if (access(cmd->outfile, F_OK))
|
||||
ft_putstr_fd(": no such file\n", 2);
|
||||
else
|
||||
ft_putstr_fd(": Permission denied\n", 2);
|
||||
ft_putstr_fd(": Permission denied\n", 2);
|
||||
free(cmd->outfile);
|
||||
return (0);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user