zigoonette (clôturé)
il y a 19 ans
Bonjour,
Je suis en train de coder un C shell sou unix, et je veux gerer le globing, notamment l'etoile.
Seuleument j'ai un leger probleme, je poste le code :
Code:
int test_joker(t_task t)
{
int i;
int j;
char **argv;
glob_t g;
if (!check_star)
return (0);
for (i = 1, j = 0; t->_argv[i]; i++, j++)
{
if (strchr(t->_argv[i], '*'))
{
if (j)
{
if ((glob(t->_argv[i], GLOB_APPEND, NULL, &g)) == GLOB_NOMATCH)
{
fprintf(stderr, "%s : No Match\n", t->cmd);
return (-1);
}
}
else
if ((glob(t->_argv[i], 0, NULL, &g)) == GLOB_NOMATCH)
{
fprintf(stderr, "%s : No Match\n", t->cmd);
return (-1);
}
}
}
argv = xmalloc((g.gl_matchc + 1)* sizeof(char));
for (i = 0; g.gl_pathv[i]; i++)
{
argv[i] = strdup(g.gl_pathv[i]);
}
argv[i] = NULL;
globfree(&g);
for (i = 0; argv[i]; i++)
printf("pathv[%d] = %s\n", i, argv[i]);
return (-1);
}
L'affichage c'est juste pour tester, ce qui se passe c'est que ca segault, mais voila ca ne segfault que quand j'appelle globfree, j'avoue que la je viens un peu a court d'idee donc si quelqun voit une faute, ou est au courant d'un bug sur la fonction glob, ben merci de poster Smile
@+++