- name = (const char *)n->name;
- if (!strcasecmp(name, "title")) {
- res->title = (char *) child->content;
- } else if (!strcasecmp(name, "link")) {
- res->link = (char *) child->content;
- } else if (!strcasecmp(name, "description")) {
- res->description = (char *) child->content;
- } else if (!strcasecmp(name, "language")) {
- res->language = (char *) child->content;
- } else if (!strcasecmp(name, "pubDate")) {
- res->pubdate = (char *) child->content;
- } else if (!strcasecmp(name, "lastBuildDate")) {
- res->lastbuilddate = (char *) child->content;
- } else if (!strcasecmp(name, "generator")) {
- res->generator = (char *) child->content;
- } else if (!strcasecmp(name, "docs")) {
- res->docs = (char *) child->content;
- } else if (!strcasecmp(name, "managingEditor")) {
- res->managingeditor = (char *) child->content;
- } else if (!strcasecmp(name, "webMaster")) {
- res->webmaster = (char *) child->content;
- } else if (!strcasecmp(name, "copyright")) {
- res->copyright = (char *) child->content;
- } else if (!strcasecmp(name, "ttl")) {
- res->ttl = (char *) child->content;
- } else if (!strcasecmp(name, "item")) {
+#define ASSIGN(a) if (strcasecmp((const char*)n->name, #a) == EQUAL) { \
+ if (res->a) free(res->a); \
+ res->a = strdup((const char*)child->content); \
+ return; \
+ }
+ ASSIGN(title);
+ ASSIGN(link);
+ ASSIGN(description);
+ ASSIGN(language);
+ ASSIGN(pubDate);
+ ASSIGN(lastBuildDate);
+ ASSIGN(generator);
+ ASSIGN(docs);
+ ASSIGN(managingEditor);
+ ASSIGN(webMaster);
+ ASSIGN(copyright);
+ ASSIGN(ttl);
+#undef ASSIGN
+ if (!strcasecmp((const char*)n->name, "item")) {