summaryrefslogtreecommitdiffabout
path: root/ui-atom.c
authorChris Mayo <aklhfex@gmail.com>2010-09-25 12:05:52 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2010-11-07 15:33:41 (UTC)
commiteca95229acdc3c7c27fdcc1319f5c96da9e3b538 (patch) (unidiff)
treebff7778ec43957451b8320c9b252e3147706cbc8 /ui-atom.c
parent69f705cf5727cc1f099f6cd6af759f66bfd9a343 (diff)
downloadcgit-eca95229acdc3c7c27fdcc1319f5c96da9e3b538.zip
cgit-eca95229acdc3c7c27fdcc1319f5c96da9e3b538.tar.gz
cgit-eca95229acdc3c7c27fdcc1319f5c96da9e3b538.tar.bz2
Use committer date for atom feed entry updated element
Committer date reflects the most recent change and is used for ordering the log page (author date is still available in published element of the feed entry). Signed-off-by: Chris Mayo <aklhfex@gmail.com> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'ui-atom.c') (more/less context) (ignore whitespace changes)
-rw-r--r--ui-atom.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/ui-atom.c b/ui-atom.c
index 5c854c7..9331f74 100644
--- a/ui-atom.c
+++ b/ui-atom.c
@@ -1,133 +1,133 @@
1/* ui-atom.c: functions for atom feeds 1/* ui-atom.c: functions for atom feeds
2 * 2 *
3 * Copyright (C) 2008 Lars Hjemli 3 * Copyright (C) 2008 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#include "html.h" 10#include "html.h"
11#include "ui-shared.h" 11#include "ui-shared.h"
12 12
13void add_entry(struct commit *commit, char *host) 13void add_entry(struct commit *commit, char *host)
14{ 14{
15 char delim = '&'; 15 char delim = '&';
16 char *hex; 16 char *hex;
17 char *mail, *t, *t2; 17 char *mail, *t, *t2;
18 struct commitinfo *info; 18 struct commitinfo *info;
19 19
20 info = cgit_parse_commit(commit); 20 info = cgit_parse_commit(commit);
21 hex = sha1_to_hex(commit->object.sha1); 21 hex = sha1_to_hex(commit->object.sha1);
22 html("<entry>\n"); 22 html("<entry>\n");
23 html("<title>"); 23 html("<title>");
24 html_txt(info->subject); 24 html_txt(info->subject);
25 html("</title>\n"); 25 html("</title>\n");
26 html("<updated>"); 26 html("<updated>");
27 cgit_print_date(info->author_date, FMT_ATOMDATE, 0); 27 cgit_print_date(info->committer_date, FMT_ATOMDATE, 0);
28 html("</updated>\n"); 28 html("</updated>\n");
29 html("<author>\n"); 29 html("<author>\n");
30 if (info->author) { 30 if (info->author) {
31 html("<name>"); 31 html("<name>");
32 html_txt(info->author); 32 html_txt(info->author);
33 html("</name>\n"); 33 html("</name>\n");
34 } 34 }
35 if (info->author_email && !ctx.cfg.noplainemail) { 35 if (info->author_email && !ctx.cfg.noplainemail) {
36 mail = xstrdup(info->author_email); 36 mail = xstrdup(info->author_email);
37 t = strchr(mail, '<'); 37 t = strchr(mail, '<');
38 if (t) 38 if (t)
39 t++; 39 t++;
40 else 40 else
41 t = mail; 41 t = mail;
42 t2 = strchr(t, '>'); 42 t2 = strchr(t, '>');
43 if (t2) 43 if (t2)
44 *t2 = '\0'; 44 *t2 = '\0';
45 html("<email>"); 45 html("<email>");
46 html_txt(t); 46 html_txt(t);
47 html("</email>\n"); 47 html("</email>\n");
48 free(mail); 48 free(mail);
49 } 49 }
50 html("</author>\n"); 50 html("</author>\n");
51 html("<published>"); 51 html("<published>");
52 cgit_print_date(info->author_date, FMT_ATOMDATE, 0); 52 cgit_print_date(info->author_date, FMT_ATOMDATE, 0);
53 html("</published>\n"); 53 html("</published>\n");
54 if (host) { 54 if (host) {
55 html("<link rel='alternate' type='text/html' href='"); 55 html("<link rel='alternate' type='text/html' href='");
56 html(cgit_httpscheme()); 56 html(cgit_httpscheme());
57 html_attr(host); 57 html_attr(host);
58 html_attr(cgit_pageurl(ctx.repo->url, "commit", NULL)); 58 html_attr(cgit_pageurl(ctx.repo->url, "commit", NULL));
59 if (ctx.cfg.virtual_root) 59 if (ctx.cfg.virtual_root)
60 delim = '?'; 60 delim = '?';
61 htmlf("%cid=%s", delim, hex); 61 htmlf("%cid=%s", delim, hex);
62 html("'/>\n"); 62 html("'/>\n");
63 } 63 }
64 htmlf("<id>%s</id>\n", hex); 64 htmlf("<id>%s</id>\n", hex);
65 html("<content type='text'>\n"); 65 html("<content type='text'>\n");
66 html_txt(info->msg); 66 html_txt(info->msg);
67 html("</content>\n"); 67 html("</content>\n");
68 html("<content type='xhtml'>\n"); 68 html("<content type='xhtml'>\n");
69 html("<div xmlns='http://www.w3.org/1999/xhtml'>\n"); 69 html("<div xmlns='http://www.w3.org/1999/xhtml'>\n");
70 html("<pre>\n"); 70 html("<pre>\n");
71 html_txt(info->msg); 71 html_txt(info->msg);
72 html("</pre>\n"); 72 html("</pre>\n");
73 html("</div>\n"); 73 html("</div>\n");
74 html("</content>\n"); 74 html("</content>\n");
75 html("</entry>\n"); 75 html("</entry>\n");
76 cgit_free_commitinfo(info); 76 cgit_free_commitinfo(info);
77} 77}
78 78
79 79
80void cgit_print_atom(char *tip, char *path, int max_count) 80void cgit_print_atom(char *tip, char *path, int max_count)
81{ 81{
82 char *host; 82 char *host;
83 const char *argv[] = {NULL, tip, NULL, NULL, NULL}; 83 const char *argv[] = {NULL, tip, NULL, NULL, NULL};
84 struct commit *commit; 84 struct commit *commit;
85 struct rev_info rev; 85 struct rev_info rev;
86 int argc = 2; 86 int argc = 2;
87 87
88 if (ctx.qry.show_all) 88 if (ctx.qry.show_all)
89 argv[1] = "--all"; 89 argv[1] = "--all";
90 else if (!tip) 90 else if (!tip)
91 argv[1] = ctx.qry.head; 91 argv[1] = ctx.qry.head;
92 92
93 if (path) { 93 if (path) {
94 argv[argc++] = "--"; 94 argv[argc++] = "--";
95 argv[argc++] = path; 95 argv[argc++] = path;
96 } 96 }
97 97
98 init_revisions(&rev, NULL); 98 init_revisions(&rev, NULL);
99 rev.abbrev = DEFAULT_ABBREV; 99 rev.abbrev = DEFAULT_ABBREV;
100 rev.commit_format = CMIT_FMT_DEFAULT; 100 rev.commit_format = CMIT_FMT_DEFAULT;
101 rev.verbose_header = 1; 101 rev.verbose_header = 1;
102 rev.show_root_diff = 0; 102 rev.show_root_diff = 0;
103 rev.max_count = max_count; 103 rev.max_count = max_count;
104 setup_revisions(argc, argv, &rev, NULL); 104 setup_revisions(argc, argv, &rev, NULL);
105 prepare_revision_walk(&rev); 105 prepare_revision_walk(&rev);
106 106
107 host = cgit_hosturl(); 107 host = cgit_hosturl();
108 ctx.page.mimetype = "text/xml"; 108 ctx.page.mimetype = "text/xml";
109 ctx.page.charset = "utf-8"; 109 ctx.page.charset = "utf-8";
110 cgit_print_http_headers(&ctx); 110 cgit_print_http_headers(&ctx);
111 html("<feed xmlns='http://www.w3.org/2005/Atom'>\n"); 111 html("<feed xmlns='http://www.w3.org/2005/Atom'>\n");
112 html("<title>"); 112 html("<title>");
113 html_txt(ctx.repo->name); 113 html_txt(ctx.repo->name);
114 html("</title>\n"); 114 html("</title>\n");
115 html("<subtitle>"); 115 html("<subtitle>");
116 html_txt(ctx.repo->desc); 116 html_txt(ctx.repo->desc);
117 html("</subtitle>\n"); 117 html("</subtitle>\n");
118 if (host) { 118 if (host) {
119 html("<link rel='alternate' type='text/html' href='"); 119 html("<link rel='alternate' type='text/html' href='");
120 html(cgit_httpscheme()); 120 html(cgit_httpscheme());
121 html_attr(host); 121 html_attr(host);
122 html_attr(cgit_repourl(ctx.repo->url)); 122 html_attr(cgit_repourl(ctx.repo->url));
123 html("'/>\n"); 123 html("'/>\n");
124 } 124 }
125 while ((commit = get_revision(&rev)) != NULL) { 125 while ((commit = get_revision(&rev)) != NULL) {
126 add_entry(commit, host); 126 add_entry(commit, host);
127 free(commit->buffer); 127 free(commit->buffer);
128 commit->buffer = NULL; 128 commit->buffer = NULL;
129 free_commit_list(commit->parents); 129 free_commit_list(commit->parents);
130 commit->parents = NULL; 130 commit->parents = NULL;
131 } 131 }
132 html("</feed>\n"); 132 html("</feed>\n");
133} 133}