khri81
12-05-2005, 03:01
char *search_comando (char *comando)
{
char *var, *dir;
int c, d;
dir = (char*)malloc(MAXBUFFER*sizeof(char));
var = getenv ("PATH");
if (var == NULL)
{
printf ("il comando nn esiste\n");
exit (-1);
}
else
{
//printf ("PATH %s\n", var);
c = 0;
for (;;)
{
d = 0;
while ((var[c] != ':') && (var[c] != '\0'))
{
dir[d] = var[c];
d++;
c++;
}
if (var[c] == '\0') break;
c++;
dir[d] = '/';
d++;
dir[d] = '\0';
strcat (dir, comando);
printf ("%s\n", dir);
if (stat (dir) == 0)
{
printf ("trovato\n");
//il problema sta in questa return!!!!
return (dir);
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
}
return (NULL);
}
questa funzione preleva dalla variabile d'ambiente path tutte le varie dir in cui andare a ricercare i comandi di sistema es. ls, mkdir ecc, alle dir alla fine gli attacco il nome del comando es.
/bin/ sta nella var dir, la var comando è ls che inserisco io da input e alla fine tramite la funzone strcat la var dir diventa:
/bin/ls, poi tramite la funzione stat verifico che /bin/ls sia un comando che esiste se si devo restituire la var dir, il problema è che nn sono capace di capire il xchè se stat restituisce 0 cioè quando trova che il file esiste, nn capisco xchè il return (dir) nn mi restituisce una mazza, e prima di entrare nella if la var dir contiene /bin/ls dentro alla if la var dir è magicamente vuota si avete capito bene e nn riesco a capire il motivo se qualcuno riesce a spiegarmelo... :O
{
char *var, *dir;
int c, d;
dir = (char*)malloc(MAXBUFFER*sizeof(char));
var = getenv ("PATH");
if (var == NULL)
{
printf ("il comando nn esiste\n");
exit (-1);
}
else
{
//printf ("PATH %s\n", var);
c = 0;
for (;;)
{
d = 0;
while ((var[c] != ':') && (var[c] != '\0'))
{
dir[d] = var[c];
d++;
c++;
}
if (var[c] == '\0') break;
c++;
dir[d] = '/';
d++;
dir[d] = '\0';
strcat (dir, comando);
printf ("%s\n", dir);
if (stat (dir) == 0)
{
printf ("trovato\n");
//il problema sta in questa return!!!!
return (dir);
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
}
return (NULL);
}
questa funzione preleva dalla variabile d'ambiente path tutte le varie dir in cui andare a ricercare i comandi di sistema es. ls, mkdir ecc, alle dir alla fine gli attacco il nome del comando es.
/bin/ sta nella var dir, la var comando è ls che inserisco io da input e alla fine tramite la funzone strcat la var dir diventa:
/bin/ls, poi tramite la funzione stat verifico che /bin/ls sia un comando che esiste se si devo restituire la var dir, il problema è che nn sono capace di capire il xchè se stat restituisce 0 cioè quando trova che il file esiste, nn capisco xchè il return (dir) nn mi restituisce una mazza, e prima di entrare nella if la var dir contiene /bin/ls dentro alla if la var dir è magicamente vuota si avete capito bene e nn riesco a capire il motivo se qualcuno riesce a spiegarmelo... :O