summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2023-11-22 21:06:33 +0100
committerAnton Kling <anton@kling.gg>2023-11-22 21:06:33 +0100
commitf0af695b6c3289a041e8fce8926721063796c596 (patch)
tree7575159d8efbb60ccf1762f2da3e126661f5c7bd /include
parentb3866b0442f55b97833981a99c601f2143d10315 (diff)
Meta: Use dirent as a general include file
This include file is shared by the kernel and libc
Diffstat (limited to 'include')
-rw-r--r--include/dirent.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/include/dirent.h b/include/dirent.h
new file mode 100644
index 0000000..153d36a
--- /dev/null
+++ b/include/dirent.h
@@ -0,0 +1,33 @@
+#ifndef DIRENT_H
+#define DIRENT_H
+#include <fcntl.h>
+#include <limits.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#ifndef KERNEL
+#include <unistd.h>
+#endif
+
+#define S_ISREG(_m) (_m & (STAT_REG))
+#define S_ISDIR(_m) (_m & (STAT_DIR))
+
+struct dirent {
+ ino_t d_ino; // File serial number.
+ char d_name[PATH_MAX]; // Filename string of entry.
+};
+
+typedef struct {
+ int fd;
+ struct dirent internal_direntry;
+ int dir_num;
+} DIR;
+
+DIR *opendir(const char *dirname);
+struct dirent *readdir(DIR *dir);
+int closedir(DIR *dirp);
+int alphasort(const struct dirent **d1, const struct dirent **d2);
+int scandir(const char *dir, struct dirent ***namelist,
+ int (*sel)(const struct dirent *),
+ int (*compar)(const struct dirent **, const struct dirent **));
+#endif