dirent.h
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:3k
源码类别:

多媒体

开发平台:

MultiPlatform

  1. /*
  2.  * DIRENT.H (formerly DIRLIB.H)
  3.  *
  4.  * by M. J. Weinstein   Released to public domain 1-Jan-89
  5.  *
  6.  * Because I have heard that this feature (opendir, readdir, closedir)
  7.  * it so useful for programmers coming from UNIX or attempting to port
  8.  * UNIX code, and because it is reasonably light weight, I have included
  9.  * it in the Mingw32 package. I have also added an implementation of
  10.  * rewinddir, seekdir and telldir.
  11.  *   - Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  12.  *
  13.  *  This code is distributed in the hope that is will be useful but
  14.  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  15.  *  DISCLAIMED. This includeds but is not limited to warranties of
  16.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  17.  *
  18.  * $Revision: 1.2 $
  19.  * $Author: sam $
  20.  * $Date: 2002/11/10 18:04:23 $
  21.  *
  22.  */
  23. #ifndef __STRICT_ANSI__
  24. #ifndef _DIRENT_H_
  25. #define _DIRENT_H_
  26. #ifndef UNDER_CE
  27. #include <io.h>
  28. #endif
  29. #ifndef RC_INVOKED
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33. struct dirent
  34. {
  35. long d_ino; /* Always zero. */
  36. unsigned short d_reclen; /* Always zero. */
  37. unsigned short d_namlen; /* Length of name in d_name. */
  38. char* d_name; /* File name. */
  39. /* NOTE: The name in the dirent structure points to the name in the
  40.  *       finddata_t structure in the DIR. */
  41. };
  42. /*
  43.  * This is an internal data structure. Good programmers will not use it
  44.  * except as an argument to one of the functions below.
  45.  */
  46. typedef struct
  47. {
  48. /* disk transfer area for this dir */
  49. WIN32_FIND_DATA dd_dta;
  50. /* dirent struct to return from dir (NOTE: this makes this thread
  51.  * safe as long as only one thread uses a particular DIR struct at
  52.  * a time) */
  53. struct dirent dd_dir;
  54. /* _findnext handle */
  55. long dd_handle;
  56. /*
  57.          * Status of search:
  58.  *   0 = not started yet (next entry to read is first entry)
  59.  *  -1 = off the end
  60.  *   positive = 0 based index of next entry
  61.  */
  62. short dd_stat;
  63. /* given path for dir with search pattern (struct is extended) */
  64. char dd_name[1];
  65. } DIR;
  66. DIR* opendir (const char*);
  67. struct dirent* readdir (DIR*);
  68. int closedir (DIR*);
  69. void rewinddir (DIR*);
  70. long telldir (DIR*);
  71. void seekdir (DIR*, long);
  72. /* wide char versions */
  73. struct _wdirent
  74. {
  75. long d_ino; /* Always zero. */
  76. unsigned short d_reclen; /* Always zero. */
  77. unsigned short d_namlen; /* Length of name in d_name. */
  78. wchar_t* d_name; /* File name. */
  79. /* NOTE: The name in the dirent structure points to the name in the
  80.  *       wfinddata_t structure in the _WDIR. */
  81. };
  82. /*
  83.  * This is an internal data structure. Good programmers will not use it
  84.  * except as an argument to one of the functions below.
  85.  */
  86. typedef struct
  87. {
  88. /* disk transfer area for this dir */
  89. WIN32_FIND_DATA dd_dta;
  90. /* dirent struct to return from dir (NOTE: this makes this thread
  91.  * safe as long as only one thread uses a particular DIR struct at
  92.  * a time) */
  93. struct _wdirent dd_dir;
  94. /* _findnext handle */
  95. long dd_handle;
  96. /*
  97.          * Status of search:
  98.  *   0 = not started yet (next entry to read is first entry)
  99.  *  -1 = off the end
  100.  *   positive = 0 based index of next entry
  101.  */
  102. short dd_stat;
  103. /* given path for dir with search pattern (struct is extended) */
  104. wchar_t dd_name[1];
  105. } _WDIR;
  106. _WDIR* _wopendir (const wchar_t*);
  107. struct _wdirent* _wreaddir (_WDIR*);
  108. int _wclosedir (_WDIR*);
  109. void _wrewinddir (_WDIR*);
  110. long _wtelldir (_WDIR*);
  111. void _wseekdir (_WDIR*, long);
  112. #ifdef __cplusplus
  113. }
  114. #endif
  115. #endif /* Not RC_INVOKED */
  116. #endif /* Not _DIRENT_H_ */
  117. #endif /* Not __STRICT_ANSI__ */