Lines Matching defs:dir

1 /*	$NetBSD: dir.c,v 1.5 2020/05/25 20:47:23 christos Exp $	*/
33 #include <isc/dir.h>
41 #define VALID_DIR(dir) ISC_MAGIC_VALID(dir, ISC_DIR_MAGIC)
47 isc_dir_init(isc_dir_t *dir) {
48 REQUIRE(dir != NULL);
50 dir->dirname[0] = '\0';
52 dir->entry.name[0] = '\0';
53 dir->entry.length = 0;
54 memset(&(dir->entry.find_data), 0, sizeof(dir->entry.find_data));
56 dir->entry_filled = ISC_FALSE;
57 dir->search_handle = INVALID_HANDLE_VALUE;
59 dir->magic = ISC_DIR_MAGIC;
67 isc_dir_open(isc_dir_t *dir, const char *dirname) {
72 REQUIRE(VALID_DIR(dir) && dir->search_handle == INVALID_HANDLE_VALUE);
78 if (strlen(dirname) + 3 > sizeof(dir->dirname))
81 strcpy(dir->dirname, dirname);
86 p = dir->dirname + strlen(dir->dirname);
87 if (dir->dirname < p && *(p - 1) != '\\' && *(p - 1) != ':')
95 result = start_directory(dir);
103 * the dir stream and reads the first file in one operation.
106 isc_dir_read(isc_dir_t *dir) {
107 REQUIRE(VALID_DIR(dir) && dir->search_handle != INVALID_HANDLE_VALUE);
109 if (dir->entry_filled)
113 dir->entry_filled = ISC_FALSE;
119 if (FindNextFile(dir->search_handle,
120 &dir->entry.find_data) == FALSE)
135 strcpy(dir->entry.name, dir->entry.find_data.cFileName);
136 dir->entry.length = strlen(dir->entry.name);
145 isc_dir_close(isc_dir_t *dir) {
146 REQUIRE(VALID_DIR(dir) && dir->search_handle != INVALID_HANDLE_VALUE);
148 FindClose(dir->search_handle);
149 dir->search_handle = INVALID_HANDLE_VALUE;
156 isc_dir_reset(isc_dir_t *dir) {
159 REQUIRE(VALID_DIR(dir) && dir->search_handle != INVALID_HANDLE_VALUE);
160 REQUIRE(dir->dirname != NULL);
168 isc_dir_close(dir);
170 result = start_directory(dir);
183 start_directory(isc_dir_t *dir)
185 REQUIRE(VALID_DIR(dir));
186 REQUIRE(dir->search_handle == INVALID_HANDLE_VALUE);
188 dir->entry_filled = ISC_FALSE;
193 dir->search_handle = FindFirstFile(dir->dirname,
194 &dir->entry.find_data);
196 if (dir->search_handle == INVALID_HANDLE_VALUE) {
212 INSIST(sizeof(dir->entry.name) >
213 strlen(dir->entry.find_data.cFileName));
218 strcpy(dir->entry.name, dir->entry.find_data.cFileName);
219 dir->entry.length = strlen(dir->entry.name);
221 dir->entry_filled = ISC_TRUE;