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;