stella_650
24-06-2008, 13:57
Buon pomeriggio a tutti,
ho bisogno di un aiutino per una prima parte di un programma in cui dopo aver ricercato l'estensione passata in input rispetto alla cartella il cui nome è sulla riga di comando, mi si chiede di verificare i diritti di lettura per altri e la dimensione.
Il problema è che cosi' come segue dal codice, in output non mi vengono calcolate bene le dimensioni (cioè mi esce sempre 0) e anche i permessi risultano sempre, cioè anche se da shell con chmod cambio il permesso, ottengo sempre lo stesso output...Qual è il problema allora??
int main(int argc, char *argv[])
{
DIR *dp;
struct stat st;
struct dirent *drn;
char nomefile[255];
int sizeminima=0;
if(argc!=3)
{
printf("Errore nell'utilizzo del programma <./Trova> <ext> <directory>\n");
exit(-1);
}
if((dp=opendir(argv[2]))!=NULL)
{
while((drn=readdir(dp))!=NULL)
{
if(strstr(drn->d_name,argv[1]))
{
printf("File %s\n",drn->d_name);
//Verificare i diritti di lettura per altri
strcpy(nomefile,drn->d_name);
stat(nomefile,&st);
if(st.st_mode & S_IROTH)
{
printf("Il file %s ha il permesso di lettura per altri\n",nomefile);
//stat(nomefile,&st);
//mi esce dimensione 0
printf("Il file %s ha dimensione %ld\n",nomefile,st.st_size);
}
}
}
}
closedir(dp);
}
Sarei grata per l'aiuto...grazie in anticipo
ho bisogno di un aiutino per una prima parte di un programma in cui dopo aver ricercato l'estensione passata in input rispetto alla cartella il cui nome è sulla riga di comando, mi si chiede di verificare i diritti di lettura per altri e la dimensione.
Il problema è che cosi' come segue dal codice, in output non mi vengono calcolate bene le dimensioni (cioè mi esce sempre 0) e anche i permessi risultano sempre, cioè anche se da shell con chmod cambio il permesso, ottengo sempre lo stesso output...Qual è il problema allora??
int main(int argc, char *argv[])
{
DIR *dp;
struct stat st;
struct dirent *drn;
char nomefile[255];
int sizeminima=0;
if(argc!=3)
{
printf("Errore nell'utilizzo del programma <./Trova> <ext> <directory>\n");
exit(-1);
}
if((dp=opendir(argv[2]))!=NULL)
{
while((drn=readdir(dp))!=NULL)
{
if(strstr(drn->d_name,argv[1]))
{
printf("File %s\n",drn->d_name);
//Verificare i diritti di lettura per altri
strcpy(nomefile,drn->d_name);
stat(nomefile,&st);
if(st.st_mode & S_IROTH)
{
printf("Il file %s ha il permesso di lettura per altri\n",nomefile);
//stat(nomefile,&st);
//mi esce dimensione 0
printf("Il file %s ha dimensione %ld\n",nomefile,st.st_size);
}
}
}
}
closedir(dp);
}
Sarei grata per l'aiuto...grazie in anticipo