diff options
| -rw-r--r-- | src/builtins_part_one.c | 248 | ||||
| -rw-r--r-- | src/main.c | 2 | ||||
| -rw-r--r-- | src/new_token.c | 29 | ||||
| -rw-r--r-- | src/tokenizer.c | 2 |
4 files changed, 277 insertions, 4 deletions
diff --git a/src/builtins_part_one.c b/src/builtins_part_one.c new file mode 100644 index 0000000..d817336 --- /dev/null +++ b/src/builtins_part_one.c @@ -0,0 +1,248 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* builtins_part_one.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2024/08/09 17:01:16 by chuhlig #+# #+# */ +/* Updated: 2024/10/17 14:29:40 by chuhlig ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include "env.h" + +int echo(char **av) +{ + int i; + int f; + + i = 1; + f = 1; + if (av[1][0] == '\0') + { + write(1, "\n", 1); + return (1); + } + if (ft_strcmp(av[1], "-n")) + { + i++; + f = 0; + } + while (av[i]) + { + write(1, &av[1], ft_strlen(av[i])); + i++; + } + if (f) + write(1, "\n", 1); + return (0); +} + + +int pwd(t_env **env, char *av) +{ + t_env *current; + t_env *prev; + char *tmp; + + current = env; + prev = NULL; + while (current) + { + if(ft_strcmp(current->name, av == 0)) + break ; + prev = current; + current = current->next; + } + ft_printf("%s\n", current->value); + return (0); +} + +int env(t_env **env) +{ + t_env *current; + t_env *prev; + + current = env; + prev = NULL; + while (current) + { + ft_printf("%s", current->name); + ft_printf("=%s\n", current->value); + prev = current; + current = current->next; + } + return (0); +} + +void update_oldpwd(t_env **env) +{ + t_env *current; + t_env *prev; + char cwd[1028]; + char *tmp; + + while (current) // home command + { + if (ft_strncmp(current->name, "OLDPWD", 6) == 0) + break ; + prev = current; + current = current->next; + } + getcwd(cwd, sizeof(cwd)); + tmp = ft_strdup(cwd); + free(current->value); + current->value = tmp; +} + +void update_pwd(t_env **env) +{ + t_env *current; + t_env *prev; + char cwd[1028]; + char *tmp; + + while (current) + { + if (ft_strncmp(current->name, "PWD", 3) == 0) + break ; + prev = current; + current = current->next; + } + getcwd(cwd, sizeof(cwd)); + tmp = ft_strdup(cwd); + free(current->value); + current->value = tmp; +} + +int cd(t_env **env,char **av) +{ + t_env *current; + t_env *prev; + t_env *pwd; + + current = env; + if(av[1] == NULL) + { + update_oldpwd(&env); + while (current) // home command + { + if (ft_strncmp(current->name, "HOME", 4) == 0) + break ; + prev = current; + current = current->next; + } + if(chdir(current->value) == -1) + return ; + } + else + { + update_oldpwd(&env); + if(chdir(av[1]) == -1) + return ; + update_pwd(&env); + } +} + +// exit + +int exit(char *av) +{ + freenode free toke free sequence stop repl free env + clear history +} + +//export + +int export(char **av, t_env **env) +{ + char *tmp; + t_env *current; + int i; + + i = i; + while(av[i]) + { + if(tmp = ft_strchr(av[i], '=')) + { + tmp = '\0'; + current = *env; + while(current) + { + if (strcmp(current->name, av[i]) == 0) + { + free(current->value); + current->value = ft_strdup(tmp + 1); + break; + } + current = current->next; + } + if (!current) + { + current = malloc(sizeof(t_env)); + current->name = ft_strdup(av[i]); + current->value = ft_strdup(tmp + 1); + current->next = *env; + *env = current; + } + return (0); + } + i++; + } + return 1; +} + +//unset +//for unset as well check and for name part +int unset(char **av, t_env **env) +{ + t_env *current; + t_env *prev; + + current = env; + prev = NULL; + while (current) + { + if(ft_strcmp(current->name, av[1] == 0)) + break ; + prev = current; + current = current->next; + } + if(current) + { + if(prev) + prev->next = current->next; + else + *env = current->next; + free(current->value); + free(current); + } + return (0); +} + + +// void getenvlststr(t_env **env, char **en)//without serparation +// { +// int i; +// size_t t; +// t_env *current; + +// t = 0; +// i = 0; +// while (en[i] != NULL) +// { +// current = *env; +// current = malloc(sizeof(t_env)); +// while(en[t] != '=') +// t++; +// current->name = ft_substr(en[i], 0, t); +// current->value = ft_strdup(en[i]); +// current->next = *env; +// *env = current; +// i++; +// } +// return (0); +// } + +//should name the list different
\ No newline at end of file @@ -6,7 +6,7 @@ /* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/22 17:14:03 by dkaiser #+# #+# */ -/* Updated: 2024/07/18 16:44:14 by chuhlig ### ########.fr */ +/* Updated: 2024/08/26 19:55:57 by chuhlig ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/src/new_token.c b/src/new_token.c index 92ff421..6431c7d 100644 --- a/src/new_token.c +++ b/src/new_token.c @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* new_token.c :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: dkaiser <dkaiser@student.42heilbronn.de +#+ +:+ +#+ */ +/* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/27 14:29:44 by dkaiser #+# #+# */ -/* Updated: 2024/06/28 14:59:34 by dkaiser ### ########.fr */ +/* Updated: 2024/08/29 15:30:52 by chuhlig ### ########.fr */ /* */ /* ************************************************************************** */ @@ -50,3 +50,28 @@ t_token *new_redir_token(int type, t_token *previous, t_token *next) token->content.redir_type = type; return (token); } + +// void ft_append_token(int type, t_token **list)// but we need somewhere token/node head initialize with nul +// { +// t_token *node; +// t_token *last_node; + +// if (!list) +// return ; +// node = malloc(sizeof(t_token)); +// if (!node) +// return ; +// node->next = NULL; +// node->type = type; +// if (!*list) +// { +// *list = node; +// node->previous = NULL; +// } +// else +// { +// last_node = ft_lstlast(*list); +// last_node->next = node; +// node->previous = last_node; +// } +// }
\ No newline at end of file diff --git a/src/tokenizer.c b/src/tokenizer.c index ab8a6ac..d7a96f7 100644 --- a/src/tokenizer.c +++ b/src/tokenizer.c @@ -6,7 +6,7 @@ /* By: chuhlig <chuhlig@student.42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/06/28 20:55:50 by chuhlig #+# #+# */ -/* Updated: 2024/08/29 15:26:55 by dkaiser ### ########.fr */ +/* Updated: 2024/10/17 14:21:26 by chuhlig ### ########.fr */ /* */ /* ************************************************************************** */ |
