5 #define INCL_DOSFILEMGR
15 DIR *opendir (const char * a_dir
)
18 FILEFINDBUF3 FindBuffer
= {0};
20 DIR *dd_dir
= (DIR*) malloc (sizeof(DIR));
21 char *c_dir
= (char*) malloc (strlen(a_dir
) + 5);
23 strcpy (c_dir
, a_dir
);
24 strcat (c_dir
, "\\*.*");
25 dd_dir
->d_handle
= (unsigned long*) HDIR_CREATE
;
27 rc
= DosFindFirst(c_dir
,
28 (PHDIR
) &dd_dir
->d_handle
,
29 FILE_SYSTEM
| FILE_HIDDEN
| FILE_DIRECTORY
,
37 case ERROR_NO_MORE_FILES
:
38 case ERROR_FILE_NOT_FOUND
:
39 case ERROR_PATH_NOT_FOUND
:
42 case ERROR_BUFFER_OVERFLOW
:
52 dd_dir
->d_attr
= FindBuffer
.attrFile
;
53 dd_dir
->d_time
= dd_dir
->d_date
= 10;
54 dd_dir
->d_size
= FindBuffer
.cbFile
;
55 strcpy (dd_dir
->d_name
, FindBuffer
.achName
);
62 DIR *readdir( DIR * dd_dir
)
65 FILEFINDBUF3 FindBuffer
= {0};
67 DIR *ret_dir
= (DIR*) malloc (sizeof(DIR));
69 if (dd_dir
->d_first
) {
74 rc
= DosFindNext((HDIR
) dd_dir
->d_handle
,
81 case ERROR_NO_MORE_FILES
:
82 case ERROR_FILE_NOT_FOUND
:
83 case ERROR_PATH_NOT_FOUND
:
86 case ERROR_BUFFER_OVERFLOW
:
96 ret_dir
->d_attr
= FindBuffer
.attrFile
;
97 ret_dir
->d_time
= ret_dir
->d_date
= 10;
98 ret_dir
->d_size
= FindBuffer
.cbFile
;
99 strcpy (ret_dir
->d_name
, FindBuffer
.achName
);
103 int closedir (DIR *dd_dir
)
105 if (dd_dir
->d_handle
!= (unsigned long*) HDIR_CREATE
) {
106 DosFindClose((HDIR
) dd_dir
->d_handle
);