| /* Windows version of dirent.h | |
| Copyright (C) 1996-2025 Free Software Foundation, Inc. | |
| This file is part of GNU Make. | |
| GNU Make is free software; you can redistribute it and/or modify it under the | |
| terms of the GNU General Public License as published by the Free Software | |
| Foundation; either version 3 of the License, or (at your option) any later | |
| version. | |
| GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY | |
| WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR | |
| A PARTICULAR PURPOSE. See the GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public License along with | |
| this program. If not, see <https://www.gnu.org/licenses/>. */ | |
| #ifndef _DIRENT_H | |
| #define _DIRENT_H | |
| #ifdef __MINGW32__ | |
| # include <windows.h> | |
| # include_next <dirent.h> | |
| #else | |
| #include <stdlib.h> | |
| #include <windows.h> | |
| #include <limits.h> | |
| #include <sys/types.h> | |
| #ifndef NAME_MAX | |
| #define NAME_MAX 255 | |
| #endif | |
| #define __DIRENT_COOKIE 0xfefeabab | |
| /* File types for `d_type'. | |
| Windows only supports DT_CHR, DT_DIR, and DT_REG. */ | |
| enum | |
| { | |
| DT_UNKNOWN = 0, | |
| # define DT_UNKNOWN DT_UNKNOWN | |
| DT_FIFO = 1, | |
| # define DT_FIFO DT_FIFO | |
| DT_CHR = 2, | |
| # define DT_CHR DT_CHR | |
| DT_DIR = 4, | |
| # define DT_DIR DT_DIR | |
| DT_BLK = 6, | |
| # define DT_BLK DT_BLK | |
| DT_REG = 8, | |
| # define DT_REG DT_REG | |
| DT_LNK = 10, | |
| # define DT_LNK DT_LNK | |
| DT_SOCK = 12, | |
| # define DT_SOCK DT_SOCK | |
| DT_WHT = 14 | |
| # define DT_WHT DT_WHT | |
| }; | |
| struct dirent | |
| { | |
| ino_t d_ino; /* unused - no equivalent on Windows32. */ | |
| unsigned char d_type; | |
| char d_name[NAME_MAX+1]; /* must come last due to dir.c assumptions. */ | |
| }; | |
| typedef struct dir_struct | |
| { | |
| ULONG dir_ulCookie; | |
| HANDLE dir_hDirHandle; | |
| DWORD dir_nNumFiles; | |
| char dir_pDirectoryName[NAME_MAX+1]; | |
| struct dirent dir_sdReturn; | |
| } DIR; | |
| DIR *opendir(const char *); | |
| struct dirent *readdir(DIR *); | |
| void rewinddir(DIR *); | |
| void closedir(DIR *); | |
| void seekdir(DIR *, long); | |
| #endif /* !__MINGW32__ */ | |
| #endif |