fix some things
This commit is contained in:
parent
cbd9442469
commit
1ec3636d5d
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/03/09 22:33:49 by apommier #+# #+# */
|
/* 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;
|
struct s_command *big_cmd;
|
||||||
int fd[2];
|
int fd[2];
|
||||||
int pipe[2];
|
int pipe[2];
|
||||||
int last;
|
|
||||||
int last_pipe[2];
|
int last_pipe[2];
|
||||||
int child;
|
int child;
|
||||||
int nb_args;
|
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);
|
char *ft_output(char *line, t_s_cmd *cmd, int index);
|
||||||
|
|
||||||
//set_var.c
|
//set_var.c
|
||||||
|
char *get_var(t_cmd *cmd, char *var_name);
|
||||||
char *set_var(t_cmd *big_cmd, char *cmd);
|
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
|
//set_signals.c
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/04/20 04:43:32 by apommier #+# #+# */
|
/* 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)
|
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)
|
if (cmd->current_s_cmd->outfile)
|
||||||
*fdout = open(cmd->current_s_cmd->outfile,
|
*fdout = open(cmd->current_s_cmd->outfile,
|
||||||
O_RDWR | O_CREAT | O_APPEND, 0666);
|
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)
|
void exec_not_last_cmd(t_cmd *cmd, int *fdpipe, int *fdin, int *fdout)
|
||||||
{
|
{
|
||||||
cmd->current_s_cmd->last = 0;
|
|
||||||
pipe(fdpipe);
|
pipe(fdpipe);
|
||||||
cmd->current_s_cmd->fd[0] = *fdin;
|
cmd->current_s_cmd->fd[0] = *fdin;
|
||||||
if (cmd->current_s_cmd->outfile)
|
if (cmd->current_s_cmd->outfile)
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/03/08 15:19:42 by apommier #+# #+# */
|
/* 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);
|
return (0);
|
||||||
s_cmd->fd[0] = -1;
|
s_cmd->fd[0] = -1;
|
||||||
s_cmd->fd[1] = -1;
|
s_cmd->fd[1] = -1;
|
||||||
|
s_cmd->cmd = 0;
|
||||||
s_cmd->args = 0;
|
s_cmd->args = 0;
|
||||||
s_cmd->infile = 0;
|
s_cmd->infile = 0;
|
||||||
s_cmd->outfile = 0;
|
s_cmd->outfile = 0;
|
||||||
|
|||||||
@ -6,7 +6,7 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/04/19 15:02:01 by apommier #+# #+# */
|
/* 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)
|
char *change_var(t_cmd *big_cmd, char *cmd, int *index)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char *swap;
|
|
||||||
char *swap2;
|
|
||||||
char *ret;
|
char *ret;
|
||||||
char *var;
|
|
||||||
|
|
||||||
i = *index + 1;
|
i = *index + 1;
|
||||||
while (cmd[i] && (ft_isalnum(cmd[i]) || cmd[i] == '_'
|
while (cmd[i] && (ft_isalnum(cmd[i]) || cmd[i] == '_'
|
||||||
|| cmd[i] == '?' || cmd[i] == '$'))
|
|| cmd[i] == '?' || cmd[i] == '$'))
|
||||||
i++;
|
i++;
|
||||||
swap = ft_substr(cmd, *index + 1, i - *index - 1);
|
if (i == *index + 1)
|
||||||
var = get_var(big_cmd, swap);
|
{
|
||||||
free(swap);
|
(*index)++;
|
||||||
swap2 = ft_strdup(cmd + i);
|
ret = ft_strdup(cmd);
|
||||||
cmd[*index] = 0;
|
|
||||||
ret = ft_strjoin(cmd, var);
|
|
||||||
free(cmd);
|
free(cmd);
|
||||||
if (*index > 0)
|
return (ret);
|
||||||
*index += ft_strlen(var) - 1;
|
}
|
||||||
free(var);
|
ret = find_var(big_cmd, cmd, i, index);
|
||||||
var = ret;
|
|
||||||
ret = ft_strjoin(ret, swap2);
|
|
||||||
free(var);
|
|
||||||
free(swap2);
|
|
||||||
return (ret);
|
return (ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,22 +6,43 @@
|
|||||||
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
/* By: apommier <apommier@student.42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/04/19 14:45:10 by apommier #+# #+# */
|
/* 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"
|
#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)
|
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;
|
g_var = 1;
|
||||||
ft_putstr_fd("Minishell: ", 2);
|
ft_putstr_fd("Minishell: ", 2);
|
||||||
ft_putstr_fd(cmd->outfile, 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);
|
free(cmd->outfile);
|
||||||
return (0);
|
return (0);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user