mirror of
https://git.zx2c4.com/cgit
synced 2024-11-08 09:38:41 +00:00
Fix cgit_parse_url when a repo url is contained in another repo url
For example, if I have two repos (remove-suffix is enabled): /foo /foo/bar http://cgit/foo/bar/ is interpreted as "repository 'foo', command 'bar'" instead of "repository 'foo/bar'"
This commit is contained in:
parent
88b9311323
commit
10451797fa
23
parsing.c
23
parsing.c
@ -17,7 +17,8 @@
|
||||
*/
|
||||
void cgit_parse_url(const char *url)
|
||||
{
|
||||
char *cmd, *p;
|
||||
char *c, *cmd, *p;
|
||||
struct cgit_repo *repo;
|
||||
|
||||
ctx.repo = NULL;
|
||||
if (!url || url[0] == '\0')
|
||||
@ -29,16 +30,20 @@ void cgit_parse_url(const char *url)
|
||||
return;
|
||||
}
|
||||
|
||||
cmd = strchr(url, '/');
|
||||
while (!ctx.repo && cmd) {
|
||||
cmd[0] = '\0';
|
||||
ctx.repo = cgit_get_repoinfo(url);
|
||||
if (ctx.repo == NULL) {
|
||||
cmd[0] = '/';
|
||||
cmd = strchr(cmd + 1, '/');
|
||||
continue;
|
||||
cmd = NULL;
|
||||
c = strchr(url, '/');
|
||||
while (c) {
|
||||
c[0] = '\0';
|
||||
repo = cgit_get_repoinfo(url);
|
||||
if (repo) {
|
||||
ctx.repo = repo;
|
||||
cmd = c;
|
||||
}
|
||||
c[0] = '/';
|
||||
c = strchr(c + 1, '/');
|
||||
}
|
||||
|
||||
if (ctx.repo) {
|
||||
ctx.qry.repo = ctx.repo->url;
|
||||
p = strchr(cmd + 1, '/');
|
||||
if (p) {
|
||||
|
Loading…
Reference in New Issue
Block a user