summaryrefslogtreecommitdiffabout
path: root/ui-shared.c
authorLars Hjemli <hjemli@gmail.com>2008-12-01 20:58:59 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-12-01 21:01:26 (UTC)
commitc57aceb1d2f1a7d9fd3218fc8c6e9ea01b2952d2 (patch) (unidiff)
treede7a4c97a83ac348b96052be358cfd414de4afbc /ui-shared.c
parent6596268576a4f5fe2f5c8a3238856b0fb205ff76 (diff)
downloadcgit-c57aceb1d2f1a7d9fd3218fc8c6e9ea01b2952d2.zip
cgit-c57aceb1d2f1a7d9fd3218fc8c6e9ea01b2952d2.tar.gz
cgit-c57aceb1d2f1a7d9fd3218fc8c6e9ea01b2952d2.tar.bz2
ui-shared: shorten the sha1 printed by cgit_object_link
Such links was printed as the object type followed by the objects complete sha1. We still use the complete sha1 in the link but we no longer show it in all its glory; only the first 10 hex chars are printed. 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.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
@@ -304,143 +304,145 @@ void cgit_log_link(char *name, char *title, char *class, char *head,
304 if (ofs > 0) { 304 if (ofs > 0) {
305 html(delim); 305 html(delim);
306 html("ofs="); 306 html("ofs=");
307 htmlf("%d", ofs); 307 htmlf("%d", ofs);
308 } 308 }
309 html("'>"); 309 html("'>");
310 html_txt(name); 310 html_txt(name);
311 html("</a>"); 311 html("</a>");
312} 312}
313 313
314void cgit_commit_link(char *name, char *title, char *class, char *head, 314void cgit_commit_link(char *name, char *title, char *class, char *head,
315 char *rev) 315 char *rev)
316{ 316{
317 if (strlen(name) > ctx.cfg.max_msg_len && ctx.cfg.max_msg_len >= 15) { 317 if (strlen(name) > ctx.cfg.max_msg_len && ctx.cfg.max_msg_len >= 15) {
318 name[ctx.cfg.max_msg_len] = '\0'; 318 name[ctx.cfg.max_msg_len] = '\0';
319 name[ctx.cfg.max_msg_len - 1] = '.'; 319 name[ctx.cfg.max_msg_len - 1] = '.';
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
326void cgit_refs_link(char *name, char *title, char *class, char *head, 326void 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
332void cgit_snapshot_link(char *name, char *title, char *class, char *head, 332void 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
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 = "&amp;"; 348 delim = "&amp;";
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) {
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>",
431 secs * 1.0 / TM_WEEK); 433 secs * 1.0 / TM_WEEK);
432 return; 434 return;
433 } 435 }
434 if (secs < TM_YEAR * 2) { 436 if (secs < TM_YEAR * 2) {
435 htmlf("<span class='age-months'>%.0f months</span>", 437 htmlf("<span class='age-months'>%.0f months</span>",
436 secs * 1.0 / TM_MONTH); 438 secs * 1.0 / TM_MONTH);
437 return; 439 return;
438 } 440 }
439 htmlf("<span class='age-years'>%.0f years</span>", 441 htmlf("<span class='age-years'>%.0f years</span>",
440 secs * 1.0 / TM_YEAR); 442 secs * 1.0 / TM_YEAR);
441} 443}
442 444
443void cgit_print_http_headers(struct cgit_context *ctx) 445void cgit_print_http_headers(struct cgit_context *ctx)
444{ 446{
445 if (ctx->page.mimetype && ctx->page.charset) 447 if (ctx->page.mimetype && ctx->page.charset)
446 htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype, 448 htmlf("Content-Type: %s; charset=%s\n", ctx->page.mimetype,