PDA

View Full Version : aiuto con questa funzione


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

khri81
12-05-2005, 13:12
help

khri81
13-05-2005, 00:08
help!!!! :(

RaouL_BennetH
13-05-2005, 01:27
Non è che potresti identarlo meglio il codice? Ho provato anche a fare copia-incolla, ma credo che ci metterei meno tempo a scrivermelo da capo. Scusami, ma io non sono molto bravo, però se posso, cerco di darti un aiuto ma così non ci capisco niente :( (colpa mia ovviamente).

RaouL.

khri81
13-05-2005, 01:55
io lo fatto identato bene ma quando lo incollo qui mi viene fuori cosi!!! :(

RaouL_BennetH
13-05-2005, 01:59
io lo fatto identato bene ma quando lo incollo qui mi viene fuori cosi!!! :(

fai così: il codice incollalo fra: code e /code (tra parentesi quadre)

tipo:


qui incolli il codice



Così la formattazione che dai resta.

khri81
13-05-2005, 10:10
fatto! ;)

khri81
17-05-2005, 10:34
aiuto help :( :( :( :( :( :cry: :cry: :cry:

khri81
20-05-2005, 00:01
help