enviroment -> t_list
This commit is contained in:
parent
6c726f67f1
commit
ef1a3f8a39
@ -7,7 +7,7 @@ A lot of amazing shell stuff
|
||||
## TODO
|
||||
- Find absolute path for command input ('/', './', 'cmd')
|
||||
- Add heredoc to tokenizer
|
||||
- Environment to `t_list`
|
||||
-[x] Environment to `t_list`
|
||||
- Get environment array (export)
|
||||
- Preliminary signals
|
||||
- Define struct for commands, something like (
|
||||
|
||||
@ -13,10 +13,10 @@
|
||||
#ifndef environment_H
|
||||
# define environment_H
|
||||
|
||||
void add_environment(t_environment **environment, char *name, char *value);
|
||||
void print_environment(t_environment *environment);
|
||||
char *get_environment(t_environment *environment, char *name);
|
||||
void free_environment(t_environment *environment);
|
||||
int parse_environment(char **envp, t_environment **environment);
|
||||
void add_environment(t_list **environment, char *name, char *value);
|
||||
void print_environment(t_list *environment);
|
||||
char *get_environment(t_list *environment, char *name);
|
||||
void free_environment(t_list *environment);
|
||||
int parse_environment(char **envp, t_list **environment);
|
||||
|
||||
#endif // environment_H
|
||||
|
||||
@ -28,7 +28,6 @@ typedef struct s_environment
|
||||
{
|
||||
char *name;
|
||||
char *value;
|
||||
struct s_environment *next;
|
||||
} t_environment;
|
||||
|
||||
typedef struct s_token
|
||||
@ -48,7 +47,7 @@ typedef struct s_lexer
|
||||
|
||||
typedef struct s_minishell
|
||||
{
|
||||
t_environment *environment;
|
||||
t_list *environment;
|
||||
char *line;
|
||||
t_lexer *lexer;
|
||||
t_list *tokens;
|
||||
|
||||
@ -12,21 +12,26 @@
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
void add_environment(t_environment **environment, char *name, char *value)
|
||||
void add_environment(t_list **environment, char *name, char *value)
|
||||
{
|
||||
t_environment *new_environment;
|
||||
t_list *new_node;
|
||||
|
||||
if (name != NULL && value != NULL)
|
||||
{
|
||||
new_environment = malloc(sizeof(t_environment));
|
||||
if (new_environment == NULL)
|
||||
{
|
||||
perror("malloc");
|
||||
return ;
|
||||
}
|
||||
return (perror("malloc"));
|
||||
new_environment->name = ft_strdup(name);
|
||||
new_environment->value = ft_strdup(value);
|
||||
new_environment->next = *environment;
|
||||
*environment = new_environment;
|
||||
new_node = ft_lstnew(new_environment);
|
||||
if (new_node == NULL || new_environment->name == NULL || new_environment->value == NULL)
|
||||
{
|
||||
free(new_environment->name);
|
||||
free(new_environment->value);
|
||||
free(new_environment);
|
||||
return (perror("malloc"));
|
||||
}
|
||||
ft_lstadd_back(environment, new_node);
|
||||
}
|
||||
}
|
||||
@ -12,19 +12,17 @@
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
void free_environment(t_environment *environment)
|
||||
void free_environment(t_list *environment)
|
||||
{
|
||||
t_environment *next;
|
||||
t_list *tmp;
|
||||
|
||||
while (environment != NULL)
|
||||
{
|
||||
if (environment->next)
|
||||
next = environment->next;
|
||||
else
|
||||
next = NULL;
|
||||
free(environment->name);
|
||||
free(environment->value);
|
||||
free(environment);
|
||||
environment = next;
|
||||
tmp = environment;
|
||||
environment = environment->next;
|
||||
free(((t_environment *)tmp->content)->name);
|
||||
free(((t_environment *)tmp->content)->value);
|
||||
free(tmp->content);
|
||||
free(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,14 +12,14 @@
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
char *get_environment(t_environment *environment, char *name)
|
||||
char *get_environment(t_list *environment, char *name)
|
||||
{
|
||||
t_environment *env;
|
||||
while (environment != NULL)
|
||||
{
|
||||
if (ft_strcmp(environment->name, name) == 0)
|
||||
{
|
||||
return (environment->value);
|
||||
}
|
||||
env = (t_environment *)environment->content;
|
||||
if (ft_strcmp(env->name, name) == 0)
|
||||
return (env->value);
|
||||
environment = environment->next;
|
||||
}
|
||||
return (NULL);
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
int parse_environment(char **envp, t_environment **environment)
|
||||
int parse_environment(char **envp, t_list **environment)
|
||||
{
|
||||
char **env;
|
||||
|
||||
|
||||
@ -12,11 +12,14 @@
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
void print_environment(t_environment *environment)
|
||||
void print_environment(t_list *environment)
|
||||
{
|
||||
t_environment *env;
|
||||
|
||||
while (environment != NULL)
|
||||
{
|
||||
printf("%s=%s\n", environment->name, environment->value);
|
||||
env = (t_environment *)environment->content;
|
||||
printf("%s=%s\n", env->name, env->value);
|
||||
environment = environment->next;
|
||||
}
|
||||
}
|
||||
@ -12,16 +12,16 @@
|
||||
|
||||
#include "minishell.h"
|
||||
|
||||
char *get_user(t_environment *environment)
|
||||
char *get_user(t_list *environment)
|
||||
{
|
||||
char *str1;
|
||||
char *str2;
|
||||
|
||||
str1 = ft_strdup(get_environment(environment, "USER"));
|
||||
if (str1 == NULL)
|
||||
{
|
||||
str1 = ft_strdup("guest");
|
||||
}
|
||||
if (str1 == NULL)
|
||||
return (NULL);
|
||||
str2 = ft_strjoin(GREEN, str1);
|
||||
free(str1);
|
||||
str1 = ft_strjoin(str2, RESET "🐚" GREEN "minishell" RESET ": ");
|
||||
@ -29,7 +29,7 @@ char *get_user(t_environment *environment)
|
||||
return (str1);
|
||||
}
|
||||
|
||||
char *get_path(t_environment *environment)
|
||||
char *get_path(t_list *environment)
|
||||
{
|
||||
char *home;
|
||||
char *temp;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user