X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/961893b5478e7676b1a422185fcac41f89434b0a..fe1bb0e765883fa4149fba12daee81b6ae070de3:/ui-shared.c diff --git a/ui-shared.c b/ui-shared.c index d7d75bf..75b97a1 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -83,7 +83,7 @@ char *cgit_fileurl(const char *reponame, const char *pagename, } else { tmp = fmt("?url=%s/%s/%s", reponame, pagename, (filename ? filename : "")); - delim = "&"; + delim = "&"; } if (query) tmp = fmt("%s%s%s", tmp, delim, query); @@ -146,19 +146,19 @@ static void site_url(const char *page, const char *search, const char *sort, int if (page) { htmlf("?p=%s", page); - delim = "&"; + delim = "&"; } if (search) { html(delim); html("q="); html_attr(search); - delim = "&"; + delim = "&"; } if (sort) { html(delim); html("s="); html_attr(sort); - delim = "&"; + delim = "&"; } if (ofs) { html(delim); @@ -298,13 +298,13 @@ void cgit_log_link(const char *name, const char *title, const char *class, html(delim); html("id="); html_url_arg(rev); - delim = "&"; + delim = "&"; } if (grep && pattern) { html(delim); html("qt="); html_url_arg(grep); - delim = "&"; + delim = "&"; html(delim); html("q="); html_url_arg(pattern); @@ -313,7 +313,7 @@ void cgit_log_link(const char *name, const char *title, const char *class, html(delim); html("ofs="); htmlf("%d", ofs); - delim = "&"; + delim = "&"; } if (showmsg) { html(delim); @@ -361,7 +361,10 @@ void cgit_commit_link(char *name, const char *title, const char *class, delim = "&"; } html("'>"); - html_txt(name); + if (name[0] != '\0') + html_txt(name); + else + html_txt("(no commit message)"); html(""); } @@ -509,6 +512,62 @@ void cgit_object_link(struct object *obj) reporevlink(page, name, NULL, NULL, ctx.qry.head, fullrev, NULL); } +struct string_list_item *lookup_path(struct string_list *list, + const char *path) +{ + struct string_list_item *item; + + while (path && path[0]) { + if ((item = string_list_lookup(list, path))) + return item; + if (!(path = strchr(path, '/'))) + break; + path++; + } + return NULL; +} + +void cgit_submodule_link(const char *class, char *path, const char *rev) +{ + struct string_list *list; + struct string_list_item *item; + char tail, *dir; + size_t len; + + tail = 0; + list = &ctx.repo->submodules; + item = lookup_path(list, path); + if (!item) { + len = strlen(path); + tail = path[len - 1]; + if (tail == '/') { + path[len - 1] = 0; + item = lookup_path(list, path); + } + } + html("module_link, dir, rev)); + } else { + html("#"); + } + html("'>"); + html_txt(path); + html(""); + if (item && tail) + path[len - 1] = tail; +} + void cgit_print_date(time_t secs, const char *format, int local_time) { char buf[64];