diff --git a/src/gmnlm.c b/src/gmnlm.c
index ef4c97950495e369e4fd3b1256c185fdb01f8cf1..8cafaea17de972c240031b0fe6ab88e3621bd871 100644
--- a/src/gmnlm.c
+++ b/src/gmnlm.c
@@ -179,8 +179,7 @@
n = snprintf(path, sizeof(path), path_fmt, "bookmarks.gmi");
free(path_fmt);
assert(n < sizeof(path));
- strncpy(dname, path, sizeof(dname)-1);
- dirname(dname);
+ posix_dirname(path, dname);
if (mkdirs(dname, 0755) != 0) {
fprintf(stderr, "Error creating directory %s: %s\n",
dname, strerror(errno));
@@ -262,8 +261,7 @@ n = snprintf(path, sizeof(path), path_fmt, "bookmarks.gmi");
free(path_fmt);
assert(n < sizeof(path));
- strncpy(dname, path, sizeof(dname)-1);
- dirname(dname);
+ posix_dirname(path, dname);
if (mkdirs(dname, 0755) != 0) {
fprintf(stderr, "Error creating directory %s: %s\n",
dname, strerror(errno));
diff --git a/src/tofu.c b/src/tofu.c
index 54183a79278de45bfbe5a1f8ddbcbf10be1c01c4..0923aed3f3d9ac02a7bc6b81db965d6924e4af74 100644
--- a/src/tofu.c
+++ b/src/tofu.c
@@ -177,20 +177,15 @@
n = snprintf(tofu->known_hosts_path,
sizeof(tofu->known_hosts_path),
path_fmt, "known_hosts");
+ free(path_fmt);
assert(n < sizeof(tofu->known_hosts_path));
- strncpy(dname, dirname(tofu->known_hosts_path), sizeof(dname)-1);
+ posix_dirname(tofu->known_hosts_path, dname);
if (mkdirs(dname, 0755) != 0) {
- snprintf(tofu->known_hosts_path, sizeof(tofu->known_hosts_path),
- path_fmt, "known_hosts");
- fprintf(stderr, "Error creating directory %s: %s\n",
- dirname(tofu->known_hosts_path), strerror(errno));
+ fprintf(stderr, "Error creating directory %s: %s\n", dname,
+ strerror(errno));
return;
}
-
- snprintf(tofu->known_hosts_path, sizeof(tofu->known_hosts_path),
- path_fmt, "known_hosts");
- free(path_fmt);
tofu->callback = cb;
tofu->cb_data = cb_data;