-rw-r--r-- | cgit.c | 4 | ||||
-rw-r--r-- | cgit.h | 2 | ||||
-rw-r--r-- | cgitrc.5.txt | 9 | ||||
-rw-r--r-- | ui-shared.c | 28 |
4 files changed, 37 insertions, 6 deletions
@@ -42,46 +42,50 @@ void config_cb(const char *name, const char *value) | |||
42 | else if (!strcmp(name, "index-info")) | 42 | else if (!strcmp(name, "index-info")) |
43 | ctx.cfg.index_info = xstrdup(value); | 43 | ctx.cfg.index_info = xstrdup(value); |
44 | else if (!strcmp(name, "logo-link")) | 44 | else if (!strcmp(name, "logo-link")) |
45 | ctx.cfg.logo_link = xstrdup(value); | 45 | ctx.cfg.logo_link = xstrdup(value); |
46 | else if (!strcmp(name, "module-link")) | 46 | else if (!strcmp(name, "module-link")) |
47 | ctx.cfg.module_link = xstrdup(value); | 47 | ctx.cfg.module_link = xstrdup(value); |
48 | else if (!strcmp(name, "virtual-root")) { | 48 | else if (!strcmp(name, "virtual-root")) { |
49 | ctx.cfg.virtual_root = trim_end(value, '/'); | 49 | ctx.cfg.virtual_root = trim_end(value, '/'); |
50 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) | 50 | if (!ctx.cfg.virtual_root && (!strcmp(value, "/"))) |
51 | ctx.cfg.virtual_root = ""; | 51 | ctx.cfg.virtual_root = ""; |
52 | } else if (!strcmp(name, "nocache")) | 52 | } else if (!strcmp(name, "nocache")) |
53 | ctx.cfg.nocache = atoi(value); | 53 | ctx.cfg.nocache = atoi(value); |
54 | else if (!strcmp(name, "noheader")) | ||
55 | ctx.cfg.noheader = atoi(value); | ||
54 | else if (!strcmp(name, "snapshots")) | 56 | else if (!strcmp(name, "snapshots")) |
55 | ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); | 57 | ctx.cfg.snapshots = cgit_parse_snapshots_mask(value); |
56 | else if (!strcmp(name, "enable-index-links")) | 58 | else if (!strcmp(name, "enable-index-links")) |
57 | ctx.cfg.enable_index_links = atoi(value); | 59 | ctx.cfg.enable_index_links = atoi(value); |
58 | else if (!strcmp(name, "enable-log-filecount")) | 60 | else if (!strcmp(name, "enable-log-filecount")) |
59 | ctx.cfg.enable_log_filecount = atoi(value); | 61 | ctx.cfg.enable_log_filecount = atoi(value); |
60 | else if (!strcmp(name, "enable-log-linecount")) | 62 | else if (!strcmp(name, "enable-log-linecount")) |
61 | ctx.cfg.enable_log_linecount = atoi(value); | 63 | ctx.cfg.enable_log_linecount = atoi(value); |
62 | else if (!strcmp(name, "max-stats")) | 64 | else if (!strcmp(name, "max-stats")) |
63 | ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); | 65 | ctx.cfg.max_stats = cgit_find_stats_period(value, NULL); |
64 | else if (!strcmp(name, "cache-size")) | 66 | else if (!strcmp(name, "cache-size")) |
65 | ctx.cfg.cache_size = atoi(value); | 67 | ctx.cfg.cache_size = atoi(value); |
66 | else if (!strcmp(name, "cache-root")) | 68 | else if (!strcmp(name, "cache-root")) |
67 | ctx.cfg.cache_root = xstrdup(value); | 69 | ctx.cfg.cache_root = xstrdup(value); |
68 | else if (!strcmp(name, "cache-root-ttl")) | 70 | else if (!strcmp(name, "cache-root-ttl")) |
69 | ctx.cfg.cache_root_ttl = atoi(value); | 71 | ctx.cfg.cache_root_ttl = atoi(value); |
70 | else if (!strcmp(name, "cache-repo-ttl")) | 72 | else if (!strcmp(name, "cache-repo-ttl")) |
71 | ctx.cfg.cache_repo_ttl = atoi(value); | 73 | ctx.cfg.cache_repo_ttl = atoi(value); |
72 | else if (!strcmp(name, "cache-static-ttl")) | 74 | else if (!strcmp(name, "cache-static-ttl")) |
73 | ctx.cfg.cache_static_ttl = atoi(value); | 75 | ctx.cfg.cache_static_ttl = atoi(value); |
74 | else if (!strcmp(name, "cache-dynamic-ttl")) | 76 | else if (!strcmp(name, "cache-dynamic-ttl")) |
75 | ctx.cfg.cache_dynamic_ttl = atoi(value); | 77 | ctx.cfg.cache_dynamic_ttl = atoi(value); |
78 | else if (!strcmp(name, "embedded")) | ||
79 | ctx.cfg.embedded = atoi(value); | ||
76 | else if (!strcmp(name, "max-message-length")) | 80 | else if (!strcmp(name, "max-message-length")) |
77 | ctx.cfg.max_msg_len = atoi(value); | 81 | ctx.cfg.max_msg_len = atoi(value); |
78 | else if (!strcmp(name, "max-repodesc-length")) | 82 | else if (!strcmp(name, "max-repodesc-length")) |
79 | ctx.cfg.max_repodesc_len = atoi(value); | 83 | ctx.cfg.max_repodesc_len = atoi(value); |
80 | else if (!strcmp(name, "max-repo-count")) | 84 | else if (!strcmp(name, "max-repo-count")) |
81 | ctx.cfg.max_repo_count = atoi(value); | 85 | ctx.cfg.max_repo_count = atoi(value); |
82 | else if (!strcmp(name, "max-commit-count")) | 86 | else if (!strcmp(name, "max-commit-count")) |
83 | ctx.cfg.max_commit_count = atoi(value); | 87 | ctx.cfg.max_commit_count = atoi(value); |
84 | else if (!strcmp(name, "summary-log")) | 88 | else if (!strcmp(name, "summary-log")) |
85 | ctx.cfg.summary_log = atoi(value); | 89 | ctx.cfg.summary_log = atoi(value); |
86 | else if (!strcmp(name, "summary-branches")) | 90 | else if (!strcmp(name, "summary-branches")) |
87 | ctx.cfg.summary_branches = atoi(value); | 91 | ctx.cfg.summary_branches = atoi(value); |
@@ -147,35 +147,37 @@ struct cgit_config { | |||
147 | char *robots; | 147 | char *robots; |
148 | char *root_title; | 148 | char *root_title; |
149 | char *root_desc; | 149 | char *root_desc; |
150 | char *root_readme; | 150 | char *root_readme; |
151 | char *script_name; | 151 | char *script_name; |
152 | char *virtual_root; | 152 | char *virtual_root; |
153 | int cache_size; | 153 | int cache_size; |
154 | int cache_dynamic_ttl; | 154 | int cache_dynamic_ttl; |
155 | int cache_max_create_time; | 155 | int cache_max_create_time; |
156 | int cache_repo_ttl; | 156 | int cache_repo_ttl; |
157 | int cache_root_ttl; | 157 | int cache_root_ttl; |
158 | int cache_static_ttl; | 158 | int cache_static_ttl; |
159 | int embedded; | ||
159 | int enable_index_links; | 160 | int enable_index_links; |
160 | int enable_log_filecount; | 161 | int enable_log_filecount; |
161 | int enable_log_linecount; | 162 | int enable_log_linecount; |
162 | int local_time; | 163 | int local_time; |
163 | int max_repo_count; | 164 | int max_repo_count; |
164 | int max_commit_count; | 165 | int max_commit_count; |
165 | int max_lock_attempts; | 166 | int max_lock_attempts; |
166 | int max_msg_len; | 167 | int max_msg_len; |
167 | int max_repodesc_len; | 168 | int max_repodesc_len; |
168 | int max_stats; | 169 | int max_stats; |
169 | int nocache; | 170 | int nocache; |
171 | int noheader; | ||
170 | int renamelimit; | 172 | int renamelimit; |
171 | int snapshots; | 173 | int snapshots; |
172 | int summary_branches; | 174 | int summary_branches; |
173 | int summary_log; | 175 | int summary_log; |
174 | int summary_tags; | 176 | int summary_tags; |
175 | }; | 177 | }; |
176 | 178 | ||
177 | struct cgit_page { | 179 | struct cgit_page { |
178 | time_t modified; | 180 | time_t modified; |
179 | time_t expires; | 181 | time_t expires; |
180 | size_t size; | 182 | size_t size; |
181 | char *mimetype; | 183 | char *mimetype; |
diff --git a/cgitrc.5.txt b/cgitrc.5.txt index 683f3b5..a207fe0 100644 --- a/cgitrc.5.txt +++ b/cgitrc.5.txt | |||
@@ -50,24 +50,29 @@ cache-static-ttl:: | |||
50 | "5". | 50 | "5". |
51 | 51 | ||
52 | clone-prefix:: | 52 | clone-prefix:: |
53 | Space-separated list of common prefixes which, when combined with a | 53 | Space-separated list of common prefixes which, when combined with a |
54 | repository url, generates valid clone urls for the repository. This | 54 | repository url, generates valid clone urls for the repository. This |
55 | setting is only used if `repo.clone-url` is unspecified. Default value: | 55 | setting is only used if `repo.clone-url` is unspecified. Default value: |
56 | none. | 56 | none. |
57 | 57 | ||
58 | css:: | 58 | css:: |
59 | Url which specifies the css document to include in all cgit pages. | 59 | Url which specifies the css document to include in all cgit pages. |
60 | Default value: "/cgit.css". | 60 | Default value: "/cgit.css". |
61 | 61 | ||
62 | embedded:: | ||
63 | Flag which, when set to "1", will make cgit generate a html fragment | ||
64 | suitable for embedding in other html pages. Default value: none. See | ||
65 | also: "noheader". | ||
66 | |||
62 | enable-index-links:: | 67 | enable-index-links:: |
63 | Flag which, when set to "1", will make cgit generate extra links for | 68 | Flag which, when set to "1", will make cgit generate extra links for |
64 | each repo in the repository index (specifically, to the "summary", | 69 | each repo in the repository index (specifically, to the "summary", |
65 | "commit" and "tree" pages). Default value: "0". | 70 | "commit" and "tree" pages). Default value: "0". |
66 | 71 | ||
67 | enable-log-filecount:: | 72 | enable-log-filecount:: |
68 | Flag which, when set to "1", will make cgit print the number of | 73 | Flag which, when set to "1", will make cgit print the number of |
69 | modified files for each commit on the repository log page. Default | 74 | modified files for each commit on the repository log page. Default |
70 | value: "0". | 75 | value: "0". |
71 | 76 | ||
72 | enable-log-linecount:: | 77 | enable-log-linecount:: |
73 | Flag which, when set to "1", will make cgit print the number of added | 78 | Flag which, when set to "1", will make cgit print the number of added |
@@ -144,24 +149,28 @@ max-stats:: | |||
144 | 149 | ||
145 | module-link:: | 150 | module-link:: |
146 | Text which will be used as the formatstring for a hyperlink when a | 151 | Text which will be used as the formatstring for a hyperlink when a |
147 | submodule is printed in a directory listing. The arguments for the | 152 | submodule is printed in a directory listing. The arguments for the |
148 | formatstring are the path and SHA1 of the submodule commit. Default | 153 | formatstring are the path and SHA1 of the submodule commit. Default |
149 | value: "./?repo=%s&page=commit&id=%s" | 154 | value: "./?repo=%s&page=commit&id=%s" |
150 | 155 | ||
151 | nocache:: | 156 | nocache:: |
152 | If set to the value "1" caching will be disabled. This settings is | 157 | If set to the value "1" caching will be disabled. This settings is |
153 | deprecated, and will not be honored starting with cgit-1.0. Default | 158 | deprecated, and will not be honored starting with cgit-1.0. Default |
154 | value: "0". | 159 | value: "0". |
155 | 160 | ||
161 | noheader:: | ||
162 | Flag which, when set to "1", will make cgit omit the standard header | ||
163 | on all pages. Default value: none. See also: "embedded". | ||
164 | |||
156 | renamelimit:: | 165 | renamelimit:: |
157 | Maximum number of files to consider when detecting renames. The value | 166 | Maximum number of files to consider when detecting renames. The value |
158 | "-1" uses the compiletime value in git (for further info, look at | 167 | "-1" uses the compiletime value in git (for further info, look at |
159 | `man git-diff`). Default value: "-1". | 168 | `man git-diff`). Default value: "-1". |
160 | 169 | ||
161 | repo.group:: | 170 | repo.group:: |
162 | A value for the current repository group, which all repositories | 171 | A value for the current repository group, which all repositories |
163 | specified after this setting will inherit. Default value: none. | 172 | specified after this setting will inherit. Default value: none. |
164 | 173 | ||
165 | robots:: | 174 | robots:: |
166 | Text used as content for the "robots" meta-tag. Default value: | 175 | Text used as content for the "robots" meta-tag. Default value: |
167 | "index, nofollow". | 176 | "index, nofollow". |
diff --git a/ui-shared.c b/ui-shared.c index 66d5b82..015c52b 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -460,47 +460,53 @@ void cgit_print_age(time_t t, time_t max_relative, char *format) | |||
460 | htmlf("<span class='age-months'>%.0f months</span>", | 460 | htmlf("<span class='age-months'>%.0f months</span>", |
461 | secs * 1.0 / TM_MONTH); | 461 | secs * 1.0 / TM_MONTH); |
462 | return; | 462 | return; |
463 | } | 463 | } |
464 | htmlf("<span class='age-years'>%.0f years</span>", | 464 | htmlf("<span class='age-years'>%.0f years</span>", |
465 | secs * 1.0 / TM_YEAR); | 465 | secs * 1.0 / TM_YEAR); |
466 | } | 466 | } |
467 | 467 | ||
468 | void cgit_print_http_headers(struct cgit_context *ctx) | 468 | void cgit_print_http_headers(struct cgit_context *ctx) |
469 | { | 469 | { |
470 | const char *method = getenv("REQUEST_METHOD"); | 470 | const char *method = getenv("REQUEST_METHOD"); |
471 | 471 | ||
472 | if (ctx->cfg.embedded) | ||
473 | return; | ||
474 | |||
472 | if (ctx->page.status) | 475 | if (ctx->page.status) |
473 | htmlf("Status: %d %s\n", ctx->page.status, ctx->page.statusmsg); | 476 | htmlf("Status: %d %s\n", ctx->page.status, ctx->page.statusmsg); |
474 | if (ctx->page.mimetype && ctx->page.charset) | 477 | if (ctx->page.mimetype && ctx->page.charset) |
475 | htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, | 478 | htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, |
476 | ctx->page.charset); | 479 | ctx->page.charset); |
477 | else if (ctx->page.mimetype) | 480 | else if (ctx->page.mimetype) |
478 | htmlf("Content-Type: %s\n", ctx->page.mimetype); | 481 | htmlf("Content-Type: %s\n", ctx->page.mimetype); |
479 | if (ctx->page.size) | 482 | if (ctx->page.size) |
480 | htmlf("Content-Length: %ld\n", ctx->page.size); | 483 | htmlf("Content-Length: %ld\n", ctx->page.size); |
481 | if (ctx->page.filename) | 484 | if (ctx->page.filename) |
482 | htmlf("Content-Disposition: inline; filename=\"%s\"\n", | 485 | htmlf("Content-Disposition: inline; filename=\"%s\"\n", |
483 | ctx->page.filename); | 486 | ctx->page.filename); |
484 | htmlf("Last-Modified: %s\n", http_date(ctx->page.modified)); | 487 | htmlf("Last-Modified: %s\n", http_date(ctx->page.modified)); |
485 | htmlf("Expires: %s\n", http_date(ctx->page.expires)); | 488 | htmlf("Expires: %s\n", http_date(ctx->page.expires)); |
486 | if (ctx->page.etag) | 489 | if (ctx->page.etag) |
487 | htmlf("ETag: \"%s\"\n", ctx->page.etag); | 490 | htmlf("ETag: \"%s\"\n", ctx->page.etag); |
488 | html("\n"); | 491 | html("\n"); |
489 | if (method && !strcmp(method, "HEAD")) | 492 | if (method && !strcmp(method, "HEAD")) |
490 | exit(0); | 493 | exit(0); |
491 | } | 494 | } |
492 | 495 | ||
493 | void cgit_print_docstart(struct cgit_context *ctx) | 496 | void cgit_print_docstart(struct cgit_context *ctx) |
494 | { | 497 | { |
498 | if (ctx->cfg.embedded) | ||
499 | return; | ||
500 | |||
495 | char *host = cgit_hosturl(); | 501 | char *host = cgit_hosturl(); |
496 | html(cgit_doctype); | 502 | html(cgit_doctype); |
497 | html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); | 503 | html("<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>\n"); |
498 | html("<head>\n"); | 504 | html("<head>\n"); |
499 | html("<title>"); | 505 | html("<title>"); |
500 | html_txt(ctx->page.title); | 506 | html_txt(ctx->page.title); |
501 | html("</title>\n"); | 507 | html("</title>\n"); |
502 | htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); | 508 | htmlf("<meta name='generator' content='cgit %s'/>\n", cgit_version); |
503 | if (ctx->cfg.robots && *ctx->cfg.robots) | 509 | if (ctx->cfg.robots && *ctx->cfg.robots) |
504 | htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots); | 510 | htmlf("<meta name='robots' content='%s'/>\n", ctx->cfg.robots); |
505 | html("<link rel='stylesheet' type='text/css' href='"); | 511 | html("<link rel='stylesheet' type='text/css' href='"); |
506 | html_attr(ctx->cfg.css); | 512 | html_attr(ctx->cfg.css); |
@@ -528,24 +534,27 @@ void cgit_print_docstart(struct cgit_context *ctx) | |||
528 | 534 | ||
529 | void cgit_print_docend() | 535 | void cgit_print_docend() |
530 | { | 536 | { |
531 | html("</div>"); | 537 | html("</div>"); |
532 | if (ctx.cfg.footer) | 538 | if (ctx.cfg.footer) |
533 | html_include(ctx.cfg.footer); | 539 | html_include(ctx.cfg.footer); |
534 | else { | 540 | else { |
535 | htmlf("<div class='footer'>generated by cgit %s at ", | 541 | htmlf("<div class='footer'>generated by cgit %s at ", |
536 | cgit_version); | 542 | cgit_version); |
537 | cgit_print_date(time(NULL), FMT_LONGDATE, ctx.cfg.local_time); | 543 | cgit_print_date(time(NULL), FMT_LONGDATE, ctx.cfg.local_time); |
538 | html("</div>\n"); | 544 | html("</div>\n"); |
539 | } | 545 | } |
546 | html("</div>"); | ||
547 | if (ctx.cfg.embedded) | ||
548 | return; | ||
540 | html("</body>\n</html>\n"); | 549 | html("</body>\n</html>\n"); |
541 | } | 550 | } |
542 | 551 | ||
543 | int print_branch_option(const char *refname, const unsigned char *sha1, | 552 | int print_branch_option(const char *refname, const unsigned char *sha1, |
544 | int flags, void *cb_data) | 553 | int flags, void *cb_data) |
545 | { | 554 | { |
546 | char *name = (char *)refname; | 555 | char *name = (char *)refname; |
547 | html_option(name, name, ctx.qry.head); | 556 | html_option(name, name, ctx.qry.head); |
548 | return 0; | 557 | return 0; |
549 | } | 558 | } |
550 | 559 | ||
551 | int print_archive_ref(const char *refname, const unsigned char *sha1, | 560 | int print_archive_ref(const char *refname, const unsigned char *sha1, |
@@ -615,31 +624,26 @@ void cgit_add_hidden_formfields(int incl_head, int incl_search, char *page) | |||
615 | if (ctx.qry.search) | 624 | if (ctx.qry.search) |
616 | html_hidden("q", ctx.qry.search); | 625 | html_hidden("q", ctx.qry.search); |
617 | } | 626 | } |
618 | } | 627 | } |
619 | 628 | ||
620 | const char *fallback_cmd = "repolist"; | 629 | const char *fallback_cmd = "repolist"; |
621 | 630 | ||
622 | char *hc(struct cgit_cmd *cmd, const char *page) | 631 | char *hc(struct cgit_cmd *cmd, const char *page) |
623 | { | 632 | { |
624 | return (strcmp(cmd ? cmd->name : fallback_cmd, page) ? NULL : "active"); | 633 | return (strcmp(cmd ? cmd->name : fallback_cmd, page) ? NULL : "active"); |
625 | } | 634 | } |
626 | 635 | ||
627 | void cgit_print_pageheader(struct cgit_context *ctx) | 636 | static void print_header(struct cgit_context *ctx) |
628 | { | 637 | { |
629 | struct cgit_cmd *cmd = cgit_get_cmd(ctx); | ||
630 | |||
631 | if (!cmd && ctx->repo) | ||
632 | fallback_cmd = "summary"; | ||
633 | |||
634 | html("<table id='header'>\n"); | 638 | html("<table id='header'>\n"); |
635 | html("<tr>\n"); | 639 | html("<tr>\n"); |
636 | html("<td class='logo' rowspan='2'><a href='"); | 640 | html("<td class='logo' rowspan='2'><a href='"); |
637 | if (ctx->cfg.logo_link) | 641 | if (ctx->cfg.logo_link) |
638 | html_attr(ctx->cfg.logo_link); | 642 | html_attr(ctx->cfg.logo_link); |
639 | else | 643 | else |
640 | html_attr(cgit_rooturl()); | 644 | html_attr(cgit_rooturl()); |
641 | html("'><img src='"); | 645 | html("'><img src='"); |
642 | html_attr(ctx->cfg.logo); | 646 | html_attr(ctx->cfg.logo); |
643 | html("' alt='cgit logo'/></a></td>\n"); | 647 | html("' alt='cgit logo'/></a></td>\n"); |
644 | 648 | ||
645 | html("<td class='main'>"); | 649 | html("<td class='main'>"); |
@@ -662,24 +666,36 @@ void cgit_print_pageheader(struct cgit_context *ctx) | |||
662 | html("<tr><td class='sub'>"); | 666 | html("<tr><td class='sub'>"); |
663 | if (ctx->repo) { | 667 | if (ctx->repo) { |
664 | html_txt(ctx->repo->desc); | 668 | html_txt(ctx->repo->desc); |
665 | html("</td><td class='sub right'>"); | 669 | html("</td><td class='sub right'>"); |
666 | html_txt(ctx->repo->owner); | 670 | html_txt(ctx->repo->owner); |
667 | } else { | 671 | } else { |
668 | if (ctx->cfg.root_desc) | 672 | if (ctx->cfg.root_desc) |
669 | html_txt(ctx->cfg.root_desc); | 673 | html_txt(ctx->cfg.root_desc); |
670 | else if (ctx->cfg.index_info) | 674 | else if (ctx->cfg.index_info) |
671 | html_include(ctx->cfg.index_info); | 675 | html_include(ctx->cfg.index_info); |
672 | } | 676 | } |
673 | html("</td></tr></table>\n"); | 677 | html("</td></tr></table>\n"); |
678 | } | ||
679 | |||
680 | void cgit_print_pageheader(struct cgit_context *ctx) | ||
681 | { | ||
682 | struct cgit_cmd *cmd = cgit_get_cmd(ctx); | ||
683 | |||
684 | if (!cmd && ctx->repo) | ||
685 | fallback_cmd = "summary"; | ||
686 | |||
687 | html("<div id='cgit'>"); | ||
688 | if (!ctx->cfg.noheader) | ||
689 | print_header(ctx); | ||
674 | 690 | ||
675 | html("<table class='tabs'><tr><td>\n"); | 691 | html("<table class='tabs'><tr><td>\n"); |
676 | if (ctx->repo) { | 692 | if (ctx->repo) { |
677 | cgit_summary_link("summary", NULL, hc(cmd, "summary"), | 693 | cgit_summary_link("summary", NULL, hc(cmd, "summary"), |
678 | ctx->qry.head); | 694 | ctx->qry.head); |
679 | cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head, | 695 | cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head, |
680 | ctx->qry.sha1, NULL); | 696 | ctx->qry.sha1, NULL); |
681 | cgit_log_link("log", NULL, hc(cmd, "log"), ctx->qry.head, | 697 | cgit_log_link("log", NULL, hc(cmd, "log"), ctx->qry.head, |
682 | NULL, NULL, 0, NULL, NULL, ctx->qry.showmsg); | 698 | NULL, NULL, 0, NULL, NULL, ctx->qry.showmsg); |
683 | cgit_tree_link("tree", NULL, hc(cmd, "tree"), ctx->qry.head, | 699 | cgit_tree_link("tree", NULL, hc(cmd, "tree"), ctx->qry.head, |
684 | ctx->qry.sha1, NULL); | 700 | ctx->qry.sha1, NULL); |
685 | cgit_commit_link("commit", NULL, hc(cmd, "commit"), | 701 | cgit_commit_link("commit", NULL, hc(cmd, "commit"), |