-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathms_found_variable.c
More file actions
116 lines (107 loc) · 2.83 KB
/
ms_found_variable.c
File metadata and controls
116 lines (107 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* ms_found_variable.c :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: obeedril <obeedril@student.42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2022/03/11 21:00:52 by dlana #+# #+# */
/* Updated: 2022/03/11 21:09:05 by obeedril ### ########.fr */
/* */
/* ************************************************************************** */
#include "minishell.h"
void ms_add_tmp_variable(t_data *data, char *var)
{
int i;
char **tmp;
i = 0;
data->num_tmp_var++;
if (data->num_tmp_var == 1)
{
ms_malloc_array(&data->tmp_var, data->num_tmp_var);
data->tmp_var[i] = ft_strdup(var);
data->tmp_var[i + 1] = NULL;
}
else if (data->num_tmp_var > 1)
{
tmp = data->tmp_var;
ms_malloc_array(&data->tmp_var, data->num_tmp_var);
while (tmp[i] != NULL)
{
data->tmp_var[i] = ft_strdup(tmp[i]);
i++;
}
data->tmp_var[i] = ft_strdup(var);
data->tmp_var[i + 1] = NULL;
if (tmp)
ms_free_arr(&tmp);
}
}
int ms_cut_array_arg(char ***arr, int *count_arr, int y)
{
int i;
char **arr_tmp;
i = 0;
arr_tmp = (*arr);
(*count_arr)--;
if ((*count_arr) == 0)
{
ms_free_arr(arr);
return (YES);
}
ms_malloc_array(arr, (*count_arr));
while (i < y)
{
(*arr)[i] = ft_strdup(arr_tmp[i]);
i++;
}
while (i < (*count_arr))
{
(*arr)[i] = ft_strdup(arr_tmp[i + 1]);
i++;
}
(*arr)[i] = NULL;
ms_free_arr(&arr_tmp);
return (NO);
}
char *ms_found_tmp_var(t_data *data, char **var, int x)
{
int y;
y = 0;
while (y < data->num_tmp_var)
{
if (ft_strncmp((*var), data->tmp_var[y], x) == 0
&& (data->tmp_var[y][x] == '=' || data->tmp_var[y][x] == '\0'))
{
ms_free_str(var);
(*var) = ft_strdup(data->tmp_var[y]);
ms_cut_array_arg(&data->tmp_var, &data->num_tmp_var, y);
return ((*var));
}
y++;
}
return ((*var));
}
void ms_found_variable(t_data *data)
{
int i;
i = 0;
while (i < data->cmd[0].num_array_arg)
{
if (ms_valid_export(data->cmd[0].array_arg[0]) != ADD_TO_OLD
&& ms_valid_export(data->cmd[0].array_arg[0]) != ADD_NEW)
return ;
i++;
}
while (data->cmd[0].num_array_arg != 0 && data->empty_str == NO)
{
if (ms_valid_export(data->cmd[0].array_arg[0]) != ERR_NUM_ONE)
{
ms_add_tmp_variable(data, data->cmd[0].array_arg[0]);
data->empty_str = ms_cut_array_arg(&data->cmd[0].array_arg,
&data->cmd[0].num_array_arg, 0);
}
else
return ;
}
}