summaryrefslogtreecommitdiffabout
path: root/ui-shared.c
authorLars Hjemli <hjemli@gmail.com>2008-07-27 10:32:08 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-07-27 10:32:08 (UTC)
commit25c84326deff579d5de4b880f9dca2690bdc8569 (patch) (unidiff)
tree9ca41073e0e06e6dc24f7800182bf4a7b22f548c /ui-shared.c
parent2d6ee032d0c2f84ebcfaa12d3289e85cfab18fcd (diff)
downloadcgit-25c84326deff579d5de4b880f9dca2690bdc8569.zip
cgit-25c84326deff579d5de4b880f9dca2690bdc8569.tar.gz
cgit-25c84326deff579d5de4b880f9dca2690bdc8569.tar.bz2
Be prepared for empty repositories
Before this patch, cgit would segfault on repositories with no refs. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-shared.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-shared.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ui-shared.c b/ui-shared.c
index 209af6e..4280a70 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -489,65 +489,66 @@ int print_archive_ref(const char *refname, const unsigned char *sha1,
489 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) 489 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag)))
490 return 0; 490 return 0;
491 hashcpy(fileid, tag->tagged->sha1); 491 hashcpy(fileid, tag->tagged->sha1);
492 } else if (obj->type != OBJ_BLOB) { 492 } else if (obj->type != OBJ_BLOB) {
493 return 0; 493 return 0;
494 } else { 494 } else {
495 hashcpy(fileid, sha1); 495 hashcpy(fileid, sha1);
496 } 496 }
497 if (!*header) { 497 if (!*header) {
498 html("<h1>download</h1>\n"); 498 html("<h1>download</h1>\n");
499 *header = 1; 499 *header = 1;
500 } 500 }
501 url = cgit_pageurl(ctx.qry.repo, "blob", 501 url = cgit_pageurl(ctx.qry.repo, "blob",
502 fmt("id=%s&amp;path=%s", sha1_to_hex(fileid), 502 fmt("id=%s&amp;path=%s", sha1_to_hex(fileid),
503 buf)); 503 buf));
504 html_link_open(url, NULL, "menu"); 504 html_link_open(url, NULL, "menu");
505 html_txt(strlpart(buf, 20)); 505 html_txt(strlpart(buf, 20));
506 html_link_close(); 506 html_link_close();
507 return 0; 507 return 0;
508} 508}
509 509
510void add_hidden_formfields(int incl_head, int incl_search, char *page) 510void add_hidden_formfields(int incl_head, int incl_search, char *page)
511{ 511{
512 char *url; 512 char *url;
513 513
514 if (!ctx.cfg.virtual_root) { 514 if (!ctx.cfg.virtual_root) {
515 url = fmt("%s/%s", ctx.qry.repo, page); 515 url = fmt("%s/%s", ctx.qry.repo, page);
516 if (ctx.qry.path) 516 if (ctx.qry.path)
517 url = fmt("%s/%s", url, ctx.qry.path); 517 url = fmt("%s/%s", url, ctx.qry.path);
518 html_hidden("url", url); 518 html_hidden("url", url);
519 } 519 }
520 520
521 if (incl_head && strcmp(ctx.qry.head, ctx.repo->defbranch)) 521 if (incl_head && ctx.qry.head && ctx.repo->defbranch &&
522 strcmp(ctx.qry.head, ctx.repo->defbranch))
522 html_hidden("h", ctx.qry.head); 523 html_hidden("h", ctx.qry.head);
523 524
524 if (ctx.qry.sha1) 525 if (ctx.qry.sha1)
525 html_hidden("id", ctx.qry.sha1); 526 html_hidden("id", ctx.qry.sha1);
526 if (ctx.qry.sha2) 527 if (ctx.qry.sha2)
527 html_hidden("id2", ctx.qry.sha2); 528 html_hidden("id2", ctx.qry.sha2);
528 529
529 if (incl_search) { 530 if (incl_search) {
530 if (ctx.qry.grep) 531 if (ctx.qry.grep)
531 html_hidden("qt", ctx.qry.grep); 532 html_hidden("qt", ctx.qry.grep);
532 if (ctx.qry.search) 533 if (ctx.qry.search)
533 html_hidden("q", ctx.qry.search); 534 html_hidden("q", ctx.qry.search);
534 } 535 }
535} 536}
536 537
537char *hc(struct cgit_cmd *cmd, const char *page) 538char *hc(struct cgit_cmd *cmd, const char *page)
538{ 539{
539 return (strcmp(cmd->name, page) ? NULL : "active"); 540 return (strcmp(cmd->name, page) ? NULL : "active");
540} 541}
541 542
542void cgit_print_pageheader(struct cgit_context *ctx) 543void cgit_print_pageheader(struct cgit_context *ctx)
543{ 544{
544 struct cgit_cmd *cmd = cgit_get_cmd(ctx); 545 struct cgit_cmd *cmd = cgit_get_cmd(ctx);
545 546
546 html("<table id='header'>\n"); 547 html("<table id='header'>\n");
547 html("<tr>\n"); 548 html("<tr>\n");
548 html("<td class='logo' rowspan='2'><a href='"); 549 html("<td class='logo' rowspan='2'><a href='");
549 if (ctx->cfg.logo_link) 550 if (ctx->cfg.logo_link)
550 html_attr(ctx->cfg.logo_link); 551 html_attr(ctx->cfg.logo_link);
551 else 552 else
552 html_attr(cgit_rooturl()); 553 html_attr(cgit_rooturl());
553 html("'><img src='"); 554 html("'><img src='");