X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/f7f26f88755ac6a3b9af4918b51b0d6e7a692c78..d6e9200cc35411f3f27426b608bcfdef9348e6d3:/ui-shared.c diff --git a/ui-shared.c b/ui-shared.c index d32852f..4f47c50 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -120,7 +120,7 @@ const char *cgit_repobasename(const char *reponame) /* strip trailing slashes */ while (p && rvbuf[p] == '/') rvbuf[p--] = 0; /* strip trailing .git */ - if (p >= 3 && !strncmp(&rvbuf[p-3], ".git", 4)) { + if (p >= 3 && !prefixcmp(&rvbuf[p-3], ".git")) { p -= 3; rvbuf[p--] = 0; } /* strip more trailing slashes if any */ @@ -139,7 +139,7 @@ static void site_url(const char *page, const char *search, const char *sort, int if (ctx.cfg.virtual_root) html_attr(ctx.cfg.virtual_root); else - html(ctx.cfg.script_name); + html_url_path(ctx.cfg.script_name); if (page) { htmlf("?p=%s", page); @@ -219,7 +219,7 @@ static char *repolink(const char *title, const char *class, const char *page, html_url_path(path); } } else { - html(ctx.cfg.script_name); + html_url_path(ctx.cfg.script_name); html("?url="); html_url_arg(ctx.repo->url); if (ctx.repo->url[strlen(ctx.repo->url) - 1] != '/') @@ -641,6 +641,8 @@ void cgit_print_http_headers(struct cgit_context *ctx) if (ctx->page.filename) htmlf("Content-Disposition: inline; filename=\"%s\"\n", ctx->page.filename); + if (!ctx->env.authenticated) + html("Cache-Control: no-cache, no-store\n"); htmlf("Last-Modified: %s\n", http_date(ctx->page.modified)); htmlf("Expires: %s\n", http_date(ctx->page.expires)); if (ctx->page.etag) @@ -814,14 +816,16 @@ static void print_header(struct cgit_context *ctx) cgit_index_link("index", NULL, NULL, NULL, NULL, 0); html(" : "); cgit_summary_link(ctx->repo->name, ctx->repo->name, NULL, NULL); - html(""); - html("
\n"); - cgit_add_hidden_formfields(0, 1, ctx->qry.page); - html(" "); - html(""); - html("
"); + if (ctx->env.authenticated) { + html(""); + html("
\n"); + cgit_add_hidden_formfields(0, 1, ctx->qry.page); + html(" "); + html(""); + html("
"); + } } else html_txt(ctx->cfg.root_title); html("\n"); @@ -843,11 +847,11 @@ static void print_header(struct cgit_context *ctx) void cgit_print_pageheader(struct cgit_context *ctx) { html("
"); - if (!ctx->cfg.noheader) + if (!ctx->env.authenticated || !ctx->cfg.noheader) print_header(ctx); html("
\n"); - if (ctx->repo) { + if (ctx->env.authenticated && ctx->repo) { cgit_summary_link("summary", NULL, hc(ctx, "summary"), ctx->qry.head); cgit_refs_link("refs", NULL, hc(ctx, "refs"), ctx->qry.head, @@ -886,7 +890,7 @@ void cgit_print_pageheader(struct cgit_context *ctx) html("'/>\n"); html("\n"); html("\n"); - } else { + } else if (ctx->env.authenticated) { site_link(NULL, "index", NULL, hc(ctx, "repolist"), NULL, NULL, 0); if (ctx->cfg.root_readme) site_link("about", "about", NULL, hc(ctx, "about"), @@ -902,7 +906,7 @@ void cgit_print_pageheader(struct cgit_context *ctx) html(""); } html("
\n"); - if (ctx->qry.vpath) { + if (ctx->env.authenticated && ctx->qry.vpath) { html("
"); html("path: "); cgit_print_path_crumbs(ctx, ctx->qry.vpath);