summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2008-12-01 20:50:19 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-12-01 20:50:19 (UTC)
commitb9053a4ff04fef90d1b9ab3f813ae3fcee63a8c3 (patch) (unidiff)
treefb20e92f6e27a1148c525e8137399f845aec5a43
parent4b4f8d1256669bf9838e17f83a070de0ec09a699 (diff)
downloadcgit-b9053a4ff04fef90d1b9ab3f813ae3fcee63a8c3.zip
cgit-b9053a4ff04fef90d1b9ab3f813ae3fcee63a8c3.tar.gz
cgit-b9053a4ff04fef90d1b9ab3f813ae3fcee63a8c3.tar.bz2
ui-shared: exploit snapshot dwimmery in cgit_print_snapshot_links
Since we know that ui-snapshot.c is able to extract the revision from the filename, there's no longer necessary to specify the revision with a 'id' querystring argument. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ui-shared.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/ui-shared.c b/ui-shared.c
index 224e5f3..c4a506e 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -614,101 +614,100 @@ void cgit_print_pageheader(struct cgit_context *ctx)
614 html_txt(ctx->cfg.root_title); 614 html_txt(ctx->cfg.root_title);
615 html("</td></tr>\n"); 615 html("</td></tr>\n");
616 616
617 html("<tr><td class='sub'>"); 617 html("<tr><td class='sub'>");
618 if (ctx->repo) { 618 if (ctx->repo) {
619 html_txt(ctx->repo->desc); 619 html_txt(ctx->repo->desc);
620 html("</td><td class='sub right'>"); 620 html("</td><td class='sub right'>");
621 html_txt(ctx->repo->owner); 621 html_txt(ctx->repo->owner);
622 } else { 622 } else {
623 if (ctx->cfg.root_desc) 623 if (ctx->cfg.root_desc)
624 html_txt(ctx->cfg.root_desc); 624 html_txt(ctx->cfg.root_desc);
625 else if (ctx->cfg.index_info) 625 else if (ctx->cfg.index_info)
626 html_include(ctx->cfg.index_info); 626 html_include(ctx->cfg.index_info);
627 } 627 }
628 html("</td></tr></table>\n"); 628 html("</td></tr></table>\n");
629 629
630 html("<table class='tabs'><tr><td>\n"); 630 html("<table class='tabs'><tr><td>\n");
631 if (ctx->repo) { 631 if (ctx->repo) {
632 cgit_summary_link("summary", NULL, hc(cmd, "summary"), 632 cgit_summary_link("summary", NULL, hc(cmd, "summary"),
633 ctx->qry.head); 633 ctx->qry.head);
634 cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head, 634 cgit_refs_link("refs", NULL, hc(cmd, "refs"), ctx->qry.head,
635 ctx->qry.sha1, NULL); 635 ctx->qry.sha1, NULL);
636 cgit_log_link("log", NULL, hc(cmd, "log"), ctx->qry.head, 636 cgit_log_link("log", NULL, hc(cmd, "log"), ctx->qry.head,
637 NULL, NULL, 0, NULL, NULL); 637 NULL, NULL, 0, NULL, NULL);
638 cgit_tree_link("tree", NULL, hc(cmd, "tree"), ctx->qry.head, 638 cgit_tree_link("tree", NULL, hc(cmd, "tree"), ctx->qry.head,
639 ctx->qry.sha1, NULL); 639 ctx->qry.sha1, NULL);
640 cgit_commit_link("commit", NULL, hc(cmd, "commit"), 640 cgit_commit_link("commit", NULL, hc(cmd, "commit"),
641 ctx->qry.head, ctx->qry.sha1); 641 ctx->qry.head, ctx->qry.sha1);
642 cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head, 642 cgit_diff_link("diff", NULL, hc(cmd, "diff"), ctx->qry.head,
643 ctx->qry.sha1, ctx->qry.sha2, NULL); 643 ctx->qry.sha1, ctx->qry.sha2, NULL);
644 if (ctx->repo->readme) 644 if (ctx->repo->readme)
645 reporevlink("about", "about", NULL, 645 reporevlink("about", "about", NULL,
646 hc(cmd, "about"), ctx->qry.head, NULL, 646 hc(cmd, "about"), ctx->qry.head, NULL,
647 NULL); 647 NULL);
648 html("</td><td class='form'>"); 648 html("</td><td class='form'>");
649 html("<form class='right' method='get' action='"); 649 html("<form class='right' method='get' action='");
650 if (ctx->cfg.virtual_root) 650 if (ctx->cfg.virtual_root)
651 html_url_path(cgit_fileurl(ctx->qry.repo, "log", 651 html_url_path(cgit_fileurl(ctx->qry.repo, "log",
652 ctx->qry.path, NULL)); 652 ctx->qry.path, NULL));
653 html("'>\n"); 653 html("'>\n");
654 add_hidden_formfields(1, 0, "log"); 654 add_hidden_formfields(1, 0, "log");
655 html("<select name='qt'>\n"); 655 html("<select name='qt'>\n");
656 html_option("grep", "log msg", ctx->qry.grep); 656 html_option("grep", "log msg", ctx->qry.grep);
657 html_option("author", "author", ctx->qry.grep); 657 html_option("author", "author", ctx->qry.grep);
658 html_option("committer", "committer", ctx->qry.grep); 658 html_option("committer", "committer", ctx->qry.grep);
659 html("</select>\n"); 659 html("</select>\n");
660 html("<input class='txt' type='text' size='10' name='q' value='"); 660 html("<input class='txt' type='text' size='10' name='q' value='");
661 html_attr(ctx->qry.search); 661 html_attr(ctx->qry.search);
662 html("'/>\n"); 662 html("'/>\n");
663 html("<input type='submit' value='search'/>\n"); 663 html("<input type='submit' value='search'/>\n");
664 html("</form>\n"); 664 html("</form>\n");
665 } else { 665 } else {
666 site_link(NULL, "index", NULL, hc(cmd, "repolist"), NULL, 0); 666 site_link(NULL, "index", NULL, hc(cmd, "repolist"), NULL, 0);
667 if (ctx->cfg.root_readme) 667 if (ctx->cfg.root_readme)
668 site_link("about", "about", NULL, hc(cmd, "about"), 668 site_link("about", "about", NULL, hc(cmd, "about"),
669 NULL, 0); 669 NULL, 0);
670 html("</td><td class='form'>"); 670 html("</td><td class='form'>");
671 html("<form method='get' action='"); 671 html("<form method='get' action='");
672 html_attr(cgit_rooturl()); 672 html_attr(cgit_rooturl());
673 html("'>\n"); 673 html("'>\n");
674 html("<input type='text' name='q' size='10' value='"); 674 html("<input type='text' name='q' size='10' value='");
675 html_attr(ctx->qry.search); 675 html_attr(ctx->qry.search);
676 html("'/>\n"); 676 html("'/>\n");
677 html("<input type='submit' value='search'/>\n"); 677 html("<input type='submit' value='search'/>\n");
678 html("</form>"); 678 html("</form>");
679 } 679 }
680 html("</td></tr></table>\n"); 680 html("</td></tr></table>\n");
681 html("<div class='content'>"); 681 html("<div class='content'>");
682} 682}
683 683
684void cgit_print_filemode(unsigned short mode) 684void cgit_print_filemode(unsigned short mode)
685{ 685{
686 if (S_ISDIR(mode)) 686 if (S_ISDIR(mode))
687 html("d"); 687 html("d");
688 else if (S_ISLNK(mode)) 688 else if (S_ISLNK(mode))
689 html("l"); 689 html("l");
690 else if (S_ISGITLINK(mode)) 690 else if (S_ISGITLINK(mode))
691 html("m"); 691 html("m");
692 else 692 else
693 html("-"); 693 html("-");
694 html_fileperm(mode >> 6); 694 html_fileperm(mode >> 6);
695 html_fileperm(mode >> 3); 695 html_fileperm(mode >> 3);
696 html_fileperm(mode); 696 html_fileperm(mode);
697} 697}
698 698
699void cgit_print_snapshot_links(const char *repo, const char *head, 699void cgit_print_snapshot_links(const char *repo, const char *head,
700 const char *hex, int snapshots) 700 const char *hex, int snapshots)
701{ 701{
702 const struct cgit_snapshot_format* f; 702 const struct cgit_snapshot_format* f;
703 char *filename; 703 char *filename;
704 704
705 for (f = cgit_snapshot_formats; f->suffix; f++) { 705 for (f = cgit_snapshot_formats; f->suffix; f++) {
706 if (!(snapshots & f->bit)) 706 if (!(snapshots & f->bit))
707 continue; 707 continue;
708 filename = fmt("%s-%s%s", cgit_repobasename(repo), hex, 708 filename = fmt("%s-%s%s", cgit_repobasename(repo), hex,
709 f->suffix); 709 f->suffix);
710 cgit_snapshot_link(filename, NULL, NULL, (char *)head, 710 cgit_snapshot_link(filename, NULL, NULL, NULL, NULL, filename);
711 (char *)hex, filename);
712 html("<br/>"); 711 html("<br/>");
713 } 712 }
714} 713}