| 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 | * Martin Otter, 2001/01/06: |
|---|
| 19 | * Removed: #ifndef __STRICT_ANSI__ |
|---|
| 20 | * #include <_mingw.h> |
|---|
| 21 | * since not needed in Modelica |
|---|
| 22 | */ |
|---|
| 23 | |
|---|
| 24 | #ifndef _DIRENT_H_ |
|---|
| 25 | #define _DIRENT_H_ |
|---|
| 26 | |
|---|
| 27 | #include <io.h> |
|---|
| 28 | |
|---|
| 29 | #ifdef __cplusplus |
|---|
| 30 | extern "C" { |
|---|
| 31 | #endif |
|---|
| 32 | |
|---|
| 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 | /* |
|---|
| 44 | * This is an internal data structure. Good programmers will not use it |
|---|
| 45 | * except as an argument to one of the functions below. |
|---|
| 46 | */ |
|---|
| 47 | typedef struct |
|---|
| 48 | { |
|---|
| 49 | /* disk transfer area for this dir */ |
|---|
| 50 | struct _finddata_t dd_dta; |
|---|
| 51 | |
|---|
| 52 | /* dirent struct to return from dir (NOTE: this makes this thread |
|---|
| 53 | * safe as long as only one thread uses a particular DIR struct at |
|---|
| 54 | * a time) */ |
|---|
| 55 | struct dirent dd_dir; |
|---|
| 56 | |
|---|
| 57 | /* _findnext handle */ |
|---|
| 58 | long dd_handle; |
|---|
| 59 | |
|---|
| 60 | /* |
|---|
| 61 | * Status of search: |
|---|
| 62 | * 0 = not started yet (next entry to read is first entry) |
|---|
| 63 | * -1 = off the end |
|---|
| 64 | * positive = 0 based index of next entry |
|---|
| 65 | */ |
|---|
| 66 | short dd_stat; |
|---|
| 67 | |
|---|
| 68 | /* given path for dir with search pattern (struct is extended) */ |
|---|
| 69 | char dd_name[1]; |
|---|
| 70 | } DIR; |
|---|
| 71 | |
|---|
| 72 | |
|---|
| 73 | DIR* opendir (const char*); |
|---|
| 74 | struct dirent* readdir (DIR*); |
|---|
| 75 | int closedir (DIR*); |
|---|
| 76 | void rewinddir (DIR*); |
|---|
| 77 | long telldir (DIR*); |
|---|
| 78 | void seekdir (DIR*, long); |
|---|
| 79 | |
|---|
| 80 | #ifdef __cplusplus |
|---|
| 81 | } |
|---|
| 82 | #endif |
|---|
| 83 | |
|---|
| 84 | #endif /* Not _DIRENT_H_ */ |
|---|