From 11937112e291f0852f71544c875353752260b97c Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Thu, 25 Jul 2002 09:22:05 +0000 Subject: [PATCH] Removed scandir() for Solaris compatibility SVN revision: 181 --- elogd.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/elogd.c b/elogd.c index ea027581..8b61f3aa 100755 --- a/elogd.c +++ b/elogd.c @@ -6,6 +6,9 @@ Contents: Web server program for Electronic Logbook ELOG $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 Improved speed for threaded display @@ -1392,28 +1395,25 @@ INT ss_file_find(char *path, char *pattern, char **plist) \********************************************************************/ { #ifdef OS_UNIX - int i, j, n; - struct dirent **namelist; + DIR *dir_pointer; + struct dirent *dp; - n = scandir(path, &namelist, NULL, NULL); - - if (n <= 0) + if ((dir_pointer = opendir(path)) == NULL) return 0; - *plist = (char *) malloc(MAX_PATH_LENGTH); - - for (i=j=0 ; id_name) == 0) + if (fnmatch1(pattern, dp->d_name) == 0) { - *plist = (char *)realloc(*plist, (j+1)*MAX_PATH_LENGTH); - strncpy(*plist+(j*MAX_PATH_LENGTH), namelist[i]->d_name, strlen(namelist[i]->d_name)); - *(*plist+(j*MAX_PATH_LENGTH)+strlen(namelist[i]->d_name)) = '\0'; - j++; + *plist = (char *)realloc(*plist, (i+1)*MAX_PATH_LENGTH); + strncpy(*plist+(i*MAX_PATH_LENGTH), dp->d_name, strlen(dp->d_name)); + *(*plist+(i*MAX_PATH_LENGTH)+strlen(dp->d_name)) = '\0'; + i++; + seekdir(dir_pointer, telldir(dir_pointer)); } } - free(namelist); - return j; + closedir(dir_pointer); #endif #ifdef OS_WINNT