From f099b7823ba2274326476a095959bfa58f379599 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Mon, 9 Feb 2009 00:29:41 -0200 Subject: [PATCH] Add support for content in the entry. Finally, an atom:entry gets its atom:content. --- atom/entry.c | 23 ++++++++++++++++++++++- include/atompub/entry.h | 3 +++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/atom/entry.c b/atom/entry.c index ff414ee..fd2921e 100644 --- a/atom/entry.c +++ b/atom/entry.c @@ -33,6 +33,7 @@ struct _atom_entry GPtrArray *authors; GPtrArray *categories; char *summary; + AtomContent *content; }; static void atom_entry_updated_set_from_iso8601 (AtomEntry *, char *); @@ -56,6 +57,7 @@ atom_entry_new (char *id, char *title, AtomPerson *author) entry->categories = NULL; atom_entry_author_add (entry, author); entry->summary = NULL; + entry->content = NULL; return entry; } @@ -96,6 +98,8 @@ atom_entry_new_data_len (char *data, size_t len) atom_entry_author_add (entry, atom_person_new_from_xmlnode (child)); else if (!xmlStrcmp (child->name, "category")) atom_entry_category_add (entry, atom_category_new_from_xmlnode (child)); + else if (!xmlStrcmp (child->name, "content")) + entry->content = atom_content_new_from_xmlnode (child); else xmlFree (content); } @@ -261,6 +265,20 @@ atom_entry_summary_set (AtomEntry *entry, char *summary) entry->summary = g_strdup (summary); } +AtomContent * +atom_entry_content (AtomEntry *entry) +{ + return entry->content; +} + +void +atom_entry_content_set (AtomEntry *entry, AtomContent *content) +{ + if (entry->content) + atom_content_delete (entry->content); + entry->content = content; +} + static void atom_entry_update_xmlnode (AtomEntry *entry) { @@ -294,7 +312,8 @@ atom_entry_update_xmlnode (AtomEntry *entry) !xmlStrcmp (child->name, "updated") || !xmlStrcmp (child->name, "summary") || !xmlStrcmp (child->name, "author") || - !xmlStrcmp (child->name, "category")) + !xmlStrcmp (child->name, "category") || + !xmlStrcmp (child->name, "content")) { xmlUnlinkNode (child); xmlFreeNode (child); @@ -323,6 +342,8 @@ atom_entry_update_xmlnode (AtomEntry *entry) cat = atom_category_to_xmlnode (category, "category"); xmlAddChild (root, cat); } + if (entry->content) + xmlAddChild (root, atom_content_to_xmlnode (entry->content)); } void diff --git a/include/atompub/entry.h b/include/atompub/entry.h index af95156..4226a1d 100644 --- a/include/atompub/entry.h +++ b/include/atompub/entry.h @@ -25,6 +25,7 @@ #include #include #include +#include typedef struct _atom_entry AtomEntry; @@ -43,6 +44,8 @@ void atom_entry_categories (AtomEntry *, AtomCategory ***, size_t *); void atom_entry_category_add (AtomEntry *, AtomCategory *); char * atom_entry_summary (AtomEntry *); void atom_entry_summary_set (AtomEntry *, char *); +AtomContent *atom_entry_content (AtomEntry *); +void atom_entry_content_set (AtomEntry *, AtomContent *); void atom_entry_string (AtomEntry *, char **, size_t *); #endif -- 2.20.1