Cthulhu  0.2.10
Cthulhu compiler collection
dir.c
Go to the documentation of this file.
1 // SPDX-License-Identifier: LGPL-3.0-only
2 #include "os/os.h"
3 #include "os_common.h"
4 
5 #include "core/win32.h" // IWYU pragma: keep
6 
7 #include "std/str.h"
8 
10 {
11  char wildcard[MAX_PATH];
12  str_sprintf(wildcard, MAX_PATH, "%s" CT_NATIVE_PATH_SEPARATOR "*", path);
13 
14  return FindFirstFileA(wildcard, inode);
15 }
16 
18 {
19  return FindNextFileA(impl, inode) != 0;
20 }
21 
23 {
24  return FindClose(impl) != 0;
25 }
26 
27 CT_LOCAL const char *impl_inode_name(const os_inode_impl_t *inode)
28 {
29  return inode->cFileName;
30 }
31 
33 {
34  return (inode->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? eOsNodeDir : eOsNodeFile;
35 }
os_dirent_t
directory entry type
Definition: core.h:56
#define CT_LOCAL
Definition: compiler.h:166
#define CT_NATIVE_PATH_SEPARATOR
Definition: compiler.h:88
CT_STD_API size_t str_sprintf(STA_WRITES(len) char *str, size_t len, STA_FORMAT_STRING const char *fmt,...)
format a string with printf-like syntax
CT_LOCAL os_dirent_t impl_inode_type(const os_inode_impl_t *inode)
Definition: dir.c:32
CT_LOCAL bool impl_iter_close(os_iter_impl_t impl)
Definition: dir.c:21
CT_LOCAL bool impl_iter_next(os_iter_impl_t impl, os_inode_impl_t *inode)
Definition: dir.c:14
CT_LOCAL os_iter_impl_t impl_iter_open(const char *path, os_inode_impl_t *inode)
Definition: dir.c:7
CT_LOCAL const char * impl_inode_name(const os_inode_impl_t *inode)
Definition: dir.c:26
DIR * os_iter_impl_t
Definition: posix.h:13
struct dirent * os_inode_impl_t
Definition: posix.h:12