From: hongzhidao Date: Sat, 23 Mar 2019 11:57:52 +0000 (+0300) Subject: Fixed nxt_file_dirname() for paths with no dir component. X-Git-Tag: 0.3.0~8 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=a2e77776d9cee708030a8b1cc11febd3a7cf0d4f;p=njs.git Fixed nxt_file_dirname() for paths with no dir component. Making it more similar to dirname shell cmd. This closes #114 issue on Github. --- 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("."); }