agendafs
A filesystem for your calendar.
git clone git://mccd.space/agendafscommit fc64e546a15397c35b733af6e27e8406753e0ef3
parent ea7015dde9e3f6ed3e2bb9b5ff78b957707c7eba
Author: Marc Coquand <marc@coquand.email>
Date: Wed, 23 Jul 2025 21:57:35 +0200
Code cleanup
Diffstat:
3 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/agenda_entry.c b/agenda_entry.c
@@ -568,6 +568,19 @@ append_category_to_memstream(FILE *memstream, const char *category,
return 0;
}
+void
+icalcomponent_insert_description(memory_region *mreg, icalcomponent *ic,
+ const char *buf, size_t size, off_t offset)
+{
+
+ const char *old_desc = icalcomponent_get_description(ic);
+ if (!old_desc)
+ old_desc = "";
+
+ char *new_desc = rstrins(mreg, old_desc, offset, buf, size);
+ icalcomponent_set_description(ic, new_desc);
+}
+
// Returns comma separated list of categories for a file
char *
get_node_categories(memory_region *mreg, const struct tree_node *node)
diff --git a/agenda_entry.h b/agenda_entry.h
@@ -201,6 +201,9 @@ do_agenda_rename(memory_region *, const char *, const char *);
int
delete_from_fuse_path(memory_region *mreg, const char *filepath);
+void
+icalcomponent_insert_description(memory_region *mreg, icalcomponent *ic,
+ const char *buf, size_t size, off_t offset);
int
delete_from_vdir_path(memory_region *mreg, const char *filepath);
#endif // agenda_entry_h_INCLUDED
diff --git a/main.c b/main.c
@@ -248,12 +248,11 @@ agenda_write(const char *path, const char *buf, size_t size, off_t offset,
}
icalcomponent *ic = get_icalcomponent_from_node(mreg, node);
- const char *old_desc = icalcomponent_get_description(ic);
- if (!old_desc)
- old_desc = "";
- char *new_desc = rstrins(mreg, old_desc, offset, buf, size);
- icalcomponent_set_description(ic, new_desc);
+ // Is it possible to write to "/"?
+ assert(ic);
+
+ icalcomponent_insert_description(mreg, ic, buf, size, offset);
ret_i = write_ical_file(mreg, node, ic);
@@ -320,8 +319,10 @@ agenda_create(const char *filename, mode_t mode, struct fuse_file_info *info)
memory_region *mreg = create_region();
pthread_mutex_lock(&entries_mutex);
LOG("CREATE %s", filename);
+
// TODO: Handle mode and fuse_file_info
create_entry_from_fuse(mreg, filename);
+
pthread_mutex_unlock(&entries_mutex);
rfree_all(mreg);
return 0;