
elllen
(usa Kurumin)
Enviado em 07/10/2006 - 15:59h
Olá, estou tentando fazer um trabalho onde o usuário digita o nome do arquivo a ser procurado e o diretorio em q quer buscar, a busca deve percorrer os diretorios e subdiretorios.
Se o usuário nao digitar o diretorio de busca, ele busca no diretorio atual
o problema esta na função recursiva, ele nao está entrando no subdiretorio
Alguem pode me ajudar?
#include <sys/types.h>
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int buscaarquivo(char *arquivo, char *diretorio){
DIR *dir;
struct dirent *entry;
int result=1;
if((dir = opendir(diretorio))){
while(entry = readdir(dir)){
printf("%s\n",entry->d_name); //coloquei isso daqui pra ele lista tudo ja
printf("%d\n",entry->d_off); // q nao dava certo T__T
printf("%d\n",entry->d_ino);
printf("%d\n",entry->d_reclen);
printf("%d\n",entry->d_type);
if(strcmp(entry->d_name,arquivo)== 0) //compara nome do arquivo
printf("\nencontrou\n");
if((opendir(entry->d_name)) && (strcmp(entry->d_name,".") != 0) && (strcmp(entry->d_name,"..") != 0 )){ //compara se o tipo é 4 e se nao é . nem ..
printf("\n%s\n",entry->d_name); //imprime o nome do diretorio
buscaarquivo(arquivo, entry->d_name); //chama novamente a funçao
}
} //criterio de parada é qdo ele nao acha mais diretorio no diretorio em q está
closedir(dir);
result=0;
}
else
perror("opendir()");
return result;
}
int main (int argc, char **argv){
char *arq;
char *dire;
if((argc < 2)||(argc >3))
printf("Erro de argumentos");
else
if(argc == 2){
buscaarquivo(argv[1],".");
}
else
buscaarquivo(argv[1],argv[2]);
}