diff options
Diffstat (limited to 'cgit.c')
| -rw-r--r-- | cgit.c | 35 |
1 files changed, 35 insertions, 0 deletions
| @@ -14,6 +14,8 @@ | |||
| 14 | #include "html.h" | 14 | #include "html.h" |
| 15 | #include "ui-shared.h" | 15 | #include "ui-shared.h" |
| 16 | #include "ui-stats.h" | 16 | #include "ui-stats.h" |
| 17 | #include "ui-blob.h" | ||
| 18 | #include "ui-summary.h" | ||
| 17 | #include "scan-tree.h" | 19 | #include "scan-tree.h" |
| 18 | 20 | ||
| 19 | const char *cgit_version = CGIT_VERSION; | 21 | const char *cgit_version = CGIT_VERSION; |
| @@ -469,6 +471,38 @@ static char *guess_defbranch(void) | |||
| 469 | return xstrdup(ref + 11); | 471 | return xstrdup(ref + 11); |
| 470 | } | 472 | } |
| 471 | 473 | ||
| 474 | static void choose_readme(struct cgit_repo *repo) | ||
| 475 | { | ||
| 476 | char *entry, *filename, *ref; | ||
| 477 | |||
| 478 | /* If there's no space, we skip the possibly expensive | ||
| 479 | * selection process. */ | ||
| 480 | if (!repo->readme || !strchr(repo->readme, ' ')) | ||
| 481 | return; | ||
| 482 | |||
| 483 | for (entry = strtok(repo->readme, " "); entry; entry = strtok(NULL, " ")) { | ||
| 484 | cgit_parse_readme(entry, NULL, &filename, &ref, repo); | ||
| 485 | if (!(*filename)) { | ||
| 486 | free(filename); | ||
| 487 | free(ref); | ||
| 488 | continue; | ||
| 489 | } | ||
| 490 | if (*ref && cgit_ref_path_exists(filename, ref)) { | ||
| 491 | free(filename); | ||
| 492 | free(ref); | ||
| 493 | break; | ||
| 494 | } | ||
| 495 | if (!access(filename, R_OK)) { | ||
| 496 | free(filename); | ||
| 497 | free(ref); | ||
| 498 | break; | ||
| 499 | } | ||
| 500 | free(filename); | ||
| 501 | free(ref); | ||
| 502 | } | ||
| 503 | repo->readme = entry; | ||
| 504 | } | ||
| 505 | |||
| 472 | static int prepare_repo_cmd(struct cgit_context *ctx) | 506 | static int prepare_repo_cmd(struct cgit_context *ctx) |
| 473 | { | 507 | { |
| 474 | unsigned char sha1[20]; | 508 | unsigned char sha1[20]; |
| @@ -537,6 +571,7 @@ static int prepare_repo_cmd(struct cgit_context *ctx) | |||
| 537 | } | 571 | } |
| 538 | sort_string_list(&ctx->repo->submodules); | 572 | sort_string_list(&ctx->repo->submodules); |
| 539 | cgit_prepare_repo_env(ctx->repo); | 573 | cgit_prepare_repo_env(ctx->repo); |
| 574 | choose_readme(ctx->repo); | ||
| 540 | return 0; | 575 | return 0; |
| 541 | } | 576 | } |
| 542 | 577 | ||
