]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Let basedir("foo") return "."
authorJoel Rosdahl <joel@rosdahl.net>
Thu, 15 Jul 2010 23:34:27 +0000 (01:34 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Thu, 15 Jul 2010 23:34:27 +0000 (01:34 +0200)
test/test_util.c
util.c

index ad5e77b9960176cae38a69e5a960f1ba67a4781e..dff063b37253cc2d6d29e259bfcc42a85f70bf54 100644 (file)
@@ -33,4 +33,12 @@ TEST(basename)
        CHECK_STR_EQ_FREE2("", basename("dir1/dir2/"));
 }
 
+TEST(dirname)
+{
+       CHECK_STR_EQ_FREE2(".", dirname("foo.c"));
+       CHECK_STR_EQ_FREE2("dir1/dir2", dirname("dir1/dir2/foo.c"));
+       CHECK_STR_EQ_FREE2("/dir", dirname("/dir/foo.c"));
+       CHECK_STR_EQ_FREE2("dir1/dir2", dirname("dir1/dir2/"));
+}
+
 TEST_SUITE_END
diff --git a/util.c b/util.c
index 6f7c781d378d13d77e03ef13209554b2435238e3..447bfaa70dfc34f93a5419041dc5ad98dc8c923d 100644 (file)
--- a/util.c
+++ b/util.c
@@ -620,8 +620,11 @@ char *dirname(char *s)
        p = strrchr(s, '/');
        if (p) {
                *p = 0;
+               return s;
+       } else {
+               free(s);
+               return x_strdup(".");
        }
-       return s;
 }
 
 /*