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