- size_t length = dir_len (path);
- int append_dot = (length == FILESYSTEM_PREFIX_LEN (path));
- char *newpath = xmalloc (length + append_dot + 1);
- memcpy (newpath, path, length);
- if (append_dot)
- newpath[length++] = '.';
- newpath[length] = 0;
- return newpath;
-}
-
-#ifdef TEST_DIRNAME
-/*
-
-Run the test like this (expect no output):
- gcc -DHAVE_CONFIG_H -DTEST_DIRNAME -I.. -O -Wall \
- basename.c dirname.c xmalloc.c
- sed -n '/^BEGIN-DATA$/,/^END-DATA$/p' dirname.c|grep -v DATA|./a.out
-
-BEGIN-DATA
-foo//// .
-bar/foo//// bar
-foo/ .
-/ /
-. .
-a .
-END-DATA
-
-*/
-
-# define MAX_BUFF_LEN 1024
-# include <stdio.h>
-
-int
-main ()
-{
- char buff[MAX_BUFF_LEN + 1];
-
- buff[MAX_BUFF_LEN] = 0;
- while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0])
- {
- char path[MAX_BUFF_LEN];
- char expected_result[MAX_BUFF_LEN];
- char const *result;
- sscanf (buff, "%s %s", path, expected_result);
- result = dir_name (path);
- if (strcmp (result, expected_result))
- printf ("%s: got %s, expected %s\n", path, result, expected_result);
- }
- return 0;