2 #include <sys/stat.h>
\r
9 opendir(const char* directory_name)
\r
14 if(NULL == directory_name)
\r
20 if(0 != stat(directory_name, &sb))
\r
22 /* directory not found */
\r
27 if(0 == S_ISDIR(sb.st_mode))
\r
29 /* it's not a directory */
\r
35 dir = (DIR *)calloc(1,sizeof(DIR));
\r
43 if('\\' != dir->directory_name[strlen(directory_name) - 1])
\r
44 sprintf(dir->directory_name,"%s\\*",directory_name);
\r
46 sprintf(dir->directory_name,"%s*",directory_name);
\r
48 dir->file_handle = INVALID_HANDLE_VALUE;
\r
59 if(INVALID_HANDLE_VALUE != dir->file_handle)
\r
60 FindClose(dir->file_handle);
\r
73 WIN32_FIND_DATA wfd = {0};
\r
82 dir->file_handle = FindFirstFile(dir->directory_name, &wfd);
\r
84 if(!FindNextFile(dir->file_handle, &wfd))
\r
89 strcpy(dir->entry.d_name, wfd.cFileName);
\r
91 return &(dir->entry);
\r
103 if(INVALID_HANDLE_VALUE != dir->file_handle)
\r
105 FindClose(dir->file_handle);
\r
106 dir->file_handle = INVALID_HANDLE_VALUE;
\r
124 seekdir(DIR* dir, off_t offset)
\r
126 WIN32_FIND_DATA wfd = {0};
\r
134 if(INVALID_HANDLE_VALUE != dir->file_handle)
\r
136 FindClose(dir->file_handle);
\r
137 dir->file_handle = INVALID_HANDLE_VALUE;
\r
141 dir->file_handle = FindFirstFile(dir->directory_name, &wfd);
\r
143 dir->pos += offset;
\r
147 if(!FindNextFile(dir->file_handle, &wfd))
\r