1
I have a function that searches file passed by parameter in directories using C language on Linux, I am able to enter the subdirectories and do the search, but when finishing the files in the subdirectory I can’t go back to the previous directory and continue the search.
int buscaArquivo(char *arquivo, char *diretorio){
dir = opendir(diretorio);
if(dir==NULL){
printf("\n não foi possivel abrir o diretorio %s", diretorio);
return -1;
}
finito = 0;
do{
entry = readdir(dir);
if(entry == NULL){
printf("\nfim do diretorio");
closedir(dir);
finito = 1;
}else{
char entrada[PATH_MAX];
snprintf(entrada,sizeof(entrada),"%s/%s",
diretorio, entry->d_name);
if(entry->d_type == 4){
// printf("\n%s",entry->d_name);
}
if(strcmp(entry->d_name,arquivo)== 0) //compara nome do arquivo
printf("\n%s/%s\n", diretorio,arquivo); // achou
if( (strcmp(".",entry->d_name)) && (strcmp("..",entry->d_name)) && (entry->d_type == 4) ){
printf("\nentrou no dir %s",entry->d_name);
buscaArquivo(arquivo,entrada);
}
}
}while(finito == 0);
return 0;
}