void ft_init_source(t_data *d) { int fd; char **tab; char *tmp; char *ptr; tmp = ft_getenv_list(d->my_env, "HOME"); if (!tmp) return ; ptr = ft_strjoin(tmp + 5, "/.42shrc"); fd = open(ptr, O_RDONLY); if (fd != -1) { tab = (char **)malloc(sizeof(char *) * 3); tab[0] = ft_strdup("source"); tab[1] = ft_strdup(ptr); tab[2] = NULL; ft_source(d, tab); ft_free_tab(&tab); } ft_strdel(&tmp); ft_strdel(&ptr); close(fd); }
static char *ft_get_var(t_data *d, char *tmp, char *ptr, char **save) { char *var; while (*tmp && ft_isalnum(*tmp)) ++tmp; if (tmp == ptr) return (ptr + 1); tmp = ft_strsub(ptr, 0, tmp - ptr); var = ft_getenv_list(d->my_env, tmp); if (var) { ft_realloc_var(save, var, ptr - *save, 0); ft_strdel(&tmp); return (*save); } ft_strdel(&tmp); return (ptr + 1); }