Lines Matching refs:dir
23 #include <isc/dir.h>
32 #define VALID_DIR(dir) ISC_MAGIC_VALID(dir, ISC_DIR_MAGIC)
38 isc_dir_init(isc_dir_t *dir) {
39 REQUIRE(dir != NULL);
41 dir->dirname[0] = '\0';
43 dir->entry.name[0] = '\0';
44 dir->entry.length = 0;
45 memset(&(dir->entry.find_data), 0, sizeof(dir->entry.find_data));
47 dir->entry_filled = ISC_FALSE;
48 dir->search_handle = INVALID_HANDLE_VALUE;
50 dir->magic = ISC_DIR_MAGIC;
58 isc_dir_open(isc_dir_t *dir, const char *dirname) {
63 REQUIRE(VALID_DIR(dir) && dir->search_handle == INVALID_HANDLE_VALUE);
69 if (strlen(dirname) + 3 > sizeof(dir->dirname))
72 strlcpy(dir->dirname, dirname, sizeof(dir->dirname));
77 p = dir->dirname + strlen(dir->dirname);
78 if (dir->dirname < p && *(p - 1) != '\\' && *(p - 1) != ':')
86 result = start_directory(dir);
94 * the dir stream and reads the first file in one operation.
97 isc_dir_read(isc_dir_t *dir) {
98 REQUIRE(VALID_DIR(dir) && dir->search_handle != INVALID_HANDLE_VALUE);
100 if (dir->entry_filled)
104 dir->entry_filled = ISC_FALSE;
110 if (FindNextFile(dir->search_handle,
111 &dir->entry.find_data) == FALSE)
126 strlcpy(dir->entry.name, dir->entry.find_data.cFileName,
127 sizeof(dir->entry.name));
128 dir->entry.length = strlen(dir->entry.name);
137 isc_dir_close(isc_dir_t *dir) {
138 REQUIRE(VALID_DIR(dir) && dir->search_handle != INVALID_HANDLE_VALUE);
140 FindClose(dir->search_handle);
141 dir->search_handle = INVALID_HANDLE_VALUE;
148 isc_dir_reset(isc_dir_t *dir) {
151 REQUIRE(VALID_DIR(dir) && dir->search_handle != INVALID_HANDLE_VALUE);
152 REQUIRE(dir->dirname != NULL);
160 isc_dir_close(dir);
162 result = start_directory(dir);
175 start_directory(isc_dir_t *dir)
177 REQUIRE(VALID_DIR(dir));
178 REQUIRE(dir->search_handle == INVALID_HANDLE_VALUE);
180 dir->entry_filled = ISC_FALSE;
185 dir->search_handle = FindFirstFile(dir->dirname,
186 &dir->entry.find_data);
188 if (dir->search_handle == INVALID_HANDLE_VALUE) {
204 INSIST(sizeof(dir->entry.name) >
205 strlen(dir->entry.find_data.cFileName));
210 strlcpy(dir->entry.name, dir->entry.find_data.cFileName,
211 sizeof(dir->entry.name));
212 dir->entry.length = strlen(dir->entry.name);
214 dir->entry_filled = ISC_TRUE;