rename
[libc-test] / src / functional / dirname.c
diff --git a/src/functional/dirname.c b/src/functional/dirname.c
new file mode 100644 (file)
index 0000000..7a15a0a
--- /dev/null
@@ -0,0 +1,28 @@
+#include <stdlib.h>
+#include <string.h>
+#include <libgen.h>
+#include "test.h"
+
+#define T(path, want) \
+{ \
+       char tmp[100]; \
+       char *got = dirname(strcpy(tmp, path)); \
+       if (strcmp(want, got) != 0) \
+               error("dirname(\"%s\") got \"%s\" want \"%s\"\n", path, got, want); \
+}
+
+int main()
+{
+       if (strcmp(dirname(0), ".") != 0)
+               error("dirname(0) returned \"%s\"; expected \".\"\n", dirname(0));
+       T("", ".");
+       T("/usr/lib", "/usr");
+       T("/usr/", "/");
+       T("usr", ".");
+       T("usr/", ".");
+       T("/", "/");
+       T("///", "/");
+       T(".", ".");
+       T("..", ".");
+       return test_status;
+}