Add new utility method git__joinpath

Signed-off-by: Vicent Marti <tanoku@gmail.com>
This commit is contained in:
Vicent Marti 2011-02-05 13:12:02 +02:00
parent f725931b48
commit 412b388776
2 changed files with 32 additions and 0 deletions

View File

@ -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)

View File

@ -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);