summaryrefslogtreecommitdiffabout
path: root/ui-summary.c
authorLars Hjemli <hjemli@gmail.com>2007-05-22 21:08:46 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2007-05-22 21:12:41 (UTC)
commit5db39170b6c979655a0238dcd627e206febed88b (patch) (unidiff)
tree2c79691bde31f9db2861dc76010691e9dbdde1cb /ui-summary.c
parent3b86b44fc761cfa8b97c44bbbdd63c9fbf1127ed (diff)
downloadcgit-5db39170b6c979655a0238dcd627e206febed88b.zip
cgit-5db39170b6c979655a0238dcd627e206febed88b.tar.gz
cgit-5db39170b6c979655a0238dcd627e206febed88b.tar.bz2
Add cgit_print_age() function
This function can be used to print relative dates, just as in gitweb. Next step will be to actually use the new function. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-summary.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-summary.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ui-summary.c b/ui-summary.c
index e7158cc..20394de 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -1,63 +1,63 @@
1/* ui-summary.c: functions for generating repo summary page 1/* ui-summary.c: functions for generating repo summary page
2 * 2 *
3 * Copyright (C) 2006 Lars Hjemli 3 * Copyright (C) 2006 Lars Hjemli
4 * 4 *
5 * Licensed under GNU General Public License v2 5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text) 6 * (see COPYING for full license text)
7 */ 7 */
8 8
9#include "cgit.h" 9#include "cgit.h"
10 10
11static int header; 11static int header;
12 12
13static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1, 13static int cgit_print_branch_cb(const char *refname, const unsigned char *sha1,
14 int flags, void *cb_data) 14 int flags, void *cb_data)
15{ 15{
16 struct commit *commit; 16 struct commit *commit;
17 struct commitinfo *info; 17 struct commitinfo *info;
18 char buf[256], *url; 18 char buf[256], *url;
19 19
20 strncpy(buf, refname, sizeof(buf)); 20 strncpy(buf, refname, sizeof(buf));
21 commit = lookup_commit(sha1); 21 commit = lookup_commit(sha1);
22 if (commit && !parse_commit(commit)){ 22 if (commit && !parse_commit(commit)){
23 info = cgit_parse_commit(commit); 23 info = cgit_parse_commit(commit);
24 html("<tr><td>"); 24 html("<tr><td>");
25 url = cgit_pageurl(cgit_query_repo, "log", 25 url = cgit_pageurl(cgit_query_repo, "log",
26 fmt("h=%s", refname)); 26 fmt("h=%s", refname));
27 html_link_open(url, NULL, NULL); 27 html_link_open(url, NULL, NULL);
28 html_txt(buf); 28 html_txt(buf);
29 html_link_close(); 29 html_link_close();
30 html("</td><td>"); 30 html("</td><td>");
31 cgit_print_date(commit->date); 31 cgit_print_date(commit->date, FMT_LONGDATE);
32 html("</td><td>"); 32 html("</td><td>");
33 html_txt(info->author); 33 html_txt(info->author);
34 html("</td><td>"); 34 html("</td><td>");
35 url = cgit_pageurl(cgit_query_repo, "commit", 35 url = cgit_pageurl(cgit_query_repo, "commit",
36 fmt("h=%s", sha1_to_hex(sha1))); 36 fmt("h=%s", sha1_to_hex(sha1)));
37 html_link_open(url, NULL, NULL); 37 html_link_open(url, NULL, NULL);
38 html_ntxt(cgit_max_msg_len, info->subject); 38 html_ntxt(cgit_max_msg_len, info->subject);
39 html_link_close(); 39 html_link_close();
40 html("</td></tr>\n"); 40 html("</td></tr>\n");
41 cgit_free_commitinfo(info); 41 cgit_free_commitinfo(info);
42 } else { 42 } else {
43 html("<tr><td>"); 43 html("<tr><td>");
44 html_txt(buf); 44 html_txt(buf);
45 html("</td><td colspan='3'>"); 45 html("</td><td colspan='3'>");
46 htmlf("*** bad ref %s ***", sha1_to_hex(sha1)); 46 htmlf("*** bad ref %s ***", sha1_to_hex(sha1));
47 html("</td></tr>\n"); 47 html("</td></tr>\n");
48 } 48 }
49 return 0; 49 return 0;
50} 50}
51 51
52 52
53static void cgit_print_object_ref(struct object *obj) 53static void cgit_print_object_ref(struct object *obj)
54{ 54{
55 char *page, *arg, *url; 55 char *page, *arg, *url;
56 56
57 if (obj->type == OBJ_COMMIT) { 57 if (obj->type == OBJ_COMMIT) {
58 page = "commit"; 58 page = "commit";
59 arg = "h"; 59 arg = "h";
60 } else if (obj->type == OBJ_TREE) { 60 } else if (obj->type == OBJ_TREE) {
61 page = "tree"; 61 page = "tree";
62 arg = "id"; 62 arg = "id";
63 } else { 63 } else {
@@ -79,65 +79,65 @@ static void print_tag_header()
79 "<th class='left'>Created</th>" 79 "<th class='left'>Created</th>"
80 "<th class='left'>Author</th>" 80 "<th class='left'>Author</th>"
81 "<th class='left'>Reference</th></tr>\n"); 81 "<th class='left'>Reference</th></tr>\n");
82 header = 1; 82 header = 1;
83} 83}
84 84
85static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1, 85static int cgit_print_tag_cb(const char *refname, const unsigned char *sha1,
86 int flags, void *cb_data) 86 int flags, void *cb_data)
87{ 87{
88 struct tag *tag; 88 struct tag *tag;
89 struct taginfo *info; 89 struct taginfo *info;
90 struct object *obj; 90 struct object *obj;
91 char buf[256], *url; 91 char buf[256], *url;
92 92
93 strncpy(buf, refname, sizeof(buf)); 93 strncpy(buf, refname, sizeof(buf));
94 obj = parse_object(sha1); 94 obj = parse_object(sha1);
95 if (!obj) 95 if (!obj)
96 return 1; 96 return 1;
97 if (obj->type == OBJ_TAG) { 97 if (obj->type == OBJ_TAG) {
98 tag = lookup_tag(sha1); 98 tag = lookup_tag(sha1);
99 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) 99 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag)))
100 return 2; 100 return 2;
101 if (!header) 101 if (!header)
102 print_tag_header(); 102 print_tag_header();
103 html("<tr><td>"); 103 html("<tr><td>");
104 url = cgit_pageurl(cgit_query_repo, "view", 104 url = cgit_pageurl(cgit_query_repo, "view",
105 fmt("id=%s", sha1_to_hex(sha1))); 105 fmt("id=%s", sha1_to_hex(sha1)));
106 html_link_open(url, NULL, NULL); 106 html_link_open(url, NULL, NULL);
107 html_txt(buf); 107 html_txt(buf);
108 html_link_close(); 108 html_link_close();
109 html("</td><td>"); 109 html("</td><td>");
110 if (info->tagger_date > 0) 110 if (info->tagger_date > 0)
111 cgit_print_date(info->tagger_date); 111 cgit_print_date(info->tagger_date, FMT_LONGDATE);
112 html("</td><td>"); 112 html("</td><td>");
113 if (info->tagger) 113 if (info->tagger)
114 html(info->tagger); 114 html(info->tagger);
115 html("</td><td>"); 115 html("</td><td>");
116 cgit_print_object_ref(tag->tagged); 116 cgit_print_object_ref(tag->tagged);
117 html("</td></tr>\n"); 117 html("</td></tr>\n");
118 } else { 118 } else {
119 if (!header) 119 if (!header)
120 print_tag_header(); 120 print_tag_header();
121 html("<tr><td>"); 121 html("<tr><td>");
122 html_txt(buf); 122 html_txt(buf);
123 html("</td><td colspan='2'/><td>"); 123 html("</td><td colspan='2'/><td>");
124 cgit_print_object_ref(obj); 124 cgit_print_object_ref(obj);
125 html("</td></tr>\n"); 125 html("</td></tr>\n");
126 } 126 }
127 return 0; 127 return 0;
128} 128}
129 129
130static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1, 130static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1,
131 int flags, void *cb_data) 131 int flags, void *cb_data)
132{ 132{
133 struct tag *tag; 133 struct tag *tag;
134 struct taginfo *info; 134 struct taginfo *info;
135 struct object *obj; 135 struct object *obj;
136 char buf[256], *url; 136 char buf[256], *url;
137 unsigned char fileid[20]; 137 unsigned char fileid[20];
138 138
139 if (prefixcmp(refname, "refs/archives")) 139 if (prefixcmp(refname, "refs/archives"))
140 return 0; 140 return 0;
141 strncpy(buf, refname+14, sizeof(buf)); 141 strncpy(buf, refname+14, sizeof(buf));
142 obj = parse_object(sha1); 142 obj = parse_object(sha1);
143 if (!obj) 143 if (!obj)