(feat): alias init lecture fichier

This commit is contained in:
guamss 2023-07-04 18:47:09 +02:00
parent db60e7adba
commit 1d322cf4d3
2 changed files with 44 additions and 5 deletions

View File

@ -1,13 +1,52 @@
#include "../../lib/bozolib/bozolib.h" #include "../../lib/bozolib/bozolib.h"
#include "./alias.h" #include "./alias.h"
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h>
#include "../env/env.h"
#include <unistd.h>
#include <fcntl.h>
#include "../utils/utils.h"
#include <string.h>
lst** aliases_init() lst** aliases_init(lst** env)
{ {
lst** aliases; lst** aliases;
ssize_t file_name_size;
aliases = malloc(sizeof(lst*)); char* home;
*aliases = NULL; 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; return aliases;
} }

View File

@ -26,7 +26,7 @@ int main(int ac, char **av, char **env_str)
data.env = env_init((const char **) env_str); data.env = env_init((const char **) env_str);
if (data.env == NULL) if (data.env == NULL)
return (1); return (1);
data.aliases = aliases_init(); data.aliases = aliases_init(data.env);
if (data.aliases == NULL) if (data.aliases == NULL)
{ {
lst_clear(data.env, &env_del); lst_clear(data.env, &env_del);