root/win32/common/dirent.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


/*

 * 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$

 * $Author$

 * $Date$

 *

 */



#ifndef __STRICT_ANSI__



#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;         /* 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.

 * 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 */

        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

         */

        int                     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 */

        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 */

        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

         */

        int                     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__ */




/* [<][>][^][v][top][bottom][index][help] */