aboutsummaryrefslogtreecommitdiff
path: root/ui-shared.c
diff refs
from: back
to: back
| flip
diff options
context:
space:
mode:
Diffstat (limited to 'ui-shared.c')
-rw-r--r--ui-shared.c106
1 files changed, 6 insertions, 100 deletions
diff --git a/ui-shared.c b/ui-shared.c
index 9eb48a9..9a9d014 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -1,14 +1,6 @@
/* ui-shared.c: common web output functions
*
* Copyright (C) 2006-2017 cgit Development Team <cgit@lists.zx2c4.com>
- * Copyright (C) 2026 Saya Andy <saya.andy@posteo.com>
- *
- * Modified 2026 by Saya Andy:
- * Implement ci link tab
- * Check repo existence
- * Replace memrchr() for macOS compatibility
- * Allow multiple favicons of different mime types to be used
- * Include favicon.svg as default
*
* Licensed under GNU General Public License v2
* (see COPYING for full license text)
@@ -494,21 +486,6 @@ void cgit_diff_link(const char *name, const char *title, const char *class,
html_url_arg(old_rev);
delim = "&amp;";
}
- /*
- * Emit the ref offsets after the refs so that they follow the
- * refs through file-level links; a zero offset means the ref
- * itself.
- */
- if (ctx.qry.idoff) {
- html(delim);
- htmlf("idoff=%d", ctx.qry.idoff);
- delim = "&amp;";
- }
- if (ctx.qry.id2off) {
- html(delim);
- htmlf("id2off=%d", ctx.qry.id2off);
- delim = "&amp;";
- }
if (ctx.qry.difftype) {
html(delim);
htmlf("dt=%d", ctx.qry.difftype);
@@ -791,51 +768,6 @@ void cgit_redirect(const char *url, bool permanent)
html("\n\n");
}
-static const struct {
- const char *ext;
- const char *mimetype;
-} favicon_mimetypes[] = {
- { "ico", "image/x-icon" },
- { "png", "image/png" },
- { "svg", "image/svg+xml" },
- { "gif", "image/gif" },
- { "jpg", "image/jpeg" },
- { "jpeg", "image/jpeg" },
- { "webp", "image/webp" },
- { "avif", "image/avif" },
-};
-
-/* Deduce the mimetype of a favicon from the extension of its url, ignoring
- * any query string or fragment. Returns NULL for unknown extensions.
- */
-static const char *favicon_mimetype(const char *url)
-{
- const char *p, *end, *ext = NULL;
- size_t len;
- int i;
-
- end = strpbrk(url, "?#");
- if (!end)
- end = url + strlen(url);
-
- for (p = url; p < end; p++) {
- if (*p == '/')
- ext = NULL;
- else if (*p == '.')
- ext = p + 1;
- }
- if (!ext)
- return NULL;
- len = end - ext;
-
- for (i = 0; i < ARRAY_SIZE(favicon_mimetypes); i++) {
- if (strlen(favicon_mimetypes[i].ext) == len &&
- !strncasecmp(favicon_mimetypes[i].ext, ext, len))
- return favicon_mimetypes[i].mimetype;
- }
- return NULL;
-}
-
static void print_rel_vcs_link(const char *url)
{
html("<link rel='vcs-git' href='");
@@ -877,27 +809,6 @@ static int emit_js_link(struct string_list_item *s, void *arg)
return 0;
}
-static int emit_favicon_link(struct string_list_item *s, void *arg)
-{
- const char *url = s ? s->string : (const char *)arg;
- const char *mimetype;
-
- /* Do not emit anything if favicon= is specified. */
- if (!*url)
- return 0;
-
- html("<link rel='shortcut icon' href='");
- html_attr(url);
- mimetype = favicon_mimetype(url);
- if (mimetype) {
- html("' type='");
- html_attr(mimetype);
- }
- html("'/>\n");
-
- return 0;
-}
-
void cgit_print_docstart(void)
{
char *host = cgit_hosturl();
@@ -928,12 +839,11 @@ void cgit_print_docstart(void)
else
emit_js_link(NULL, "/cgit.js");
- if (ctx.cfg.favicon.items)
- for_each_string_list(&ctx.cfg.favicon, emit_favicon_link, NULL);
- else
- emit_favicon_link(NULL, "/favicon.svg");
- emit_favicon_link(NULL, "/favicon.ico");
-
+ if (ctx.cfg.favicon && *ctx.cfg.favicon) {
+ html("<link rel='shortcut icon' href='");
+ html_attr(ctx.cfg.favicon);
+ html("'/>\n");
+ }
if (host && ctx.repo && ctx.qry.head) {
char *fileurl;
struct strbuf sb = STRBUF_INIT;
@@ -974,7 +884,7 @@ void cgit_print_docend(void)
if (ctx.cfg.footer)
html_include(ctx.cfg.footer);
else {
- htmlf("<div class='footer'>generated by <a href='https://sayag.it/cgitext.git/about/'>cgitext %s</a> "
+ htmlf("<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit %s</a> "
"(<a href='https://git-scm.com/'>git %s</a>) at ", cgit_version, git_version_string);
html_txt(show_date(time(NULL), 0, cgit_date_mode(DATE_ISO8601)));
html("</div>\n");
@@ -1066,10 +976,6 @@ void cgit_add_hidden_formfields(int incl_head, int incl_search,
html_hidden("id", ctx.qry.oid);
if (ctx.qry.oid2)
html_hidden("id2", ctx.qry.oid2);
- if (ctx.qry.idoff)
- html_hidden("idoff", fmt("%d", ctx.qry.idoff));
- if (ctx.qry.id2off)
- html_hidden("id2off", fmt("%d", ctx.qry.id2off));
if (ctx.qry.showmsg)
html_hidden("showmsg", "1");