diff --git a/src/alias/alias.c b/src/alias/alias.c index 1fe7a02..af5b39f 100644 --- a/src/alias/alias.c +++ b/src/alias/alias.c @@ -8,12 +8,10 @@ #include "../utils/utils.h" #include -lst** aliases_init(lst** env) +static char* get_zzsh_aliases(lst** env) { - lst** aliases; - ssize_t file_name_size; char* home; - int fd; + ssize_t file_name_size; char* file_path; ssize_t size_file_path; file_name_size = strlen("/.zzsh_aliases"); @@ -22,6 +20,14 @@ lst** aliases_init(lst** env) file_path = malloc((size_file_path+1)*sizeof(char)); strcpy(file_path, home); strcat(file_path, "/.zzsh_aliases"); + return file_path; +} + +lst** aliases_init(lst** env) +{ + lst** aliases; + int fd; + char* file_path = get_zzsh_aliases(env); fd = open(file_path, O_CREAT, 0644); if (fd == -1) dprintf(2, "Erreur lors la création du fichier .zzsh_aliases\n"); @@ -106,3 +112,23 @@ void alias_del(void *ptr) free(alias->value); free(alias); } +int alias_save(lst** aliases, lst** env) +{ + int fd; + alias_t* content; + lst* current = *aliases; + char* file_path = get_zzsh_aliases(env); + fd = open(file_path, O_WRONLY); + if (fd == -1) + { + dprintf(2, "Une erreur est survenue lors de l'écriture des aliases\n"); + return 1; + } + while(current != NULL) + { + content = current->content; + dprintf(fd, "%s=%s\n", content->key, content->value); + current = current->next; + } + return 0; +} diff --git a/src/alias/alias.h b/src/alias/alias.h index 99fb60b..9710535 100644 --- a/src/alias/alias.h +++ b/src/alias/alias.h @@ -13,3 +13,4 @@ lst** aliases_save(lst** aliases); void alias_del(void *ptr); char* get_alias(lst** aliases, const char* key); int add_alias(lst** root, const char* key, const char* value); +int alias_save(lst** aliases, lst** env); diff --git a/src/main.c b/src/main.c index 006740d..a9e9a13 100644 --- a/src/main.c +++ b/src/main.c @@ -51,6 +51,7 @@ int main(int ac, char **av, char **env_str) } line = get_user_input(&data); } + alias_save(data.aliases, data.env); lst_clear(data.aliases, &alias_del); lst_clear(data.env, &env_del); return (0);