stra_destroy(&acl->userids);
}
-/* git tools match /path/to/repo against /path/to/repo.git when the former
- * doesn't exist and the latter does. repo_shell addresses this by stripping
- * the .git prefix off all repopath's read in from .gitacls and the SSH comand
- * line. This mimics the expected git tool behavior except when /path/to/repo
- * and /path/to/repo.git both exist. This case shouldn't ever be seen anyway.
- */
-static char *strip_repo(const char *repo_name)
-{
- if (!repo_name)
- return NULL;
- else {
- char *dot = rindex(repo_name, '.');
-
- if (dot && !strcmp(dot, ".git"))
- return xstrndup(repo_name, dot - repo_name);
- else
- return xstrdup(repo_name);
- }
-}
-
static int acl_handler(void* user, const char* section, const char* name,
const char* value)
{
stra_add(&acl->userids, name);
}
} else if (!strcmp(section, "repo_groups")) {
- char *v = strip_repo(value);
- if (str_has_word(v, acl->repo)) {
+ if (str_has_repo(value, acl->repo)) {
//debug("repoids += '%s'", name);
stra_add(&acl->repoids, name);
}
- free(v);
} else if (!strncmp(section, "repo", 4)) {
char *_p = xstrdup(section + 4);
char *p = _p;