From cd9667d6be072a9c736e49c679b55852f7b30a6c Mon Sep 17 00:00:00 2001
From: "Luke T. Shumaker" <lukeshu@lukeshu.com>
Date: Sun, 12 Jan 2025 23:08:14 -0700
Subject: lib9p: Don't nul-terminate strings, add some string utils

---
 lib9p_util/static.c | 29 +++++++++++++----------------
 1 file changed, 13 insertions(+), 16 deletions(-)

(limited to 'lib9p_util/static.c')

diff --git a/lib9p_util/static.c b/lib9p_util/static.c
index 62cb147..7851714 100644
--- a/lib9p_util/static.c
+++ b/lib9p_util/static.c
@@ -10,9 +10,6 @@
 
 #include <util9p/static.h>
 
-#define p9_str(cstr)    ((struct lib9p_s){ .len = strlen(cstr), .utf8 = cstr })
-#define p9_nulstr       ((struct lib9p_s){ .len = 0, .utf8 = NULL })
-
 /* common *********************************************************************/
 
 static implements_lib9p_srv_file *util9p_static_common_clone(implements_lib9p_srv_file *_self, struct lib9p_srv_ctx *ctx) {
@@ -75,11 +72,11 @@ static struct lib9p_stat util9p_static_dir_stat(implements_lib9p_srv_file *_self
 		.file_atime               = self->atime,
 		.file_mtime               = self->mtime,
 		.file_size                = 0,
-		.file_name                = p9_str(self->name),
-		.file_owner_uid           = p9_str(self->u_name),
-		.file_owner_gid           = p9_str(self->g_name),
-		.file_last_modified_uid   = p9_str(self->m_name),
-		.file_extension           = p9_nulstr,
+		.file_name                = lib9p_str(self->name),
+		.file_owner_uid           = lib9p_str(self->u_name),
+		.file_owner_gid           = lib9p_str(self->g_name),
+		.file_last_modified_uid   = lib9p_str(self->m_name),
+		.file_extension           = lib9p_str(NULL),
 		.file_owner_n_uid         = self->u_num,
 		.file_owner_n_gid         = self->g_num,
 		.file_last_modified_n_uid = self->m_num,
@@ -87,7 +84,7 @@ static struct lib9p_stat util9p_static_dir_stat(implements_lib9p_srv_file *_self
 }
 
 static implements_lib9p_srv_file *util9p_static_dir_dopen(implements_lib9p_srv_file *_self, struct lib9p_srv_ctx *ctx,
-                                                   char *childname) {
+                                                   struct lib9p_s childname) {
 	struct util9p_static_dir *self = VCALL_SELF(struct util9p_static_dir, implements_lib9p_srv_file, _self);
 	assert(self);
 	assert(ctx);
@@ -98,7 +95,7 @@ static implements_lib9p_srv_file *util9p_static_dir_dopen(implements_lib9p_srv_f
 		if (lib9p_ctx_has_error(&ctx->basectx))
 			break;
 		lib9p_stat_assert(stat);
-		if (strcmp(stat.file_name.utf8, childname) == 0)
+		if (lib9p_str_eq(stat.file_name, childname))
 			return filep;
 	}
 	lib9p_error(&ctx->basectx,
@@ -107,7 +104,7 @@ static implements_lib9p_srv_file *util9p_static_dir_dopen(implements_lib9p_srv_f
 }
 
 static implements_lib9p_srv_file *util9p_static_dir_dcreate(implements_lib9p_srv_file *_self, struct lib9p_srv_ctx *ctx,
-                                                            char *LM_UNUSED(childname),
+                                                            struct lib9p_s LM_UNUSED(childname),
                                                             lib9p_dm_t LM_UNUSED(perm), lib9p_o_t LM_UNUSED(flags)) {
 	struct util9p_static_dir *self = VCALL_SELF(struct util9p_static_dir, implements_lib9p_srv_file, _self);
 	assert(self);
@@ -192,11 +189,11 @@ static struct lib9p_stat util9p_static_file_stat(implements_lib9p_srv_file *_sel
 		.file_atime               = self->atime,
 		.file_mtime               = self->mtime,
 		.file_size                = (uint64_t)util9p_static_file_size(self),
-		.file_name                = p9_str(self->name),
-		.file_owner_uid           = p9_str(self->u_name),
-		.file_owner_gid           = p9_str(self->g_name),
-		.file_last_modified_uid   = p9_str(self->m_name),
-		.file_extension           = p9_nulstr,
+		.file_name                = lib9p_str(self->name),
+		.file_owner_uid           = lib9p_str(self->u_name),
+		.file_owner_gid           = lib9p_str(self->g_name),
+		.file_last_modified_uid   = lib9p_str(self->m_name),
+		.file_extension           = lib9p_str(NULL),
 		.file_owner_n_uid         = self->u_num,
 		.file_owner_n_gid         = self->g_num,
 		.file_last_modified_n_uid = self->m_num,
-- 
cgit v1.2.3-2-g168b