1 /* Private details of the DIR type. 2 Copyright (C) 2011-2023 Free Software Foundation, Inc. 3 4 This file is free software: you can redistribute it and/or modify 5 it under the terms of the GNU Lesser General Public License as 6 published by the Free Software Foundation; either version 2.1 of the 7 License, or (at your option) any later version. 8 9 This file is distributed in the hope that it will be useful, 10 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 GNU Lesser General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public License 15 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 16 17 #ifndef _DIRENT_PRIVATE_H 18 #define _DIRENT_PRIVATE_H 1 19 20 #if HAVE_DIRENT_H /* mingw */ 21 22 # undef DIR 23 24 struct gl_directory 25 { 26 /* File descriptor to close during closedir(). 27 Needed for implementing fdopendir(). */ 28 int fd_to_close; 29 /* Pointer to the real DIR. */ 30 DIR *real_dirp; 31 }; 32 33 /* Restore definition from dirent.h. */ 34 # define DIR struct gl_directory 35 36 #else /* MSVC */ 37 38 # define WIN32_LEAN_AND_MEAN 39 # include <windows.h> 40 41 /* Don't assume that UNICODE is not defined. */ 42 # undef WIN32_FIND_DATA 43 # define WIN32_FIND_DATA WIN32_FIND_DATAA 44 45 struct gl_directory 46 { 47 /* File descriptor to close during closedir(). 48 Needed for implementing fdopendir(). */ 49 int fd_to_close; 50 /* Status, or error code to produce in next readdir() call. 51 -2 means the end of the directory is already reached, 52 -1 means the entry was already filled by FindFirstFile, 53 0 means the entry needs to be filled using FindNextFile. 54 A positive value is an error code. */ 55 int status; 56 /* Handle, reading the directory, at current position. */ 57 HANDLE current; 58 /* Found directory entry. */ 59 WIN32_FIND_DATA entry; 60 /* Argument to pass to FindFirstFile. It consists of the absolutized 61 directory name, followed by a directory separator and the wildcards. */ 62 char dir_name_mask[1]; 63 }; 64 65 #endif 66 67 #endif /* _DIRENT_PRIVATE_H */