text: /*
   * DIRENT.H (formerly DIRLIB.H)
   * This file has no copyright assigned and is placed in the Public Domain.
   * This file is a part of the mingw-runtime package.
   * No warranty is given; refer to the file DISCLAIMER within the package.
   *
   */
  #ifndef _DIRENT_H_
  #define _DIRENT_H_
  
  /* All the headers include this file. */
  #include <_mingw.h>
  
  #include <io.h>
  
  #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[FILENAME_MAX]; /* File name. */
  };
  
  /*
   * This is an internal data structure. Good programmers will not use it
   * except as an argument to one of the functions below.
   * dd_stat field is now int (was short in older versions).
   */
  typedef struct
  {
  	/* disk transfer area for this dir */
  	struct _finddata_t	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 */
  	intptr_t		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
  	 */
  	int			dd_stat;
  
  	/* given path for dir with search pattern (struct is extended) */
  	char			dd_name[1];
  } DIR;
  
  DIR* __cdecl __MINGW_NOTHROW opendir (const char*);
  struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);
  int __cdecl __MINGW_NOTHROW closedir (DIR*);
  void __cdecl __MINGW_NOTHROW rewinddir (DIR*);
  long __cdecl __MINGW_NOTHROW telldir (DIR*);
  void __cdecl __MINGW_NOTHROW 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[FILENAME_MAX]; /* File name. */
  };
  
  /*
   * 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 */
  	struct _wfinddata_t	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 */
  	intptr_t		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
  	 */
  	int			dd_stat;
  
  	/* given path for dir with search pattern (struct is extended) */
  	wchar_t			dd_name[1];
  } _WDIR;
  
  _WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);
  struct _wdirent*  __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);
  int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);
  void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);
  long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);
  void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);
  
  
  #ifdef	__cplusplus
  }
  #endif
  
  #endif	/* Not RC_INVOKED */
  
  #endif	/* Not _DIRENT_H_ */
  