compat / vcbuild / include / dirent.hon commit Merge branch 'jc/maint-refs-dangling' into maint (970957d)
   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 a part of the mingw-runtime package.
   5 *
   6 * The mingw-runtime package and its code is distributed in the hope that it
   7 * will be useful but WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESSED OR
   8 * IMPLIED ARE HEREBY DISCLAIMED.  This includes but is not limited to
   9 * warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10 *
  11 * You are free to use this package and its code without limitation.
  12 */
  13#ifndef _DIRENT_H_
  14#define _DIRENT_H_
  15#include <io.h>
  16
  17#define PATH_MAX 512
  18
  19#define __MINGW_NOTHROW
  20
  21#ifndef RC_INVOKED
  22
  23#ifdef __cplusplus
  24extern "C" {
  25#endif
  26
  27struct dirent
  28{
  29        long            d_ino;          /* Always zero. */
  30        unsigned short  d_reclen;       /* Always zero. */
  31        unsigned short  d_namlen;       /* Length of name in d_name. */
  32        char            d_name[FILENAME_MAX]; /* File name. */
  33};
  34
  35/*
  36 * This is an internal data structure. Good programmers will not use it
  37 * except as an argument to one of the functions below.
  38 * dd_stat field is now int (was short in older versions).
  39 */
  40typedef struct
  41{
  42        /* disk transfer area for this dir */
  43        struct _finddata_t      dd_dta;
  44
  45        /* dirent struct to return from dir (NOTE: this makes this thread
  46         * safe as long as only one thread uses a particular DIR struct at
  47         * a time) */
  48        struct dirent           dd_dir;
  49
  50        /* _findnext handle */
  51        long                    dd_handle;
  52
  53        /*
  54         * Status of search:
  55         *   0 = not started yet (next entry to read is first entry)
  56         *  -1 = off the end
  57         *   positive = 0 based index of next entry
  58         */
  59        int                     dd_stat;
  60
  61        /* given path for dir with search pattern (struct is extended) */
  62        char                    dd_name[PATH_MAX+3];
  63} DIR;
  64
  65DIR* __cdecl __MINGW_NOTHROW opendir (const char*);
  66struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);
  67int __cdecl __MINGW_NOTHROW closedir (DIR*);
  68void __cdecl __MINGW_NOTHROW rewinddir (DIR*);
  69long __cdecl __MINGW_NOTHROW telldir (DIR*);
  70void __cdecl __MINGW_NOTHROW seekdir (DIR*, long);
  71
  72
  73/* wide char versions */
  74
  75struct _wdirent
  76{
  77        long            d_ino;          /* Always zero. */
  78        unsigned short  d_reclen;       /* Always zero. */
  79        unsigned short  d_namlen;       /* Length of name in d_name. */
  80        wchar_t         d_name[FILENAME_MAX]; /* File name. */
  81};
  82
  83/*
  84 * This is an internal data structure. Good programmers will not use it
  85 * except as an argument to one of the functions below.
  86 */
  87typedef struct
  88{
  89        /* disk transfer area for this dir */
  90        //struct _wfinddata_t   dd_dta;
  91
  92        /* dirent struct to return from dir (NOTE: this makes this thread
  93         * safe as long as only one thread uses a particular DIR struct at
  94         * a time) */
  95        struct _wdirent         dd_dir;
  96
  97        /* _findnext handle */
  98        long                    dd_handle;
  99
 100        /*
 101         * Status of search:
 102         *   0 = not started yet (next entry to read is first entry)
 103         *  -1 = off the end
 104         *   positive = 0 based index of next entry
 105         */
 106        int                     dd_stat;
 107
 108        /* given path for dir with search pattern (struct is extended) */
 109        wchar_t                 dd_name[1];
 110} _WDIR;
 111
 112
 113
 114_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);
 115struct _wdirent*  __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);
 116int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);
 117void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);
 118long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);
 119void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);
 120
 121
 122#ifdef  __cplusplus
 123}
 124#endif
 125
 126#endif  /* Not RC_INVOKED */
 127
 128#endif  /* Not _DIRENT_H_ */