Compare commits

...

2 Commits

Author SHA1 Message Date
Camille Chauvet
4533b7a75d remove testfile 2023-02-14 07:22:29 +01:00
Camille Chauvet
cf4bacd42e merge master and camille 2023-02-14 07:21:24 +01:00
101 changed files with 225 additions and 50 deletions

BIN
a.out → .execution.c.swp Executable file → Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,5 +1,5 @@
UTILS_SRC = utils/ft_is_in_quote.c utils/ft_strncpy.c utils/ft_strreplace.c utils/ft_strnchr.c utils/ft_getstr.c
SRCS = ${UTILS_SRC} main.c file.c infile.c outfile.c heredoc.c syntatics.c ft_split_quoted.c
SRCS = ${UTILS_SRC} main.c file.c infile.c outfile.c heredoc.c syntatics.c ft_split_quoted.c env.c
OBJS = ${SRCS:.c=.o}

24
d
View File

@ -1,24 +0,0 @@
a.out
argprinter
d
execution.c
file.c
file.o
ft_split_quoted.c
ft_split_quoted.o
heredoc.c
heredoc.o
infile.c
infile.o
libftx
main.c
main.o
Makefile
minishell
minishell.h
outfile.c
outfile.o
syntatics.c
syntatics.o
t
utils

194
env.c Normal file
View File

@ -0,0 +1,194 @@
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* env.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: erey-bet <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2023/02/02 14:39:56 by erey-bet #+# #+# */
/* Updated: 2023/02/03 16:04:16 by erey-bet ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
int get_index(char *s, char c)
{
int i;
i = -1;
while (s[++i])
if (s[i] == c)
return (i);
return (-1);
}
void print_export(t_list **head, int fd)
{
t_list *current;
char *ctn;
int v;
current = *head;
while (current != NULL)
{
ctn = current->content;
if (*(ft_strchr(ctn, '=') - 1) != '_')
{
v = get_index(ctn, '=');
write(fd, "declare -x ", 11);
write(fd, ctn, v + 1);
write(fd, "\"", 1);
ft_putstr_fd(ctn + v + 1, fd);
write(fd, "\"\n", 2);
}
current = current->next;
}
}
void print_env(t_list **head, int fd)
{
t_list *current;
current = *head;
while (current != NULL)
{
ft_putstr_fd(current->content, fd);
write(fd, "\n", 1);
current = current->next;
}
}
int strcmp_alphabet(char *s1, char *s2)
{
int i;
if (!s1 || !s2)
return (-2);
i = 0;
while (s1[i] && s2[i])
{
if (s1[i] < s2[i])
return (0);
else if (s1[i] > s2[i])
return (1);
i++;
}
return (-1);
}
void ft_double_swap(char **a, char **b)
{
void *c;
c = *a;
*a = *b;
*b = c;
}
void exchange(char **a, char **b, char **c)
{
void *d;
d = *a;
*a = *b;
*b = *c;
*c = d;
}
void add_sort(t_list **head, char *str)
{
t_list *current;
char *last;
current = *head;
while (current->next != NULL && strcmp_alphabet(str, current->content) != 0)
current = current->next;
if (strcmp_alphabet(str, current->content) == 1)
last = str;
else
exchange(&last, (char **)(&current->content), &str);
while (current != NULL)
{
if (current->next == NULL)
current->next = ft_calloc(1, sizeof(t_list));
if (current->next == NULL)
return ;
current = current->next;
if (current->content == NULL)
{
current->content = last;
return ;
}
else
ft_double_swap((char **)(&current->content), &last);
}
}
char *get_value_index(int index, t_list **head)
{
t_list *current;
int i;
current = *head;
i = -1;
while (current != NULL && ++i != index)
current = current->next;
if (i == index)
return (ft_strchr(current->content, '=') + 1);
return (NULL);
}
int is_start(char *big, char *little)
{
int i;
i = 0;
while (big[i])
{
if (little[i] != big[i])
return (0);
i++;
if (!little[i])
return (1);
}
return (0);
}
char *get_value_key(char *key, t_list **head)
{
t_list *current;
current = *head;
while (current != NULL)
{
if (is_start(current->content, key))
return (ft_strchr(current->content, '=') + 1);
current = current->next;
}
return (NULL);
}
t_list **init_env(char **env)
{
t_list **head;
int i;
head = ft_calloc(1, sizeof(t_list *));
*head = ft_calloc(1, sizeof(t_list));
if (*head == NULL)
return (NULL);
i = -1;
while (env[++i])
add_sort(head, env[i]);
return (head);
}
/*int main(int argc, char *argv[], char **env)
{
(void)argc;
(void)argv;
ft_putstr_fd(get_value_index(10, init_env(env)), 1);
//print_env(init_env(env), 1);
return (0);
}*/

View File

@ -7,32 +7,27 @@ int main(int ac, char **av, char **env)
}
char *ft_get_executable_path(t_data *data, char *executable)
{
if (ft_strcmp(executable, "env"))
return (ft_strjoin("/usr/bin/bo", const char *s2))
}
/* char *ft_get_executable_path(t_data *data, char *executable) */
/* { */
/* if (ft_strcmp(executable, "env") == 0) */
/* return (ft_strjoin("", executable)); */
/* else */
/* return */
/* } */
int ft_excutor(t_cmd *cmd, )
int ft_excutor(t_cmd *cmd)
{
char cmd[13] = "/usr/bin/ls";
char *args[3] = {NULL, "cat", NULL};
int pid;
int fd_in;
int fd_out;
if (ac != 3)
return (1);
fd_out = open(av[2], O_WRONLY | O_CREAT | O_TRUNC);
fd_in = open(av[1], O_RDONLY);
pid = fork();
if (pid == -1)
return (1);
if (pid == 0)
{
dup2(fd_out, 1);
dup2(fd_in, 0);
execve(cmd, args, env);
dup2(cmd->fd_out, 1);
dup2(cmd->fd_in, 0);
//TODO ADD ENV VARIABLES
execve(cmd->executable, cmd->args, NULL);
}
else
waitpid(pid);

BIN
file.o

Binary file not shown.

Binary file not shown.

BIN
heredoc.o

Binary file not shown.

BIN
infile.o

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
main.o

Binary file not shown.

BIN
minishell

Binary file not shown.

View File

@ -1,13 +1,18 @@
#ifndef FT_MINISHELL
# define FT_MINISHELL
#ifndef MINISHELL_H
# define MINISHELL_H
# include "libftx/libftx.h"
# include "utils/utils.h"
# include <sys/types.h>
# include <sys/stat.h>
# include <fcntl.h>
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
# include <sys/wait.h>
# include <stdio.h>
# include <readline/readline.h>
# include <readline/history.h>
t_list **init_env(char **env);
char *get_value_index(int index, t_list **head);
char *get_value_key(char *key, t_list **head);
int ft_syntatic_verif(const char *str);
int ft_file_is_readable(const char *path);
@ -21,10 +26,15 @@ char **ft_split_quoted(const char *s, char c);
typedef struct s_cmd
{
int fd_in;
int fd_out;
int fd_in;
int fd_out;
char *executable;
char **args;
} t_cmd;
} t_cmd;
typedef struct s_data
{
t_list **env;
} t_data;
#endif

BIN
outfile.o

Binary file not shown.

Binary file not shown.

0
t
View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More