From: Viktor M. <mih...@us...> - 2005-06-20 08:56:38
|
Update of /cvsroot/sblim/sfcb In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26151 Modified Files: classProvider.c Log Message: Bugs fixed: 1222699 Fixed Repository Directory Recognition. Index: classProvider.c =================================================================== RCS file: /cvsroot/sblim/sfcb/classProvider.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -d -r1.15 -r1.16 --- classProvider.c 13 Jun 2005 23:37:31 -0000 1.15 +++ classProvider.c 20 Jun 2005 08:56:30 -0000 1.16 @@ -384,7 +384,7 @@ static UtilHashTable *gatherNameSpaces(char *dn, UtilHashTable *ns, int first) { DIR *dir; - struct dirent *de; + struct dirent *de, *de_test; char *n; int l; ClassRegister *cr; @@ -397,20 +397,24 @@ dir=opendir(dn); if (dir) while ((de=readdir(dir))!=NULL) { - if (de->d_type==DT_DIR) { - if (strcmp(de->d_name,".")==0) continue; - if (strcmp(de->d_name,"..")==0) continue; - l=strlen(dn)+strlen(de->d_name)+4; - n=(char*)malloc(l+8); - strcpy(n,dn); - strcat(n,"/"); - strcat(n,de->d_name); - cr=newClassRegister(n); - if (cr) { - ns->ft->put(ns, n+nsBaseLen, cr); - gatherNameSpaces(n,ns,0); - } - } + if (strcmp(de->d_name,".")==0) continue; + if (strcmp(de->d_name,"..")==0) continue; + l=strlen(dn)+strlen(de->d_name)+4; + n=(char*)malloc(l+8); + strcpy(n,dn); + strcat(n,"/"); + strcat(n,de->d_name); + de_test = opendir(n); + if (de_test == NULL) { + free(n); + continue; + } + free(de_test); + cr=newClassRegister(n); + if (cr) { + ns->ft->put(ns, n+nsBaseLen, cr); + gatherNameSpaces(n,ns,0); + } } else if (first) { mlogf(M_ERROR,M_SHOW,"--- Repository %s not found\n",dn); |