]>
git.cameronkatri.com Git - cgit.git/blob - ui-atom.c
1 /* ui-atom.c: functions for atom feeds
3 * Copyright (C) 2008 Lars Hjemli
5 * Licensed under GNU General Public License v2
6 * (see COPYING for full license text)
11 #include "ui-shared.h"
13 void add_entry(struct commit
*commit
, char *host
)
18 struct commitinfo
*info
;
20 info
= cgit_parse_commit(commit
);
21 hex
= sha1_to_hex(commit
->object
.sha1
);
24 html_txt(info
->subject
);
27 cgit_print_date(info
->author_date
, FMT_ATOMDATE
, ctx
.cfg
.local_time
);
32 html_txt(info
->author
);
35 if (info
->author_email
&& !ctx
.cfg
.noplainemail
) {
36 mail
= xstrdup(info
->author_email
);
37 t
= strchr(mail
, '<');
52 cgit_print_date(info
->author_date
, FMT_ATOMDATE
, ctx
.cfg
.local_time
);
53 html("</published>\n");
55 html("<link rel='alternate' type='text/html' href='");
56 html(cgit_httpscheme());
58 html_attr(cgit_pageurl(ctx
.repo
->url
, "commit", NULL
));
59 if (ctx
.cfg
.virtual_root
)
61 htmlf("%cid=%s", delim
, hex
);
64 htmlf("<id>%s</id>\n", hex
);
65 html("<content type='text'>\n");
68 html("<content type='xhtml'>\n");
69 html("<div xmlns='http://www.w3.org/1999/xhtml'>\n");
76 cgit_free_commitinfo(info
);
80 void cgit_print_atom(char *tip
, char *path
, int max_count
)
83 const char *argv
[] = {NULL
, tip
, NULL
, NULL
, NULL
};
84 struct commit
*commit
;
91 argv
[1] = ctx
.qry
.head
;
98 init_revisions(&rev
, NULL
);
99 rev
.abbrev
= DEFAULT_ABBREV
;
100 rev
.commit_format
= CMIT_FMT_DEFAULT
;
101 rev
.verbose_header
= 1;
102 rev
.show_root_diff
= 0;
103 rev
.max_count
= max_count
;
104 setup_revisions(argc
, argv
, &rev
, NULL
);
105 prepare_revision_walk(&rev
);
107 host
= cgit_hosturl();
108 ctx
.page
.mimetype
= "text/xml";
109 ctx
.page
.charset
= "utf-8";
110 cgit_print_http_headers(&ctx
);
111 html("<feed xmlns='http://www.w3.org/2005/Atom'>\n");
113 html_txt(ctx
.repo
->name
);
116 html_txt(ctx
.repo
->desc
);
117 html("</subtitle>\n");
119 html("<link rel='alternate' type='text/html' href='");
120 html(cgit_httpscheme());
122 html_attr(cgit_repourl(ctx
.repo
->url
));
125 while ((commit
= get_revision(&rev
)) != NULL
) {
126 add_entry(commit
, host
);
127 free(commit
->buffer
);
128 commit
->buffer
= NULL
;
129 free_commit_list(commit
->parents
);
130 commit
->parents
= NULL
;