maxishell
Implementation of a shell for Linux-like systems
Loading...
Searching...
No Matches
utils_utils.c
Go to the documentation of this file.
1/* ************************************************************************** */
2/* */
3/* ::: :::::::: */
4/* utils_utils.c :+: :+: :+: */
5/* +:+ +:+ +:+ */
6/* By: rmikhayl <marvin@42.fr> +#+ +:+ +#+ */
7/* +#+#+#+#+#+ +#+ */
8/* Created: 2024/11/08 15:40:30 by rmikhayl #+# #+# */
9/* Updated: 2024/11/08 15:40:34 by rmikhayl ### ########.fr */
10/* */
11/* ************************************************************************** */
12
13#include "env.h"
14#include "libft.h"
15#include <stdlib.h>
16#include <stdio.h>
17
18char *ft_remove_all_edge_quotes(char *str, char quote_type);
19
20static char *remove_quotes(const char *value)
21{
22 char *temp;
23 char *result;
24
25 temp = ft_remove_all_edge_quotes((char *)value, '\"');
26 result = ft_remove_all_edge_quotes(temp, '\'');
27 free(temp);
28 return (result);
29}
30
31void add_new_env(t_env **env, const char *key, char *modified_value)
32{
33 t_env *new_env;
34
35 new_env = malloc(sizeof(t_env));
36 if (!new_env)
37 return ;
38 new_env->key = ft_strdup(key);
39 new_env->value = modified_value;
40 new_env->next = *env;
41 *env = new_env;
42}
43
44void set_env(t_env **env, const char *key, const char *value)
45{
46 t_env *current;
47 char *modified_value;
48
49 current = *env;
50 modified_value = NULL;
51 if (value[0] != '\0')
52 modified_value = remove_quotes(value);
53 else
54 modified_value = ft_strdup(value);
55 while (current)
56 {
57 if (ft_strcmp(current->key, key) == 0)
58 {
59 free(current->value);
60 current->value = modified_value;
61 return ;
62 }
63 current = current->next;
64 }
65 add_new_env(env, key, modified_value);
66}
int ft_strcmp(const char *s1, const char *s2)
Definition ft_strcmp.c:24
char * ft_strdup(const char *s)
Definition ft_strdup.c:23
Definition env.h:17
struct s_env * next
Definition env.h:20
char * key
Definition env.h:18
char * value
Definition env.h:19
void set_env(t_env **env, const char *key, const char *value)
Definition utils_utils.c:44
char * ft_remove_all_edge_quotes(char *str, char quote_type)
Definition env.c:24
static char * remove_quotes(const char *value)
Definition utils_utils.c:20
void add_new_env(t_env **env, const char *key, char *modified_value)
Definition utils_utils.c:31