X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/1de6591159cfe2e0cb442d781c0a360e4928ccca..51338f7658f81ffc120969108ed88d97c1888617:/ui-repolist.c diff --git a/ui-repolist.c b/ui-repolist.c index 7b1fec3..a2e9e07 100644 --- a/ui-repolist.c +++ b/ui-repolist.c @@ -10,23 +10,25 @@ #include "ui-repolist.h" #include "html.h" #include "ui-shared.h" -#include static time_t read_agefile(char *path) { time_t result; size_t size; char *buf; - static char buf2[64]; + struct strbuf date_buf = STRBUF_INIT; - if (readfile(path, &buf, &size)) + if (readfile(path, &buf, &size)) { + free(buf); return -1; + } - if (parse_date(buf, buf2, sizeof(buf2)) > 0) - result = strtoul(buf2, NULL, 10); + if (parse_date(buf, &date_buf) == 0) + result = strtoul(date_buf.buf, NULL, 10); else result = 0; free(buf); + strbuf_release(&date_buf); return result; } @@ -99,24 +101,26 @@ static int is_in_url(struct cgit_repo *repo) { if (!ctx.qry.url) return 1; - if (repo->url && !prefixcmp(repo->url, ctx.qry.url)) + if (repo->url && starts_with(repo->url, ctx.qry.url)) return 1; return 0; } static void print_sort_header(const char *title, const char *sort) { + char *currenturl = cgit_currenturl(); html("%s", title); + free(currenturl); } -static void print_header() +static void print_header(void) { html(""); print_sort_header("Name", "name"); @@ -139,7 +143,7 @@ static void print_pager(int items, int pagelen, char *search, char *sort) class = (ctx.qry.ofs == ofs) ? "current" : NULL; html("
  • "); cgit_index_link(fmt("[%d]", i + 1), fmt("Page %d", i + 1), - class, search, sort, ofs); + class, search, sort, ofs, 0); html("
  • "); } html(""); @@ -222,7 +226,7 @@ struct sortcolumn { int (*fn)(const void *a, const void *b); }; -struct sortcolumn sortcolumn[] = { +static const struct sortcolumn sortcolumn[] = { {"section", sort_section}, {"name", sort_name}, {"desc", sort_desc}, @@ -233,7 +237,7 @@ struct sortcolumn sortcolumn[] = { static int sort_repolist(char *field) { - struct sortcolumn *column; + const struct sortcolumn *column; for (column = &sortcolumn[0]; column->name; column++) { if (strcmp(field, column->name)) @@ -246,7 +250,7 @@ static int sort_repolist(char *field) } -void cgit_print_repolist() +void cgit_print_repolist(void) { int i, columns = 3, hits = 0, header = 0; char *last_section = NULL; @@ -259,9 +263,9 @@ void cgit_print_repolist() ++columns; ctx.page.title = ctx.cfg.root_title; - cgit_print_http_headers(&ctx); - cgit_print_docstart(&ctx); - cgit_print_pageheader(&ctx); + cgit_print_http_headers(); + cgit_print_docstart(); + cgit_print_pageheader(); if (ctx.cfg.index_header) html_include(ctx.cfg.index_header); @@ -274,6 +278,8 @@ void cgit_print_repolist() html(""); for (i = 0; i < cgit_repolist.count; i++) { ctx.repo = &cgit_repolist.repos[i]; + if (ctx.repo->hide || ctx.repo->ignore) + continue; if (!(is_match(ctx.repo) && is_in_url(ctx.repo))) continue; hits++; @@ -306,7 +312,19 @@ void cgit_print_repolist() html_link_close(); html(""); } @@ -329,13 +347,14 @@ void cgit_print_repolist() cgit_print_docend(); } -void cgit_print_site_readme() +void cgit_print_site_readme(void) { + cgit_print_layout_start(); if (!ctx.cfg.root_readme) - return; - if (ctx.cfg.about_filter) - cgit_open_filter(ctx.cfg.about_filter, ctx.cfg.root_readme); + goto done; + cgit_open_filter(ctx.cfg.about_filter, ctx.cfg.root_readme); html_include(ctx.cfg.root_readme); - if (ctx.cfg.about_filter) - cgit_close_filter(ctx.cfg.about_filter); + cgit_close_filter(ctx.cfg.about_filter); +done: + cgit_print_layout_end(); }
    "); if (ctx.cfg.enable_index_owner) { - html_txt(ctx.repo->owner); + if (ctx.repo->owner_filter) { + cgit_open_filter(ctx.repo->owner_filter); + html_txt(ctx.repo->owner); + cgit_close_filter(ctx.repo->owner_filter); + } else { + html(""); + html_txt(ctx.repo->owner); + html(""); + } html(""); } print_modtime(ctx.repo); @@ -315,7 +333,7 @@ void cgit_print_repolist() html(""); cgit_summary_link("summary", NULL, "button", NULL); cgit_log_link("log", NULL, "button", NULL, NULL, NULL, - 0, NULL, NULL, ctx.qry.showmsg); + 0, NULL, NULL, ctx.qry.showmsg, 0); cgit_tree_link("tree", NULL, "button", NULL, NULL, NULL); html("