]> git.kaiwu.me - njs.git/commitdiff
Fixed nxt_file_dirname() for paths with no dir component.
authorhongzhidao <hongzhidao@gmail.com>
Sat, 23 Mar 2019 11:57:52 +0000 (14:57 +0300)
committerhongzhidao <hongzhidao@gmail.com>
Sat, 23 Mar 2019 11:57:52 +0000 (14:57 +0300)
Making it more similar to dirname shell cmd.

This closes #114 issue on Github.

njs/test/njs_unit_test.c
nxt/nxt_file.c

index c3defffb5c465f85b10133358ee26a2b686359b9..c6e84c0d64403002c314c7248e2b79b32be0f877 100644 (file)
@@ -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") },
index 4552e484f80db7538c72a498b1b3750e3fbc4b8f..40edbcc92f30ec0909b7b264a71085cda6ea6281 100644 (file)
@@ -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(".");
 }