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