From 1d322cf4d3d4996fe8eb11300048245fd8053f74 Mon Sep 17 00:00:00 2001 From: guamss Date: Tue, 4 Jul 2023 18:47:09 +0200 Subject: [PATCH] (feat): alias init lecture fichier --- src/alias/alias.c | 47 +++++++++++++++++++++++++++++++++++++++++++---- src/main.c | 2 +- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/alias/alias.c b/src/alias/alias.c index 3cd3dd7..1fe7a02 100644 --- a/src/alias/alias.c +++ b/src/alias/alias.c @@ -1,13 +1,52 @@ #include "../../lib/bozolib/bozolib.h" #include "./alias.h" #include +#include +#include "../env/env.h" +#include +#include +#include "../utils/utils.h" +#include -lst** aliases_init() +lst** aliases_init(lst** env) { lst** aliases; - - aliases = malloc(sizeof(lst*)); - *aliases = NULL; + ssize_t file_name_size; + char* home; + int fd; + char* file_path; + ssize_t size_file_path; + file_name_size = strlen("/.zzsh_aliases"); + home = get_env_variable(env, "HOME"); + size_file_path = strlen(home)+file_name_size; + file_path = malloc((size_file_path+1)*sizeof(char)); + strcpy(file_path, home); + strcat(file_path, "/.zzsh_aliases"); + fd = open(file_path, O_CREAT, 0644); + if (fd == -1) + dprintf(2, "Erreur lors la création du fichier .zzsh_aliases\n"); + close(fd); + fd = open(file_path, O_RDONLY); + if (fd == -1) + dprintf(2, "Erreur lors de la lecture du fichier .zzsh_aliases\n"); + int buff_size; + buff_size = lseek(fd, 0, SEEK_END); + close(fd); + fd = open(file_path, O_RDONLY); + char buffer[buff_size]; + read(fd, buffer, buff_size); + char** assignation; + char** line = split_quoted_charset(buffer, "\n"); + aliases = malloc(sizeof(lst*)); + *aliases = NULL; + for(int i = 0; line[i]!=NULL; i++) + { + if (strchr(line[i], '=') != NULL) + { + assignation = split_quoted_charset(line[i], "="); + add_alias(aliases, assignation[0], assignation[1]); + } + } return aliases; } diff --git a/src/main.c b/src/main.c index a0b1aef..cd72bf8 100644 --- a/src/main.c +++ b/src/main.c @@ -26,7 +26,7 @@ int main(int ac, char **av, char **env_str) data.env = env_init((const char **) env_str); if (data.env == NULL) return (1); - data.aliases = aliases_init(); + data.aliases = aliases_init(data.env); if (data.aliases == NULL) { lst_clear(data.env, &env_del);