author | Lars Hjemli <hjemli@gmail.com> | 2008-12-06 10:34:48 (UTC) |
---|---|---|
committer | Lars Hjemli <hjemli@gmail.com> | 2008-12-06 10:34:48 (UTC) |
commit | e550440233875b298f8574e9273457516791010f (patch) (unidiff) | |
tree | 37464c686f1f2d8c5ba513c7dca5daa886dc81a6 /ui-shared.c | |
parent | 3157ea3b7e5204dba2892ffb54d641746c4c7ca4 (diff) | |
parent | c57aceb1d2f1a7d9fd3218fc8c6e9ea01b2952d2 (diff) | |
download | cgit-e550440233875b298f8574e9273457516791010f.zip cgit-e550440233875b298f8574e9273457516791010f.tar.gz cgit-e550440233875b298f8574e9273457516791010f.tar.bz2 |
Merge branch 'snapshot-fixes'
-rw-r--r-- | ui-shared.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/ui-shared.c b/ui-shared.c index 224e5f3..9319881 100644 --- a/ui-shared.c +++ b/ui-shared.c | |||
@@ -320,111 +320,113 @@ void cgit_commit_link(char *name, char *title, char *class, char *head, | |||
320 | name[ctx.cfg.max_msg_len - 2] = '.'; | 320 | name[ctx.cfg.max_msg_len - 2] = '.'; |
321 | name[ctx.cfg.max_msg_len - 3] = '.'; | 321 | name[ctx.cfg.max_msg_len - 3] = '.'; |
322 | } | 322 | } |
323 | reporevlink("commit", name, title, class, head, rev, NULL); | 323 | reporevlink("commit", name, title, class, head, rev, NULL); |
324 | } | 324 | } |
325 | 325 | ||
326 | void cgit_refs_link(char *name, char *title, char *class, char *head, | 326 | void cgit_refs_link(char *name, char *title, char *class, char *head, |
327 | char *rev, char *path) | 327 | char *rev, char *path) |
328 | { | 328 | { |
329 | reporevlink("refs", name, title, class, head, rev, path); | 329 | reporevlink("refs", name, title, class, head, rev, path); |
330 | } | 330 | } |
331 | 331 | ||
332 | void cgit_snapshot_link(char *name, char *title, char *class, char *head, | 332 | void cgit_snapshot_link(char *name, char *title, char *class, char *head, |
333 | char *rev, char *archivename) | 333 | char *rev, char *archivename) |
334 | { | 334 | { |
335 | reporevlink("snapshot", name, title, class, head, rev, archivename); | 335 | reporevlink("snapshot", name, title, class, head, rev, archivename); |
336 | } | 336 | } |
337 | 337 | ||
338 | void cgit_diff_link(char *name, char *title, char *class, char *head, | 338 | void cgit_diff_link(char *name, char *title, char *class, char *head, |
339 | char *new_rev, char *old_rev, char *path) | 339 | char *new_rev, char *old_rev, char *path) |
340 | { | 340 | { |
341 | char *delim; | 341 | char *delim; |
342 | 342 | ||
343 | delim = repolink(title, class, "diff", head, path); | 343 | delim = repolink(title, class, "diff", head, path); |
344 | if (new_rev && strcmp(new_rev, ctx.qry.head)) { | 344 | if (new_rev && strcmp(new_rev, ctx.qry.head)) { |
345 | html(delim); | 345 | html(delim); |
346 | html("id="); | 346 | html("id="); |
347 | html_url_arg(new_rev); | 347 | html_url_arg(new_rev); |
348 | delim = "&"; | 348 | delim = "&"; |
349 | } | 349 | } |
350 | if (old_rev) { | 350 | if (old_rev) { |
351 | html(delim); | 351 | html(delim); |
352 | html("id2="); | 352 | html("id2="); |
353 | html_url_arg(old_rev); | 353 | html_url_arg(old_rev); |
354 | } | 354 | } |
355 | html("'>"); | 355 | html("'>"); |
356 | html_txt(name); | 356 | html_txt(name); |
357 | html("</a>"); | 357 | html("</a>"); |
358 | } | 358 | } |
359 | 359 | ||
360 | void cgit_patch_link(char *name, char *title, char *class, char *head, | 360 | void cgit_patch_link(char *name, char *title, char *class, char *head, |
361 | char *rev) | 361 | char *rev) |
362 | { | 362 | { |
363 | reporevlink("patch", name, title, class, head, rev, NULL); | 363 | reporevlink("patch", name, title, class, head, rev, NULL); |
364 | } | 364 | } |
365 | 365 | ||
366 | void cgit_object_link(struct object *obj) | 366 | void cgit_object_link(struct object *obj) |
367 | { | 367 | { |
368 | char *page, *rev, *name; | 368 | char *page, *shortrev, *fullrev, *name; |
369 | 369 | ||
370 | fullrev = sha1_to_hex(obj->sha1); | ||
371 | shortrev = xstrdup(fullrev); | ||
372 | shortrev[10] = '\0'; | ||
370 | if (obj->type == OBJ_COMMIT) { | 373 | if (obj->type == OBJ_COMMIT) { |
371 | cgit_commit_link(fmt("commit %s", sha1_to_hex(obj->sha1)), NULL, NULL, | 374 | cgit_commit_link(fmt("commit %s...", shortrev), NULL, NULL, |
372 | ctx.qry.head, sha1_to_hex(obj->sha1)); | 375 | ctx.qry.head, fullrev); |
373 | return; | 376 | return; |
374 | } else if (obj->type == OBJ_TREE) | 377 | } else if (obj->type == OBJ_TREE) |
375 | page = "tree"; | 378 | page = "tree"; |
376 | else if (obj->type == OBJ_TAG) | 379 | else if (obj->type == OBJ_TAG) |
377 | page = "tag"; | 380 | page = "tag"; |
378 | else | 381 | else |
379 | page = "blob"; | 382 | page = "blob"; |
380 | rev = sha1_to_hex(obj->sha1); | 383 | name = fmt("%s %s...", typename(obj->type), shortrev); |
381 | name = fmt("%s %s", typename(obj->type), rev); | 384 | reporevlink(page, name, NULL, NULL, ctx.qry.head, fullrev, NULL); |
382 | reporevlink(page, name, NULL, NULL, ctx.qry.head, rev, NULL); | ||
383 | } | 385 | } |
384 | 386 | ||
385 | void cgit_print_date(time_t secs, char *format, int local_time) | 387 | void cgit_print_date(time_t secs, char *format, int local_time) |
386 | { | 388 | { |
387 | char buf[64]; | 389 | char buf[64]; |
388 | struct tm *time; | 390 | struct tm *time; |
389 | 391 | ||
390 | if (!secs) | 392 | if (!secs) |
391 | return; | 393 | return; |
392 | if(local_time) | 394 | if(local_time) |
393 | time = localtime(&secs); | 395 | time = localtime(&secs); |
394 | else | 396 | else |
395 | time = gmtime(&secs); | 397 | time = gmtime(&secs); |
396 | strftime(buf, sizeof(buf)-1, format, time); | 398 | strftime(buf, sizeof(buf)-1, format, time); |
397 | html_txt(buf); | 399 | html_txt(buf); |
398 | } | 400 | } |
399 | 401 | ||
400 | void cgit_print_age(time_t t, time_t max_relative, char *format) | 402 | void cgit_print_age(time_t t, time_t max_relative, char *format) |
401 | { | 403 | { |
402 | time_t now, secs; | 404 | time_t now, secs; |
403 | 405 | ||
404 | if (!t) | 406 | if (!t) |
405 | return; | 407 | return; |
406 | time(&now); | 408 | time(&now); |
407 | secs = now - t; | 409 | secs = now - t; |
408 | 410 | ||
409 | if (secs > max_relative && max_relative >= 0) { | 411 | if (secs > max_relative && max_relative >= 0) { |
410 | cgit_print_date(t, format, ctx.cfg.local_time); | 412 | cgit_print_date(t, format, ctx.cfg.local_time); |
411 | return; | 413 | return; |
412 | } | 414 | } |
413 | 415 | ||
414 | if (secs < TM_HOUR * 2) { | 416 | if (secs < TM_HOUR * 2) { |
415 | htmlf("<span class='age-mins'>%.0f min.</span>", | 417 | htmlf("<span class='age-mins'>%.0f min.</span>", |
416 | secs * 1.0 / TM_MIN); | 418 | secs * 1.0 / TM_MIN); |
417 | return; | 419 | return; |
418 | } | 420 | } |
419 | if (secs < TM_DAY * 2) { | 421 | if (secs < TM_DAY * 2) { |
420 | htmlf("<span class='age-hours'>%.0f hours</span>", | 422 | htmlf("<span class='age-hours'>%.0f hours</span>", |
421 | secs * 1.0 / TM_HOUR); | 423 | secs * 1.0 / TM_HOUR); |
422 | return; | 424 | return; |
423 | } | 425 | } |
424 | if (secs < TM_WEEK * 2) { | 426 | if (secs < TM_WEEK * 2) { |
425 | htmlf("<span class='age-days'>%.0f days</span>", | 427 | htmlf("<span class='age-days'>%.0f days</span>", |
426 | secs * 1.0 / TM_DAY); | 428 | secs * 1.0 / TM_DAY); |
427 | return; | 429 | return; |
428 | } | 430 | } |
429 | if (secs < TM_MONTH * 2) { | 431 | if (secs < TM_MONTH * 2) { |
430 | htmlf("<span class='age-weeks'>%.0f weeks</span>", | 432 | htmlf("<span class='age-weeks'>%.0f weeks</span>", |
@@ -662,53 +664,52 @@ void cgit_print_pageheader(struct cgit_context *ctx) | |||
662 | html("'/>\n"); | 664 | html("'/>\n"); |
663 | html("<input type='submit' value='search'/>\n"); | 665 | html("<input type='submit' value='search'/>\n"); |
664 | html("</form>\n"); | 666 | html("</form>\n"); |
665 | } else { | 667 | } else { |
666 | site_link(NULL, "index", NULL, hc(cmd, "repolist"), NULL, 0); | 668 | site_link(NULL, "index", NULL, hc(cmd, "repolist"), NULL, 0); |
667 | if (ctx->cfg.root_readme) | 669 | if (ctx->cfg.root_readme) |
668 | site_link("about", "about", NULL, hc(cmd, "about"), | 670 | site_link("about", "about", NULL, hc(cmd, "about"), |
669 | NULL, 0); | 671 | NULL, 0); |
670 | html("</td><td class='form'>"); | 672 | html("</td><td class='form'>"); |
671 | html("<form method='get' action='"); | 673 | html("<form method='get' action='"); |
672 | html_attr(cgit_rooturl()); | 674 | html_attr(cgit_rooturl()); |
673 | html("'>\n"); | 675 | html("'>\n"); |
674 | html("<input type='text' name='q' size='10' value='"); | 676 | html("<input type='text' name='q' size='10' value='"); |
675 | html_attr(ctx->qry.search); | 677 | html_attr(ctx->qry.search); |
676 | html("'/>\n"); | 678 | html("'/>\n"); |
677 | html("<input type='submit' value='search'/>\n"); | 679 | html("<input type='submit' value='search'/>\n"); |
678 | html("</form>"); | 680 | html("</form>"); |
679 | } | 681 | } |
680 | html("</td></tr></table>\n"); | 682 | html("</td></tr></table>\n"); |
681 | html("<div class='content'>"); | 683 | html("<div class='content'>"); |
682 | } | 684 | } |
683 | 685 | ||
684 | void cgit_print_filemode(unsigned short mode) | 686 | void cgit_print_filemode(unsigned short mode) |
685 | { | 687 | { |
686 | if (S_ISDIR(mode)) | 688 | if (S_ISDIR(mode)) |
687 | html("d"); | 689 | html("d"); |
688 | else if (S_ISLNK(mode)) | 690 | else if (S_ISLNK(mode)) |
689 | html("l"); | 691 | html("l"); |
690 | else if (S_ISGITLINK(mode)) | 692 | else if (S_ISGITLINK(mode)) |
691 | html("m"); | 693 | html("m"); |
692 | else | 694 | else |
693 | html("-"); | 695 | html("-"); |
694 | html_fileperm(mode >> 6); | 696 | html_fileperm(mode >> 6); |
695 | html_fileperm(mode >> 3); | 697 | html_fileperm(mode >> 3); |
696 | html_fileperm(mode); | 698 | html_fileperm(mode); |
697 | } | 699 | } |
698 | 700 | ||
699 | void cgit_print_snapshot_links(const char *repo, const char *head, | 701 | void cgit_print_snapshot_links(const char *repo, const char *head, |
700 | const char *hex, int snapshots) | 702 | const char *hex, int snapshots) |
701 | { | 703 | { |
702 | const struct cgit_snapshot_format* f; | 704 | const struct cgit_snapshot_format* f; |
703 | char *filename; | 705 | char *filename; |
704 | 706 | ||
705 | for (f = cgit_snapshot_formats; f->suffix; f++) { | 707 | for (f = cgit_snapshot_formats; f->suffix; f++) { |
706 | if (!(snapshots & f->bit)) | 708 | if (!(snapshots & f->bit)) |
707 | continue; | 709 | continue; |
708 | filename = fmt("%s-%s%s", cgit_repobasename(repo), hex, | 710 | filename = fmt("%s-%s%s", cgit_repobasename(repo), hex, |
709 | f->suffix); | 711 | f->suffix); |
710 | cgit_snapshot_link(filename, NULL, NULL, (char *)head, | 712 | cgit_snapshot_link(filename, NULL, NULL, NULL, NULL, filename); |
711 | (char *)hex, filename); | ||
712 | html("<br/>"); | 713 | html("<br/>"); |
713 | } | 714 | } |
714 | } | 715 | } |