Commit 412b3887 by Vicent Marti

Add new utility method `git__joinpath`

Signed-off-by: Vicent Marti <tanoku@gmail.com>
parent f725931b
......@@ -202,6 +202,30 @@ const char *git__topdir(const char *path)
return &path[i + 1];
}
char *git__joinpath(const char *path_a, const char *path_b)
{
int len_a, len_b;
char *path_new;
len_a = strlen(path_a);
len_b = strlen(path_b);
path_new = git__malloc(len_a + len_b + 2);
if (path_new == NULL)
return NULL;
strcpy(path_new, path_a);
if (path_new[len_a - 1] != '/')
path_new[len_a++] = '/';
if (path_b[0] == '/')
path_b++;
strcpy(path_new + len_a, path_b);
return path_new;
}
static char *strtok_raw(char *output, char *src, char *delimit, int keep)
{
while (*src && strchr(delimit, *src) == NULL)
......
......@@ -58,6 +58,14 @@ extern int git__basename_r(char *buffer, size_t bufflen, const char *path);
extern const char *git__topdir(const char *path);
/**
* Join two paths together. Takes care of properly fixing the
* middle slashes and everything
*
* Returns a newly allocated string; must be free'd manually.
*/
extern char *git__joinpath(const char *path_a, const char *path_b);
extern void git__hexdump(const char *buffer, size_t n);
extern uint32_t git__hash(const void *key, int len, uint32_t seed);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment