Bonjour,
J'ai un petit problème que voici (UNIX) :
Je désire récupérer la le chemin du dossier Home de l'utilisateur qui lance mon programme, pour ce j'utilise la fonction getpwuid, qui prend un uid_t en paramètre et retourne un pointeur sur struct passwd.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| int init_inf(t_data *d)
{
struct passwd *p;
d->uid = getuid();
if ((p = getpwuid(d->uid)) != NULL)
{
if ((d->u_name = strdup(p->pw_name)) == NULL)
return (FAILURE_E);
if ((d->u_home = strdup(p->pw_dir)) == NULL)
return (FAILURE_E);
free(p->pw_name);
return (SUCCESS_E);
}
show_error(2, PRGM ": " ENOINFO "\n");
return (FAILURE_E);
} |
Voici la fonction.
Il se trouve que j'ai quelques fuites de memoire :
J'ai essayé de free tous les pointeurs de la structure, il se trouve que seul pw_name ne me sort pas de warning.
(Les fuites ne proviennent pas des strdup)
Partager