X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/03de473354dc8c17a3b23a973b5cc67752ad20cb..46ff6e1993175057a18b14980696648a1c5e87ab:/cmd.c diff --git a/cmd.c b/cmd.c index 20c80b0..0375c5a 100644 --- a/cmd.c +++ b/cmd.c @@ -41,10 +41,23 @@ static void about_fn(void) if (ctx.repo) { if (!ctx.qry.path && ctx.qry.url[strlen(ctx.qry.url) - 1] != '/' && - ctx.env.path_info[strlen(ctx.env.path_info) - 1] != '/') - cgit_redirect(fmtalloc("%s/", cgit_currenturl()), true); - else + ctx.env.path_info[strlen(ctx.env.path_info) - 1] != '/') { + char *currenturl = cgit_currenturl(); + char *redirect = fmtalloc("%s/", currenturl); + cgit_redirect(redirect, true); + free(currenturl); + free(redirect); + } else if (ctx.repo->readme.nr) cgit_print_repo_readme(ctx.qry.path); + else if (ctx.repo->homepage) + cgit_redirect(ctx.repo->homepage, false); + else { + char *currenturl = cgit_currenturl(); + char *redirect = fmtalloc("%s../", currenturl); + cgit_redirect(redirect, false); + free(currenturl); + free(redirect); + } } else cgit_print_site_readme(); } @@ -142,7 +155,7 @@ static void tree_fn(void) } #define def_cmd(name, want_repo, want_vpath, is_clone) \ - {#name, name##_fn, NULL, want_repo, want_vpath, is_clone} + {#name, name##_fn, want_repo, want_vpath, is_clone} struct cgit_cmd *cgit_get_cmd(void) {