summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ui-shared.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/ui-shared.c b/ui-shared.c
index c4a506e..9319881 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -336,79 +336,81 @@ void cgit_snapshot_link(char *name, char *title, char *class, char *head,
336} 336}
337 337
338void cgit_diff_link(char *name, char *title, char *class, char *head, 338void 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
360void cgit_patch_link(char *name, char *title, char *class, char *head, 360void 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
366void cgit_object_link(struct object *obj) 366void 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
385void cgit_print_date(time_t secs, char *format, int local_time) 387void 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
400void cgit_print_age(time_t t, time_t max_relative, char *format) 402void 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) {