Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
yabtaour
GitHub Repository: yabtaour/Minishell-42
Path: blob/main/lexer/ft_lexer_list.c
1407 views
1
/* ************************************************************************** */
2
/* */
3
/* ::: :::::::: */
4
/* ft_lexer_list.c :+: :+: :+: */
5
/* +:+ +:+ +:+ */
6
/* By: ssabbaji <[email protected]> +#+ +:+ +#+ */
7
/* +#+#+#+#+#+ +#+ */
8
/* Created: 2022/07/26 18:16:46 by yabtaour #+# #+# */
9
/* Updated: 2022/09/15 18:08:50 by ssabbaji ### ########.fr */
10
/* */
11
/* ************************************************************************** */
12
13
#include "../minishell.h"
14
15
t_lexer *ft_new_lexer_node(char *str, int type)
16
{
17
t_lexer *node;
18
int i;
19
20
node = NULL;
21
if (!str)
22
return (NULL);
23
i = ft_strlen(str);
24
node = malloc(sizeof(t_lexer));
25
if (!node)
26
exit (1);
27
node->val = malloc(i + 1);
28
if (!node->val)
29
exit (1);
30
i = -1;
31
while (str[++i])
32
node->val[i] = str[i];
33
node->val[i] = '\0';
34
node->type = type;
35
node->next = NULL;
36
node->prev = NULL;
37
return (node);
38
}
39
40
t_lexer *ft_add_lexer_back(t_lexer *lexer, char *str, int type)
41
{
42
t_lexer *node;
43
t_lexer *lexer_clone;
44
45
if (!str)
46
return (NULL);
47
node = ft_new_lexer_node(str, type);
48
if (!node)
49
exit (1);
50
if (lexer == NULL)
51
return (node);
52
lexer_clone = lexer;
53
while (lexer_clone->next != NULL)
54
lexer_clone = lexer_clone->next;
55
lexer_clone->next = node;
56
node->prev = lexer_clone;
57
return (lexer);
58
}
59
60