zigoonette (clôturé)
                        
                        
                             il y a 20 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
 
 
@+++