win32_dirent.h
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:1k
源码类别:

GIS编程

开发平台:

Visual C++

  1. #ifndef __win32_dirent__
  2. #define __win32_dirent__
  3. /* For Win32 that lacks Unix direct support. */
  4. #include <windows.h>
  5. #include <string.h>
  6. struct dirent {
  7.   char d_name[MAX_PATH];
  8. };
  9. typedef struct {
  10.   WIN32_FIND_DATA wfd;
  11.   HANDLE hFind;
  12.   struct dirent de;
  13. } DIR;
  14. static DIR *
  15. opendir(char *pSpec)
  16. {
  17.   DIR *pDir = malloc(sizeof(DIR));
  18.   /* XXX Windows 95 has problems opening up "." though Windows NT does this
  19.      fine?  Open "*" instead of "." to be safe. -mjk */
  20.   pDir->hFind = FindFirstFile(strcmp(pSpec, ".") ? pSpec : "*",
  21.     &pDir->wfd);
  22.   return pDir;
  23. }
  24. static void
  25. closedir(DIR * pDir)
  26. {
  27.   FindClose(pDir);
  28.   free(pDir);
  29. }
  30. static struct dirent *
  31. readdir(DIR *pDir)
  32. {
  33.   if (pDir->hFind) {
  34.     strcpy(pDir->de.d_name, pDir->wfd.cFileName);
  35.     if (!FindNextFile(pDir->hFind, &pDir->wfd))
  36.       pDir->hFind = NULL;
  37.     return &pDir->de;
  38.   }
  39.   return NULL;
  40. }
  41. #define fclose(f)  { if (f!=NULL) fclose(f); }
  42. #endif /* __win32_dirent__ */