master
  1/*
  2 * DIRENT.H (formerly DIRLIB.H)
  3 * This file has no copyright assigned and is placed in the Public Domain.
  4 * This file is part of the mingw-runtime package.
  5 * No warranty is given; refer to the file DISCLAIMER within the package.
  6 *
  7 */
  8
  9#ifndef _DIRENT_H_
 10#define _DIRENT_H_
 11
 12/* All the headers include this file. */
 13#include <crtdefs.h>
 14
 15#include <io.h>
 16
 17#ifndef RC_INVOKED
 18
 19#pragma pack(push,_CRT_PACKING)
 20
 21#ifdef __cplusplus
 22extern "C" {
 23#endif
 24
 25struct dirent
 26{
 27	long		d_ino;		/* Always zero. */
 28	unsigned short	d_reclen;	/* Always zero. */
 29	unsigned short	d_namlen;	/* Length of name in d_name. */
 30	char		d_name[260]; /* [FILENAME_MAX] */ /* File name. */
 31};
 32
 33/*
 34 * This is an internal data structure. Good programmers will not use it
 35 * except as an argument to one of the functions below.
 36 * dd_stat field is now int (was short in older versions).
 37 */
 38typedef struct
 39{
 40	/* disk transfer area for this dir */
 41	struct _finddata_t	dd_dta;
 42
 43	/* dirent struct to return from dir (NOTE: this makes this thread
 44	 * safe as long as only one thread uses a particular DIR struct at
 45	 * a time) */
 46	struct dirent		dd_dir;
 47
 48	/* _findnext handle */
 49	intptr_t		dd_handle;
 50
 51	/*
 52	 * Status of search:
 53	 *   0 = not started yet (next entry to read is first entry)
 54	 *  -1 = off the end
 55	 *   positive = 0 based index of next entry
 56	 */
 57	int			dd_stat;
 58
 59	/* given path for dir with search pattern (struct is extended) */
 60	char			dd_name[1];
 61} DIR;
 62
 63DIR* __cdecl __MINGW_NOTHROW opendir (const char*);
 64struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);
 65int __cdecl __MINGW_NOTHROW closedir (DIR*);
 66void __cdecl __MINGW_NOTHROW rewinddir (DIR*);
 67long __cdecl __MINGW_NOTHROW telldir (DIR*);
 68void __cdecl __MINGW_NOTHROW seekdir (DIR*, long);
 69
 70
 71/* wide char versions */
 72
 73struct _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[260]; /* [FILENAME_MAX] */ /* File name. */
 79};
 80
 81/*
 82 * This is an internal data structure. Good programmers will not use it
 83 * except as an argument to one of the functions below.
 84 */
 85typedef struct
 86{
 87	/* disk transfer area for this dir */
 88	struct _wfinddata_t	dd_dta;
 89
 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
 95	/* _findnext handle */
 96	intptr_t		dd_handle;
 97
 98	/*
 99	 * Status of search:
100	 *   0 = not started yet (next entry to read is first entry)
101	 *  -1 = off the end
102	 *   positive = 0 based index of next entry
103	 */
104	int			dd_stat;
105
106	/* given path for dir with search pattern (struct is extended) */
107	wchar_t			dd_name[1];
108} _WDIR;
109
110_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);
111struct _wdirent* __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);
112int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);
113void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);
114long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);
115void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);
116
117
118#ifdef	__cplusplus
119}
120#endif
121
122#pragma pack(pop)
123
124#endif	/* Not RC_INVOKED */
125
126#endif	/* Not _DIRENT_H_ */
127