- /*
- * DIRENT.H (formerly DIRLIB.H)
- *
- * by M. J. Weinstein Released to public domain 1-Jan-89
- *
- * Because I have heard that this feature (opendir, readdir, closedir)
- * it so useful for programmers coming from UNIX or attempting to port
- * UNIX code, and because it is reasonably light weight, I have included
- * it in the Mingw32 package. I have also added an implementation of
- * rewinddir, seekdir and telldir.
- * - Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
- *
- * This code is distributed in the hope that is will be useful but
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- * DISCLAIMED. This includeds but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- * $Revision: 1.2 $
- * $Author: sam $
- * $Date: 2002/11/10 18:04:23 $
- *
- */
- #ifndef __STRICT_ANSI__
- #ifndef _DIRENT_H_
- #define _DIRENT_H_
- #ifndef UNDER_CE
- #include <io.h>
- #endif
- #ifndef RC_INVOKED
- #ifdef __cplusplus
- extern "C" {
- #endif
- struct dirent
- {
- long d_ino; /* Always zero. */
- unsigned short d_reclen; /* Always zero. */
- unsigned short d_namlen; /* Length of name in d_name. */
- char* d_name; /* File name. */
- /* NOTE: The name in the dirent structure points to the name in the
- * finddata_t structure in the DIR. */
- };
- /*
- * This is an internal data structure. Good programmers will not use it
- * except as an argument to one of the functions below.
- */
- typedef struct
- {
- /* disk transfer area for this dir */
- WIN32_FIND_DATA dd_dta;
- /* dirent struct to return from dir (NOTE: this makes this thread
- * safe as long as only one thread uses a particular DIR struct at
- * a time) */
- struct dirent dd_dir;
- /* _findnext handle */
- long dd_handle;
- /*
- * Status of search:
- * 0 = not started yet (next entry to read is first entry)
- * -1 = off the end
- * positive = 0 based index of next entry
- */
- short dd_stat;
- /* given path for dir with search pattern (struct is extended) */
- char dd_name[1];
- } DIR;
- DIR* opendir (const char*);
- struct dirent* readdir (DIR*);
- int closedir (DIR*);
- void rewinddir (DIR*);
- long telldir (DIR*);
- void seekdir (DIR*, long);
- /* wide char versions */
- struct _wdirent
- {
- long d_ino; /* Always zero. */
- unsigned short d_reclen; /* Always zero. */
- unsigned short d_namlen; /* Length of name in d_name. */
- wchar_t* d_name; /* File name. */
- /* NOTE: The name in the dirent structure points to the name in the
- * wfinddata_t structure in the _WDIR. */
- };
- /*
- * This is an internal data structure. Good programmers will not use it
- * except as an argument to one of the functions below.
- */
- typedef struct
- {
- /* disk transfer area for this dir */
- WIN32_FIND_DATA dd_dta;
- /* dirent struct to return from dir (NOTE: this makes this thread
- * safe as long as only one thread uses a particular DIR struct at
- * a time) */
- struct _wdirent dd_dir;
- /* _findnext handle */
- long dd_handle;
- /*
- * Status of search:
- * 0 = not started yet (next entry to read is first entry)
- * -1 = off the end
- * positive = 0 based index of next entry
- */
- short dd_stat;
- /* given path for dir with search pattern (struct is extended) */
- wchar_t dd_name[1];
- } _WDIR;
- _WDIR* _wopendir (const wchar_t*);
- struct _wdirent* _wreaddir (_WDIR*);
- int _wclosedir (_WDIR*);
- void _wrewinddir (_WDIR*);
- long _wtelldir (_WDIR*);
- void _wseekdir (_WDIR*, long);
- #ifdef __cplusplus
- }
- #endif
- #endif /* Not RC_INVOKED */
- #endif /* Not _DIRENT_H_ */
- #endif /* Not __STRICT_ANSI__ */