1 #define INCL_DOSFILEMGR
14 DIR *opendir (const char * a_dir
)
17 FILEFINDBUF3 FindBuffer
= {0};
19 DIR *dd_dir
= (DIR*) malloc (sizeof(DIR));
20 char *c_dir
= (char*) malloc (strlen(a_dir
) + 5);
22 strcpy (c_dir
, a_dir
);
23 strcat (c_dir
, "\\*.*");
24 dd_dir
->d_handle
= 0xFFFF;
26 rc
= DosFindFirst(c_dir
,
27 (PHDIR
) &dd_dir
->d_handle
,
28 /* FILE_NORMAL || FILE_DIRECTORY, */
36 case ERROR_NO_MORE_FILES
:
37 case ERROR_FILE_NOT_FOUND
:
38 case ERROR_PATH_NOT_FOUND
:
43 case ERROR_BUFFER_OVERFLOW
:
48 case NO_ERROR
: /* go through */
56 dd_dir
->d_attr
= FindBuffer
.attrFile
;
57 /* dd_dir->d_attr = (wfd.dwFileAttributes == FILE_ATTRIBUTE_NORMAL)
58 ? 0 : wfd.dwFileAttributes; */
60 dd_dir
->d_time
= dd_dir
->d_date
= 10;
61 dd_dir
->d_size
= FindBuffer
.cbFile
;
62 strcpy (dd_dir
->d_name
, FindBuffer
.achName
);
69 DIR *readdir( DIR * dd_dir
)
72 FILEFINDBUF3 FindBuffer
= {0};
74 DIR *ret_dir
= (DIR*) malloc (sizeof(DIR));
76 if (dd_dir
->d_first
) {
81 rc
= DosFindNext((HDIR
) dd_dir
->d_handle
,
87 case ERROR_NO_MORE_FILES
:
88 case ERROR_FILE_NOT_FOUND
:
89 case ERROR_PATH_NOT_FOUND
:
93 case ERROR_BUFFER_OVERFLOW
:
97 case NO_ERROR
: /* go through */
104 /* dd_dir->d_attr = (wfd.dwFileAttributes == FILE_ATTRIBUTE_NORMAL)
105 ? 0 : wfd.dwFileAttributes; */
106 /* #define FILE_NORMAL 0x0000
107 #define FILE_READONLY 0x0001
108 #define FILE_HIDDEN 0x0002
109 #define FILE_SYSTEM 0x0004
110 #define FILE_DIRECTORY 0x0010
111 #define FILE_ARCHIVED 0x0020
114 ret_dir
->d_attr
= FindBuffer
.attrFile
;
116 ret_dir
->d_time
= ret_dir
->d_date
= 10;
117 ret_dir
->d_size
= FindBuffer
.cbFile
;
118 strcpy (ret_dir
->d_name
, FindBuffer
.achName
);
122 int closedir (DIR *dd_dir
)
124 if (dd_dir
->d_handle
!= 0xFFFF) {
125 DosFindClose(dd_dir
->d_handle
);