summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorCarlos Maiolino <[email protected]>2026-03-08 13:37:37 +0100
committerCarlos Maiolino <[email protected]>2026-03-08 13:47:28 +0100
commit84b464a185d20d8e329b7aad0b482687a9705b58 (patch)
tree273954db9a38ca577a1bb8171f2f31a9ddbce54b /src/include
parent5ba10e3ee774602e20553091568551e210731fbb (diff)
Add a path parsing mechanism
Now the system can parse paths to files/directories. It follows the same Unix standard namespace. For now, only absolute paths are allowed. The parse mechanism relies on the struct path_part. Which represents each component on a single path. All the components are chain-linked through path_part->next, where the last path component will have ->next == NULL. This also introduces path_root struct, which represents the root of the path. The first component, linked to path_root->head, is always the "/" component. The disk_id represents the disk the root directory is found into. This should actually (and likely will) be a mountpoint not a disk id. Signed-off-by: Carlos Maiolino <[email protected]>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/fs/path.h25
-rw-r--r--src/include/toxic/config.h4
2 files changed, 29 insertions, 0 deletions
diff --git a/src/include/fs/path.h b/src/include/fs/path.h
new file mode 100644
index 0000000..369e8b0
--- /dev/null
+++ b/src/include/fs/path.h
@@ -0,0 +1,25 @@
+#ifndef PATH_H
+#define PATH_H
+
+/*
+ * Path structure follows unix format:
+ *
+ * /foo/bar/file
+ *
+ */
+
+struct path_part {
+ const char *name;
+ struct path_part *next;
+};
+
+/* head is a linked list of all path components.
+ * the '/' is a component itself with name == NULL
+ */
+struct path_root {
+ int disk_id;
+ struct path_part *head;
+};
+
+struct path_root * parse_path(char *path);
+#endif /* PATH_H */
diff --git a/src/include/toxic/config.h b/src/include/toxic/config.h
index c1c1e7f..593eb2a 100644
--- a/src/include/toxic/config.h
+++ b/src/include/toxic/config.h
@@ -9,4 +9,8 @@
#define PAGE_SIZE (4096)
#define SECTOR_SIZE (512)
+
+/* Path parsing */
+#define PATH_MAX (128)
+
#endif /* CONFIG_H */