Removed scandir() for Solaris compatibility

SVN revision: 181
This commit is contained in:
Stefan Ritt 2002-07-25 09:22:05 +00:00
parent bc79aadf02
commit 11937112e2

30
elogd.c
View File

@ -6,6 +6,9 @@
Contents: Web server program for Electronic Logbook ELOG Contents: Web server program for Electronic Logbook ELOG
$Log$ $Log$
Revision 2.47 2002/07/25 09:22:05 midas
Removed scandir() for Solaris compatibility
Revision 2.46 2002/07/23 13:50:11 midas Revision 2.46 2002/07/23 13:50:11 midas
Improved speed for threaded display Improved speed for threaded display
@ -1392,28 +1395,25 @@ INT ss_file_find(char *path, char *pattern, char **plist)
\********************************************************************/ \********************************************************************/
{ {
#ifdef OS_UNIX #ifdef OS_UNIX
int i, j, n; DIR *dir_pointer;
struct dirent **namelist; struct dirent *dp;
n = scandir(path, &namelist, NULL, NULL); if ((dir_pointer = opendir(path)) == NULL)
if (n <= 0)
return 0; return 0;
*plist = (char *) malloc(MAX_PATH_LENGTH); *plist = (char *) malloc(MAX_PATH_LENGTH);
i = 0;
for (i=j=0 ; i<n ; i++) for (dp = readdir(dir_pointer); dp != NULL; dp = readdir(dir_pointer))
{ {
if (fnmatch1(pattern, namelist[i]->d_name) == 0) if (fnmatch1(pattern, dp->d_name) == 0)
{ {
*plist = (char *)realloc(*plist, (j+1)*MAX_PATH_LENGTH); *plist = (char *)realloc(*plist, (i+1)*MAX_PATH_LENGTH);
strncpy(*plist+(j*MAX_PATH_LENGTH), namelist[i]->d_name, strlen(namelist[i]->d_name)); strncpy(*plist+(i*MAX_PATH_LENGTH), dp->d_name, strlen(dp->d_name));
*(*plist+(j*MAX_PATH_LENGTH)+strlen(namelist[i]->d_name)) = '\0'; *(*plist+(i*MAX_PATH_LENGTH)+strlen(dp->d_name)) = '\0';
j++; i++;
seekdir(dir_pointer, telldir(dir_pointer));
} }
} }
free(namelist); closedir(dir_pointer);
return j;
#endif #endif
#ifdef OS_WINNT #ifdef OS_WINNT