agendafs

A filesystem for your calendar.

git clone git://mccd.space/agendafs
commit fc64e546a15397c35b733af6e27e8406753e0ef3
parent ea7015dde9e3f6ed3e2bb9b5ff78b957707c7eba
Author: Marc Coquand <marc@coquand.email>
Date:   Wed, 23 Jul 2025 21:57:35 +0200

Code cleanup

Diffstat:
Magenda_entry.c | 13+++++++++++++
Magenda_entry.h | 3+++
Mmain.c | 11++++++-----
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;