26 #ifndef _GAZEBO_WIN_DIRENT_H_ 27 #define _GAZEBO_WIN_DIRENT_H_ 32 #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && \ 33 !defined(_IA64_) && !defined(_AMD64_) && defined(_M_IX86) 36 #if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && \ 37 !defined(_IA64_) && !defined(_AMD64_) && defined(_M_AMD64) 50 #include <sys/types.h> 55 #define _DIRENT_HAVE_D_TYPE 58 #define _DIRENT_HAVE_D_NAMLEN 61 #if !defined(FILE_ATTRIBUTE_DEVICE) 62 # define FILE_ATTRIBUTE_DEVICE 0x40 68 # define S_IFMT _S_IFMT 72 # define S_IFDIR _S_IFDIR 76 # define S_IFCHR _S_IFCHR 78 #if !defined(S_IFFIFO) 80 # define S_IFFIFO _S_IFFIFO 84 # define S_IFREG _S_IFREG 88 # define S_IREAD _S_IREAD 90 #if !defined(S_IWRITE) 92 # define S_IWRITE _S_IWRITE 96 # define S_IEXEC _S_IEXEC 100 # define S_IFIFO _S_IFIFO 102 #if !defined(S_IFBLK) 106 #if !defined(S_IFLNK) 110 #if !defined(S_IFSOCK) 115 #if defined(_MSC_VER) 117 # define S_IRUSR S_IREAD 119 # define S_IWUSR S_IWRITE 137 #if !defined(PATH_MAX) 138 # define PATH_MAX MAX_PATH 140 #if !defined(FILENAME_MAX) 141 # define FILENAME_MAX MAX_PATH 143 #if !defined(NAME_MAX) 144 # define NAME_MAX FILENAME_MAX 149 #define DT_REG S_IFREG 150 #define DT_DIR S_IFDIR 151 #define DT_FIFO S_IFIFO 152 #define DT_SOCK S_IFSOCK 153 #define DT_CHR S_IFCHR 154 #define DT_BLK S_IFBLK 155 #define DT_LNK S_IFLNK 158 #define IFTODT(mode) ((mode) & S_IFMT) 159 #define DTTOIF(type) (type) 165 #define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO) 166 #define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR) 167 #define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG) 168 #define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK) 169 #define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK) 170 #define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) 171 #define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK) 174 #define _D_EXACT_NAMLEN(p) ((p)->d_namlen) 177 #define _D_ALLOC_NAMLEN(p) (PATH_MAX) 228 # define wdirent _wdirent 230 # define wopendir _wopendir 231 # define wreaddir _wreaddir 232 # define wclosedir _wclosedir 233 # define wrewinddir _wrewinddir 273 size_t *pReturnValue,
280 size_t *pReturnValue,
283 const wchar_t *wcstr,
297 if (dirname ==
NULL || dirname[0] ==
'\0')
304 dirp =
static_cast<_WDIR*
>(malloc(
sizeof(
struct _WDIR)));
310 dirp->
handle = INVALID_HANDLE_VALUE;
315 n = GetFullPathNameW(dirname, 0,
NULL,
NULL);
318 dirp->
patt =
static_cast<wchar_t*
>(malloc(
sizeof(
wchar_t) * n + 16));
324 n = GetFullPathNameW(dirname, n, dirp->
patt,
NULL);
400 WIN32_FIND_DATAW *datap;
417 while (n + 1 <
PATH_MAX && datap->cFileName[n] != 0)
419 entp->
d_name[n] = datap->cFileName[n];
428 attr = datap->dwFileAttributes;
433 else if ((attr & FILE_ATTRIBUTE_DIRECTORY) != 0)
464 if (dirp->
handle != INVALID_HANDLE_VALUE)
467 dirp->
handle = INVALID_HANDLE_VALUE;
501 if (dirp->
handle != INVALID_HANDLE_VALUE)
514 WIN32_FIND_DATAW *datap;
518 if (dirp->
handle != INVALID_HANDLE_VALUE)
545 else if (dirp->
handle != INVALID_HANDLE_VALUE)
548 if (FindNextFileW (dirp->
handle, &dirp->
data) != FALSE)
557 dirp->
handle = INVALID_HANDLE_VALUE;
576 if (dirname ==
NULL || dirname[0] ==
'\0')
583 dirp =
static_cast<DIR*
>(malloc(
sizeof(
struct DIR)));
663 size_t *pReturnValue,
671 # if defined(_MSC_VER) && _MSC_VER >= 1400 673 error = mbstowcs_s(pReturnValue, wcstr, sizeInWords, mbstr, count);
681 n = mbstowcs(wcstr, mbstr, sizeInWords);
682 if (!wcstr || n < count)
685 if (wcstr && sizeInWords)
687 if (n >= sizeInWords)
697 *pReturnValue = n + 1;
714 size_t *pReturnValue,
718 const wchar_t *wcstr,
723 # if defined(_MSC_VER) && _MSC_VER >= 1400 726 error = wcstombs_s(pReturnValue, mbstr, sizeInBytes, wcstr, count);
734 n = wcstombs(mbstr, wcstr, sizeInBytes);
735 if (!mbstr || n < count)
738 if (mbstr && sizeInBytes)
740 if (n >= sizeInBytes)
750 *pReturnValue = n + 1;
769 # if defined(_MSC_VER) && _MSC_VER >= 1400 static struct _wdirent * _wreaddir(_WDIR *dirp)
Definition: win_dirent.h:398
static int dirent_wcstombs_s(size_t *pReturnValue, char *mbstr, size_t sizeInBytes, const wchar_t *wcstr, size_t count)
Definition: win_dirent.h:713
static void rewinddir(DIR *dirp)
Definition: win_dirent.h:655
uint16_t d_reclen
Definition: win_dirent.h:243
int cached
Definition: win_dirent.h:212
int64_t d_ino
Definition: win_dirent.h:240
int d_type
Definition: win_dirent.h:249
#define DT_CHR
Definition: win_dirent.h:153
Definition: win_dirent.h:237
size_t d_namlen
Definition: win_dirent.h:246
static DIR * opendir(const char *dirname)
Definition: win_dirent.h:570
Definition: win_dirent.h:256
static int closedir(DIR *dirp)
Definition: win_dirent.h:631
wchar_t * patt
Definition: win_dirent.h:218
static WIN32_FIND_DATAW * dirent_first(_WDIR *dirp)
Definition: win_dirent.h:512
int64_t d_ino
Definition: win_dirent.h:187
#define FILE_ATTRIBUTE_DEVICE
Definition: win_dirent.h:62
static void dirent_set_errno(int error)
Definition: win_dirent.h:767
static WIN32_FIND_DATAW * dirent_next(_WDIR *dirp)
Definition: win_dirent.h:534
Definition: win_dirent.h:184
static int _wclosedir(_WDIR *dirp)
Definition: win_dirent.h:458
int d_type
Definition: win_dirent.h:196
#define NULL
Definition: CommonTypes.hh:31
HANDLE handle
Definition: win_dirent.h:215
static void _wrewinddir(_WDIR *dirp)
Definition: win_dirent.h:496
static int dirent_mbstowcs_s(size_t *pReturnValue, wchar_t *wcstr, size_t sizeInWords, const char *mbstr, size_t count)
Definition: win_dirent.h:662
uint16_t d_reclen
Definition: win_dirent.h:190
#define PATH_MAX
Definition: win_dirent.h:138
static _WDIR * _wopendir(const wchar_t *dirname)
Definition: win_dirent.h:291
#define DT_DIR
Definition: win_dirent.h:150
#define DT_REG
Definition: win_dirent.h:149
struct _WDIR * wdirp
Definition: win_dirent.h:259
size_t d_namlen
Definition: win_dirent.h:193
struct _wdirent ent
Definition: win_dirent.h:206
WIN32_FIND_DATAW data
Definition: win_dirent.h:209
Definition: win_dirent.h:203
wchar_t d_name[MAX_PATH]
Definition: win_dirent.h:199