From a2e77776d9cee708030a8b1cc11febd3a7cf0d4f Mon Sep 17 00:00:00 2001 From: hongzhidao Date: Sat, 23 Mar 2019 14:57:52 +0300 Subject: [PATCH] Fixed nxt_file_dirname() for paths with no dir component. Making it more similar to dirname shell cmd. This closes #114 issue on Github. --- njs/test/njs_unit_test.c | 4 ++-- nxt/nxt_file.c | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index c3defffb..c6e84c0d 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -12456,13 +12456,13 @@ nxt_file_dirname_test(njs_vm_t * vm, nxt_bool_t disassemble, nxt_str_t path; nxt_str_t expected; } tests[] = { - { nxt_string(""), nxt_string("") }, + { nxt_string(""), nxt_string(".") }, { nxt_string("/"), nxt_string("/") }, { nxt_string("/a"), nxt_string("/") }, { nxt_string("///"), nxt_string("///") }, { nxt_string("///a"), nxt_string("///") }, { nxt_string("///a/"), nxt_string("///a") }, - { nxt_string("a"), nxt_string("") }, + { nxt_string("a"), nxt_string(".") }, { nxt_string("a/"), nxt_string("a") }, { nxt_string("a//"), nxt_string("a") }, { nxt_string("p1/p2/name"), nxt_string("p1/p2") }, diff --git a/nxt/nxt_file.c b/nxt/nxt_file.c index 4552e484..40edbcc9 100644 --- a/nxt/nxt_file.c +++ b/nxt/nxt_file.c @@ -38,8 +38,7 @@ nxt_file_dirname(const nxt_str_t *path, nxt_str_t *name) const u_char *p, *end; if (path->length == 0) { - *name = nxt_string_value(""); - return; + goto current_dir; } p = path->start + path->length - 1; @@ -51,8 +50,7 @@ nxt_file_dirname(const nxt_str_t *path, nxt_str_t *name) end = p + 1; if (end == path->start) { - *name = nxt_string_value(""); - return; + goto current_dir; } /* Stripping trailing slashes. */ @@ -67,4 +65,10 @@ nxt_file_dirname(const nxt_str_t *path, nxt_str_t *name) name->start = path->start; name->length = p - path->start; + + return; + +current_dir: + + *name = nxt_string_value("."); } -- 2.47.3