1 /****************************************************/ 2 /* */ 3 /* For Win32 that lacks Unix direct support. */ 4 /* - avoids including "windows.h" */ 5 /* */ 6 /* Copyright (c) 2002 John Popplewell */ 7 /* john@johnnypops.demon.co.uk */ 8 /* */ 9 /****************************************************/ 10 /* $Id$ */ 11 typedef long BOOL; 12 typedef unsigned int DWORD; 13 typedef wchar_t TCHAR; 14 typedef void *HANDLE; 15 16 17 #define MAX_PATH 256 18 #define INVALID_HANDLE_VALUE ((HANDLE)(-1)) 19 #define WINAPI __stdcall 20 typedef struct 21 { 22 DWORD dwLowDateTime; 23 DWORD dwHighDateTime; 24 } FILETIME; 25 typedef struct 26 { 27 DWORD dwFileAttributes; 28 FILETIME ftCreationTime; 29 FILETIME ftLastAccessTime; 30 FILETIME ftLastWriteTime; 31 DWORD nFileSizeHigh; 32 DWORD nFileSizeLow; 33 DWORD dwReserved0; 34 DWORD dwReserved1; 35 TCHAR cFileName[MAX_PATH]; 36 TCHAR cAlternateFileName[14]; 37 } WIN32_FIND_DATA; 38 39 40 #define FindFirstFile FindFirstFileA 41 #define FindNextFile FindNextFileA 42 #define FindClose FindClose 43 44 #ifdef __cplusplus 45 extern "C" 46 { 47 48 #endif /* */ 49 extern HANDLE WINAPI FindFirstFile(const char *, WIN32_FIND_DATA *); 50 extern BOOL WINAPI FindNextFile(HANDLE, WIN32_FIND_DATA *); 51 extern BOOL WINAPI FindClose(HANDLE); 52 53 #ifdef __cplusplus 54 }; 55 56 57 #endif /* */ 58 struct dirent 59 { 60 char d_name[MAX_PATH]; 61 }; 62 typedef struct 63 { 64 WIN32_FIND_DATA wfd; 65 HANDLE hFind; 66 struct dirent de; 67 } DIR; 68 extern DIR *opendir(const char *pSpec); 69 extern void closedir(DIR * pDir); 70 extern struct dirent *readdir(struct DIR *pDir); 71 typedef int (*selectCB) (const struct dirent *); 72 typedef int (*comparCB) (const void *, const void *); 73 extern int alphasort(const void *a, const void *b); 74 extern int scandir(const char *dir, struct dirent ***namelist, selectCB select, comparCB compar); 75