| -rw-r--r-- | cgit.c | 2 | ||||
| -rw-r--r-- | ui-shared.c | 37 | ||||
| -rw-r--r-- | ui-shared.h | 1 |
3 files changed, 3 insertions, 37 deletions
@@ -645,7 +645,7 @@ static inline void open_auth_filter(const char *function) ctx.env.https ? ctx.env.https : "", ctx.qry.repo ? ctx.qry.repo : "", ctx.qry.page ? ctx.qry.page : "", - cgit_currentfullurl(), + ctx.qry.url ? ctx.qry.url : "", cgit_loginurl()); } diff --git a/ui-shared.c b/ui-shared.c index 7a4c726..b53c56d 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -68,48 +68,15 @@ char *cgit_hosturl(void) char *cgit_currenturl(void) { const char *root = cgit_rooturl(); + size_t len = strlen(root); if (!ctx.qry.url) return xstrdup(root); - if (root[0] && root[strlen(root) - 1] == '/') + if (len && root[len - 1] == '/') return fmtalloc("%s%s", root, ctx.qry.url); return fmtalloc("%s/%s", root, ctx.qry.url); } -char *cgit_currentfullurl(void) -{ - const char *root = cgit_rooturl(); - const char *orig_query = ctx.env.query_string ? ctx.env.query_string : ""; - size_t len = strlen(orig_query); - char *query = xmalloc(len + 2), *start_url, *ret; - - /* Remove all url=... parts from query string */ - memcpy(query + 1, orig_query, len + 1); - query[0] = '?'; - start_url = query; - while ((start_url = strstr(start_url, "url=")) != NULL) { - if (start_url[-1] == '?' || start_url[-1] == '&') { - const char *end_url = strchr(start_url, '&'); - if (end_url) - memmove(start_url, end_url + 1, strlen(end_url)); - else - start_url[0] = '\0'; - } else - ++start_url; - } - if (!query[1]) - query[0] = '\0'; - - if (!ctx.qry.url) - ret = fmtalloc("%s%s", root, query); - else if (root[0] && root[strlen(root) - 1] == '/') - ret = fmtalloc("%s%s%s", root, ctx.qry.url, query); - else - ret = fmtalloc("%s/%s%s", root, ctx.qry.url, query); - free(query); - return ret; -} - const char *cgit_rooturl(void) { if (ctx.cfg.virtual_root) diff --git a/ui-shared.h b/ui-shared.h index 6964873..4d5978b 100644 --- a/ui-shared.h +++ b/ui-shared.h @@ -5,7 +5,6 @@ extern const char *cgit_httpscheme(void); extern char *cgit_hosturl(void); extern const char *cgit_rooturl(void); extern char *cgit_currenturl(void); -extern char *cgit_currentfullurl(void); extern const char *cgit_loginurl(void); extern char *cgit_repourl(const char *reponame); extern char *cgit_fileurl(const char *reponame, const char *pagename, |