]>
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
) {
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='http://");
57 html_attr(cgit_pageurl(ctx
.repo
->url
, "commit", NULL
));
58 if (ctx
.cfg
.virtual_root
)
60 htmlf("%cid=%s", delim
, hex
);
63 htmlf("<id>%s</id>\n", hex
);
64 html("<content type='text'>\n");
67 html("<content type='xhtml'>\n");
68 html("<div xmlns='http://www.w3.org/1999/xhtml'>\n");
75 cgit_free_commitinfo(info
);
79 void cgit_print_atom(char *tip
, char *path
, int max_count
)
82 const char *argv
[] = {NULL
, tip
, NULL
, NULL
, NULL
};
83 struct commit
*commit
;
88 argv
[1] = ctx
.qry
.head
;
95 init_revisions(&rev
, NULL
);
96 rev
.abbrev
= DEFAULT_ABBREV
;
97 rev
.commit_format
= CMIT_FMT_DEFAULT
;
98 rev
.verbose_header
= 1;
99 rev
.show_root_diff
= 0;
100 rev
.max_count
= max_count
;
101 setup_revisions(argc
, argv
, &rev
, NULL
);
102 prepare_revision_walk(&rev
);
104 host
= cgit_hosturl();
105 ctx
.page
.mimetype
= "text/xml";
106 ctx
.page
.charset
= "utf-8";
107 cgit_print_http_headers(&ctx
);
108 html("<feed xmlns='http://www.w3.org/2005/Atom'>\n");
110 html_txt(ctx
.repo
->name
);
113 html_txt(ctx
.repo
->desc
);
114 html("</subtitle>\n");
116 html("<link rel='alternate' type='text/html' href='http://");
118 html_attr(cgit_repourl(ctx
.repo
->url
));
121 while ((commit
= get_revision(&rev
)) != NULL
) {
122 add_entry(commit
, host
);
123 free(commit
->buffer
);
124 commit
->buffer
= NULL
;
125 free_commit_list(commit
->parents
);
126 commit
->parents
= NULL
;