Busca de diretórios recursiva

1. Busca de diretórios recursiva

Ellen Camargo
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]);
}


  


2. stat.h

Enzo de Brito Ferber
EnzoFerber

(usa FreeBSD)

Enviado em 08/10/2006 - 10:46h

Olha só,

Eu uma vez fiz um mapeador de unidade, mais eu usei listas encadeadas para guardar o nome dos diretorios todos, e claro, usei a stat.h que nos possibilita saber qual o tipo do arquivo(diretorio, arquivo comun, link, unidade, etc). Sobre sua estrutura recursiva, vou ver se consigo fazer algo... Mas se você conseguir, me passa o codigo... :)

[]'s
Slackware_10






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts