Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
yabtaour
GitHub Repository: yabtaour/Minishell-42
Path: blob/main/execution/my_mess/cd_env.c
1407 views
1
/* ************************************************************************** */
2
/* */
3
/* ::: :::::::: */
4
/* cd_env.c :+: :+: :+: */
5
/* +:+ +:+ +:+ */
6
/* By: ssabbaji <[email protected]> +#+ +:+ +#+ */
7
/* +#+#+#+#+#+ +#+ */
8
/* Created: 2022/09/15 13:55:18 by ssabbaji #+# #+# */
9
/* Updated: 2022/10/07 10:35:52 by ssabbaji ### ########.fr */
10
/* */
11
/* ************************************************************************** */
12
13
#include "../../minishell.h"
14
15
t_data *update_pwd(t_data *data, char *cwd)
16
{
17
char new_pwd[256];
18
19
getcwd(new_pwd, sizeof(new_pwd));
20
update_env(data, "OLDPWD", cwd);
21
update_env(data, "PWD", new_pwd);
22
return (data);
23
}
24
25
void update_env(t_data *data, char *env, char *upd)
26
{
27
t_env *lst;
28
29
lst = data->lst_env;
30
while (lst)
31
{
32
if (!ft_strcmp(lst->name, env))
33
{
34
free(lst->value);
35
lst->value = ft_strdup(upd);
36
break ;
37
}
38
lst = lst->next;
39
}
40
}
41
42
char *custom_getenv(char *env_var, t_env *env_lst)
43
{
44
t_env *tmp;
45
char *pwd;
46
47
tmp = env_lst;
48
pwd = NULL;
49
while (tmp)
50
{
51
if (!ft_strcmp(tmp->name, env_var))
52
{
53
pwd = ft_strdup(tmp->value);
54
break ;
55
}
56
else
57
tmp = tmp->next;
58
}
59
return (pwd);
60
}
61
62
char *cd_strjoin(char *s1, char *s2)
63
{
64
int i;
65
int j;
66
char *str;
67
68
if (!s1)
69
{
70
s1 = (char *)malloc(1 * sizeof(char));
71
if (!s1)
72
exit(1);
73
s1[0] = '\0';
74
}
75
if (!s2)
76
return (s1);
77
str = malloc(ft_strlen(s1) + ft_strlen(s2) + 1);
78
if (!str)
79
exit(1);
80
i = -1;
81
j = 0;
82
while (s1[++i])
83
str[i] = s1[i];
84
while (s2[j])
85
str[i++] = s2[j++];
86
str[ft_strlen(s1) + ft_strlen(s2)] = '\0';
87
return (str);
88
}
89
90