agendafs
A filesystem for your calendar.
git clone git://mccd.space/agendafscommit 33402cb90a1ece43ae700a126c14b25f7438dda0
parent d9d7036265971f7e2231ebb82c2ba0e1ea47daf8
Author: Marc Coquand <marc@coquand.email>
Date: Thu, 3 Jul 2025 15:06:53 +0100
fix formatting, add some const and remove typedefs
Typedefs obscure
Diffstat:
6 files changed, 74 insertions(+), 65 deletions(-)
diff --git a/.clang-format b/.clang-format
@@ -2,5 +2,6 @@ BasedOnStyle: LLVM
UseTab: Always
IndentWidth: 8
TabWidth: 8
+ColumnLimit: 80
BreakBeforeBraces: Stroustrup
AlwaysBreakAfterReturnType: All
diff --git a/journal_entry.c b/journal_entry.c
@@ -39,14 +39,14 @@ create_file_node(struct journal_entry *entry)
}
struct journal_entry *
-get_entry(tree_node *node)
+get_entry(const struct tree_node *node)
{
struct journal_entry *entry = node->data;
return entry;
}
char *
-get_node_filename(tree_node *node)
+get_node_filename(const struct tree_node *node)
{
struct journal_entry *entry = node->data;
if (entry == NULL)
@@ -55,7 +55,7 @@ get_node_filename(tree_node *node)
}
icalcomponent *
-get_node_component(tree_node *node)
+get_node_component(const struct tree_node *node)
{
struct journal_entry *entry = node->data;
if (entry == NULL)
@@ -87,17 +87,17 @@ get_parent_path(const char *path, char **buffer)
return result;
}
-tree_node **
-get_node_children(tree_node *node)
+struct tree_node **
+get_node_children(const struct tree_node *node)
{
- tree_node **entries = node->children;
+ struct tree_node **entries = node->children;
return entries;
}
void
-detach_node_and_entry(tree_node *node)
+detach_node_and_entry(struct tree_node *node)
{
- tree_node *parent = node->parent;
+ struct tree_node *parent = node->parent;
if (!parent || !parent->data) {
return;
}
@@ -105,7 +105,7 @@ detach_node_and_entry(tree_node *node)
detach_tree_node(node);
}
-tree_node *
+struct tree_node *
get_node_by_uuid(const char *target_uuid)
{
char *filename_original = NULL;
@@ -118,13 +118,14 @@ get_node_by_uuid(const char *target_uuid)
LOG("Looking for UID: '%s'", target_uuid);
LOG("Full filename: '%s'", filename_original);
- tree_node *node = hashmap_get(entries_original_ics, filename_original);
+ struct tree_node *node =
+ hashmap_get(entries_original_ics, filename_original);
free(filename_original);
LOG("Found it: %b", node != NULL);
return node;
}
bool
-is_root_node(tree_node *node)
+is_root_node(const struct tree_node *node)
{
if (!node->data) {
return true;
@@ -203,7 +204,7 @@ remove_parent_child_relationship_from_component(icalcomponent *parent,
}
void
-add_child_to_node(tree_node *parent, tree_node *child)
+add_child_to_node(struct tree_node *parent, struct tree_node *child)
{
// Root node, don't add relationship to component
if (is_root_node(parent)) {
@@ -232,8 +233,8 @@ free_segments(char **segments, size_t count)
free(segments);
}
-struct tree_node *
-get_node_by_path(struct tree_node *root, const char *path)
+const struct tree_node *
+get_node_by_path(const struct tree_node *root, const char *path)
{
if (strcmp(path, "/") == 0) {
LOG("Is ROOT %s", path);
@@ -246,11 +247,11 @@ get_node_by_path(struct tree_node *root, const char *path)
return fuse_tree_root;
LOG("Segments are defined");
- tree_node *current = root;
+ const struct tree_node *current = root;
for (size_t i = 0; i < count && current; ++i) {
const char *segment = segments[i];
- tree_node *next = NULL;
+ struct tree_node *next = NULL;
LOG("Segment: %s", segment);
for (size_t j = 0; j < current->child_count; ++j) {
@@ -315,7 +316,7 @@ get_entry_from_fuse_path(const char *path)
LOG("Invalid path: '%s'\n", path ? path : "NULL");
return NULL;
}
- tree_node *node = get_node_by_path(fuse_tree_root, path);
+ const struct tree_node *node = get_node_by_path(fuse_tree_root, path);
if (!node || !node->data) {
LOG("No entry found for key: '%s'\n", path);
@@ -371,7 +372,7 @@ is_directory_component(icalcomponent *component)
// We assume it to be a directory if it has a property directory property
// so or is a parent node
bool
-node_is_directory(tree_node *node)
+node_is_directory(const struct tree_node *node)
{
if (is_root_node(node) || node_has_children(node)) {
return true;
@@ -461,7 +462,8 @@ parse_ics_to_journal_entry_component(const char *filename,
}
void
-move_node(tree_node *old_parent, tree_node *new_parent, tree_node *child)
+move_node(struct tree_node *old_parent, struct tree_node *new_parent,
+ struct tree_node *child)
{
struct journal_entry *child_entry = child->data;
@@ -594,7 +596,8 @@ load_journal_entries()
continue;
}
- tree_node *new_node = create_file_node(new_entry);
+ struct tree_node *new_node =
+ create_file_node(new_entry);
if (add_child(fuse_tree_root, new_node) != 0 ||
hashmap_insert(entries_original_ics,
@@ -616,7 +619,8 @@ load_journal_entries()
char **keys = hashmap_get_keys(entries_original_ics, &n_keys);
for (size_t i = 0; i < n_keys; i++) {
const char *filename = keys[i];
- tree_node *child = hashmap_get(entries_original_ics, filename);
+ struct tree_node *child =
+ hashmap_get(entries_original_ics, filename);
struct journal_entry *entry = child->data;
const char *parent_uid = get_parent_uid(entry->component);
@@ -625,7 +629,7 @@ load_journal_entries()
if (parent_uid) {
LOG("Has parent");
- tree_node *parent = get_node_by_uuid(parent_uid);
+ struct tree_node *parent = get_node_by_uuid(parent_uid);
if (parent) {
detach_tree_node(child);
add_child(parent, child);
@@ -687,7 +691,7 @@ get_last_modified(struct journal_entry *entry)
}
uid_t
-get_node_uid(tree_node *node)
+get_node_uid(struct tree_node *node)
{
if (is_root_node(node)) {
return getuid();
@@ -696,7 +700,7 @@ get_node_uid(tree_node *node)
}
gid_t
-get_node_gid(tree_node *node)
+get_node_gid(const struct tree_node *node)
{
if (is_root_node(node)) {
return getgid();
@@ -797,7 +801,7 @@ do_journal_entry_rename(const char *old, const char *new)
char *parent_path = NULL;
get_parent_path(new, &parent_path);
LOG("PARENT PATH: %s", parent_path);
- tree_node *new_parent_node =
+ const struct tree_node *new_parent_node =
get_node_by_path(fuse_tree_root, parent_path);
free(parent_path);
@@ -815,7 +819,7 @@ do_journal_entry_rename(const char *old, const char *new)
*dot = '\0';
}
LOG("Summary is now %s", new_summary);
- tree_node *entry_node = get_node_by_path(fuse_tree_root, old);
+ struct tree_node *entry_node = get_node_by_path(fuse_tree_root, old);
if (!entry_node) {
free(new_copy);
free(new_summary);
@@ -823,7 +827,7 @@ do_journal_entry_rename(const char *old, const char *new)
return -EIO;
}
- tree_node *old_parent_node = entry_node->parent;
+ struct tree_node *old_parent_node = entry_node->parent;
struct journal_entry *old_entry = entry_node->data;
if (!old_entry) {
@@ -989,11 +993,12 @@ create_entry_from_fuse(const char *fuse_path)
}
LOG("Inserting vjournal entry");
- tree_node *new_node = create_file_node(new_entry);
+ struct tree_node *new_node = create_file_node(new_entry);
char *parent_path = NULL;
get_parent_path(fuse_path, &parent_path);
LOG("Parent path is %s", parent_path);
- tree_node *parent = get_node_by_path(fuse_tree_root, parent_path);
+ struct tree_node *parent =
+ get_node_by_path(fuse_tree_root, parent_path);
free(parent_path);
if (!parent) {
@@ -1044,12 +1049,13 @@ create_directory_from_fuse_path(const char *fuse_path)
}
LOG("Inserting vjournal directory");
- tree_node *new_node = create_file_node(new_entry);
+ struct tree_node *new_node = create_file_node(new_entry);
char *parent_path = NULL;
get_parent_path(fuse_path, &parent_path);
LOG("Parent path is %s", parent_path);
- tree_node *parent = get_node_by_path(fuse_tree_root, parent_path);
+ struct tree_node *parent =
+ get_node_by_path(fuse_tree_root, parent_path);
free(parent_path);
if (!parent) {
@@ -1092,7 +1098,7 @@ update_or_create_fuse_entry_from_original(const char *filepath_original)
return;
}
- tree_node *new_or_updated_node =
+ struct tree_node *new_or_updated_node =
hashmap_get(entries_original_ics, filename_original);
if (new_or_updated_node) {
@@ -1112,7 +1118,7 @@ update_or_create_fuse_entry_from_original(const char *filepath_original)
updated_entry->filename);
if (parent_uid) {
LOG("Has parent");
- tree_node *parent = get_node_by_uuid(parent_uid);
+ struct tree_node *parent = get_node_by_uuid(parent_uid);
if (parent) {
move_node(new_or_updated_node->parent, parent,
new_or_updated_node);
@@ -1135,7 +1141,7 @@ int
delete_dir_from_fuse_path(const char *filepath)
{
int res = 0;
- tree_node *node = get_node_by_path(fuse_tree_root, filepath);
+ struct tree_node *node = get_node_by_path(fuse_tree_root, filepath);
if (!node) {
LOG("Node not found");
return -EIO;
@@ -1173,7 +1179,7 @@ int
delete_from_fuse_path(const char *filepath)
{
int res = 0;
- tree_node *node = get_node_by_path(fuse_tree_root, filepath);
+ struct tree_node *node = get_node_by_path(fuse_tree_root, filepath);
if (!node) {
return -EIO;
}
@@ -1210,7 +1216,7 @@ update_delete_from_original_path(const char *filepath)
}
// TODO: Fix so it finds by actual UUID, not filepath
- tree_node *node = get_node_by_uuid(filepath);
+ struct tree_node *node = get_node_by_uuid(filepath);
// TODO: Subdirectories SHOULD NOT BE REMOVED HERE
// Instead, update the children so they have a new parent
diff --git a/journal_entry.h b/journal_entry.h
@@ -86,13 +86,13 @@ struct tree_node *
find_node_by_path(struct tree_node *root, const char *path);
struct journal_entry *
-get_entry(struct tree_node *node);
+get_entry(const struct tree_node *node);
int
delete_dir_from_fuse_path(const char *filepath);
bool
-node_is_directory(struct tree_node *node);
+node_is_directory(const struct tree_node *node);
int
delete_from_fuse_path(const char *filepath);
@@ -133,8 +133,8 @@ get_last_modified(struct journal_entry *entry);
int
build_today_hashmap();
-struct tree_node *
-get_node_by_path(struct tree_node *root, const char *path);
+const struct tree_node *
+get_node_by_path(const struct tree_node *root, const char *path);
int
build_notes_hashmap();
@@ -154,7 +154,7 @@ uid_t
get_node_uid(struct tree_node *node);
gid_t
-get_node_gid(struct tree_node *node);
+get_node_gid(const struct tree_node *node);
void
remove_file_extension(char *path);
diff --git a/main.c b/main.c
@@ -47,7 +47,7 @@ journal_getattr(const char *path, struct stat *stbuf, struct fuse_file_info *fi)
goto unlock_and_return;
}
- tree_node *node = get_node_by_path(fuse_tree_root, path);
+ const struct tree_node *node = get_node_by_path(fuse_tree_root, path);
if (!node) {
LOG("Entry not found");
ret_code = -ENOENT;
@@ -111,7 +111,8 @@ journal_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
// If we are in the root directory, expose the "journal" directory
if (strcmp(path, "/") == 0) {
for (size_t i = 0; i < fuse_tree_root->child_count; i++) {
- tree_node *node = fuse_tree_root->children[i];
+ const struct tree_node *node =
+ fuse_tree_root->children[i];
struct journal_entry *entry = node->data;
struct stat st = {0};
@@ -130,10 +131,12 @@ journal_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
}
}
else {
- tree_node *node = get_node_by_path(fuse_tree_root, path);
+ const struct tree_node *node =
+ get_node_by_path(fuse_tree_root, path);
if (node) {
for (size_t i = 0; i < node->child_count; i++) {
- tree_node *child = node->children[i];
+ const struct tree_node *child =
+ node->children[i];
struct journal_entry *entry = child->data;
struct stat st = {0};
diff --git a/tree.c b/tree.c
@@ -1,14 +1,13 @@
-
#include "tree.h"
#include "util.h"
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
-tree_node *
+struct tree_node *
create_tree_node(void *data, void (*free_fn)(void *))
{
- tree_node *node = xmalloc(sizeof(tree_node));
+ struct tree_node *node = xmalloc(sizeof(struct tree_node));
if (!node)
return NULL;
node->data = data;
@@ -22,14 +21,14 @@ create_tree_node(void *data, void (*free_fn)(void *))
}
size_t
-add_child(tree_node *parent, tree_node *child)
+add_child(struct tree_node *parent, struct tree_node *child)
{
if (parent->child_count == parent->child_capacity) {
size_t new_capacity =
parent->child_capacity ? parent->child_capacity * 2 : 4;
parent->children = xreallocarray(parent->children, new_capacity,
- sizeof(tree_node *));
+ sizeof(struct tree_node *));
parent->child_capacity = new_capacity;
}
parent->children[parent->child_count++] = child;
@@ -37,7 +36,7 @@ add_child(tree_node *parent, tree_node *child)
return 0;
}
void
-update_node_data(tree_node *node, void *data)
+update_node_data(struct tree_node *node, void *data)
{
if (node->data && node->free_fn) {
node->free_fn(node->data);
@@ -46,14 +45,14 @@ update_node_data(tree_node *node, void *data)
}
bool
-node_has_children(tree_node *node)
+node_has_children(const struct tree_node *node)
{
return node->child_count > 0;
}
// Free a node and all its children
void
-free_tree(tree_node *node)
+free_tree(struct tree_node *node)
{
if (!node)
return;
@@ -68,7 +67,7 @@ free_tree(tree_node *node)
}
void
-print_tree(tree_node *node, int depth, void (*print_data)(void *))
+print_tree(struct tree_node *node, int depth, void (*print_data)(void *))
{
for (int i = 0; i < depth; i++)
printf(" ");
@@ -83,12 +82,12 @@ print_tree(tree_node *node, int depth, void (*print_data)(void *))
}
bool
-detach_tree_node(tree_node *node)
+detach_tree_node(struct tree_node *node)
{
if (!node->parent)
return false;
- tree_node *parent = node->parent;
+ struct tree_node *parent = node->parent;
// Find index of this node in parent->children
size_t index = (size_t)-1;
diff --git a/tree.h b/tree.h
@@ -4,7 +4,7 @@
#include <stdbool.h>
#include <stdlib.h>
-typedef struct tree_node {
+struct tree_node {
void *data;
struct tree_node *parent;
@@ -13,29 +13,29 @@ typedef struct tree_node {
size_t child_capacity;
void (*free_fn)(void *);
-} tree_node;
+};
-tree_node *
+struct tree_node *
create_tree_node(void *data, void (*free_fn)(void *));
bool
-node_has_children(tree_node *node);
+node_has_children(const struct tree_node *node);
void
-update_node_data(tree_node *node, void *data);
+update_node_data(struct tree_node *node, void *data);
// detach from parent
bool
-detach_tree_node(tree_node *node);
+detach_tree_node(struct tree_node *node);
size_t
-add_child(tree_node *parent, tree_node *child);
+add_child(struct tree_node *parent, struct tree_node *child);
void
-free_tree(tree_node *node);
+free_tree(struct tree_node *node);
void
-print_tree(tree_node *node, int depth, void (*print_data)(void *));
+print_tree(struct tree_node *node, int depth, void (*print_data)(void *));
#endif