[SOS] Problème de fonctionnalité

Cyril Dupuit cyrildupuit at hotmail.com
Ven 7 Avr 14:34:05 CEST 2006


Bonjour,
En analysant le code du fichier shell.c (article 9.5), je me suis rendu 
compte qu'il pouvait y avoir un problème dans la fonction command_exec() 
(ligne 607 et suivante) lorsque l'utilisateur saisit plusieurs espaces entre 
les paramètres.

Voici le code :
for (c = cmd; *c != '\0'; c++)
    if (*c == ' ')
      argc++;

[....]

for (i = 0, c = cmd; i < argc; i++)
    {
      argv[i] = c;
      while (*c != ' ' && *c != '\0')
	c++;
      *c = '\0';
      c++;
    }

[....]

Ma solution est :
for (c = cmd; *c != '\0'; c++)
   if(*c == ' ')
   {
      while(*c == ' ') c++;
      while((*c != ' ')&&(*c != '\0')) c++;
      if(*c != '\0') argc++;
   }

[.....]

for (i = 0, c = cmd; i < argc; i++)
    {
      while(*c == ' ') c++;
      argv[i] = c;
      while (*c != ' ' && *c != '\0')
	c++;
      *c = '\0';
      c++;
    }

[....]

Bonne journée.

Cyril




Plus d'informations sur la liste de diffusion Sos