From c95d68c4c630a0595ff1bc80a183f367bc5c0f9e Mon Sep 17 00:00:00 2001 From: Tomas Mlcoch Date: Thu, 12 Apr 2012 09:38:16 +0200 Subject: [PATCH] Better XML dump output --- src/createrepo_c.c | 6 +++--- src/mergerepo_c.c | 6 +++--- src/repomd.c | 6 ++++-- src/xml_dump_filelists.c | 9 ++++++--- src/xml_dump_other.c | 9 ++++++--- src/xml_dump_primary.c | 17 ++++++++++------- 6 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/createrepo_c.c b/src/createrepo_c.c index a5f5a7c..8eb4a88 100644 --- a/src/createrepo_c.c +++ b/src/createrepo_c.c @@ -574,9 +574,9 @@ int main(int argc, char **argv) { g_thread_pool_free(pool, FALSE, TRUE); g_message("Pool finished"); - cw_puts(user_data.pri_f, "\n\n"); - cw_puts(user_data.fil_f, "\n\n"); - cw_puts(user_data.oth_f, "\n\n"); + cw_puts(user_data.pri_f, ""); + cw_puts(user_data.fil_f, ""); + cw_puts(user_data.oth_f, ""); cw_close(user_data.pri_f); cw_close(user_data.fil_f); diff --git a/src/mergerepo_c.c b/src/mergerepo_c.c index d5ecac5..c65e73f 100644 --- a/src/mergerepo_c.c +++ b/src/mergerepo_c.c @@ -427,9 +427,9 @@ int dump_merged_metadata(GHashTable *merged_hashtable, long packages, gchar *gro // Write xml footers - cw_puts(pri_f, "\n\n"); - cw_puts(fil_f, "\n\n"); - cw_puts(oth_f, "\n\n"); + cw_puts(pri_f, ""); + cw_puts(fil_f, ""); + cw_puts(oth_f, ""); // Close files diff --git a/src/repomd.c b/src/repomd.c index 664b8c4..690777d 100644 --- a/src/repomd.c +++ b/src/repomd.c @@ -24,7 +24,8 @@ #define RPM_NS "http://linux.duke.edu/metadata/rpm" #define XMLNS_NS "http://linux.duke.edu/metadata/repo" -#define FORMAT_XML 1 +#define XML_ENC "UTF-8" +#define FORMAT_XML 1 #define REPOMD_OK 0 #define REPOMD_ERR 1 @@ -453,7 +454,8 @@ char *repomd_xml_dump(long revision, struct repomdData *pri_xml, struct repomdDa // Dump IT! char *result; - xmlDocDumpFormatMemory(doc, (xmlChar **) &result, NULL, FORMAT_XML); + //xmlDocDumpFormatMemory(doc, (xmlChar **) &result, NULL, FORMAT_XML); + xmlDocDumpFormatMemoryEnc(doc, (xmlChar **) &result, NULL, XML_ENC, FORMAT_XML); // Clean up diff --git a/src/xml_dump_filelists.c b/src/xml_dump_filelists.c index 7935b37..b34328c 100644 --- a/src/xml_dump_filelists.c +++ b/src/xml_dump_filelists.c @@ -11,7 +11,8 @@ #undef MODULE #define MODULE "xml_dump_filelists: " -#define FORMAT_XML 1 +#define FORMAT_XML 1 +#define FORMAT_LEVEL 0 void dump_filelists_items(xmlNodePtr root, Package *package) @@ -72,9 +73,11 @@ char *xml_dump_filelists(Package *package) return NULL; } // Seems to be little bit faster than xmlDocDumpFormatMemory - xmlNodeDump(buf, NULL, root, 1, FORMAT_XML); + xmlNodeDump(buf, NULL, root, FORMAT_LEVEL, FORMAT_XML); assert(buf->content); - result = g_strdup((char *) buf->content); + result = g_strndup((char *) buf->content, (buf->use+1)); // g_strndup allocate (buf->use+1 + result[buf->use] = '\n'; + result[buf->use+1] = '\0'; xmlBufferFree(buf); diff --git a/src/xml_dump_other.c b/src/xml_dump_other.c index f178b13..8487a17 100644 --- a/src/xml_dump_other.c +++ b/src/xml_dump_other.c @@ -11,7 +11,8 @@ #undef MODULE #define MODULE "xml_dump_other: " -#define FORMAT_XML 1 +#define FORMAT_XML 1 +#define FORMAT_LEVEL 0 #define DATE_MAX_LEN 32 @@ -108,9 +109,11 @@ char *xml_dump_other(Package *package) return NULL; } // Seems to be little bit faster than xmlDocDumpFormatMemory - xmlNodeDump(buf, NULL, root, 1, FORMAT_XML); + xmlNodeDump(buf, NULL, root, FORMAT_LEVEL, FORMAT_XML); assert(buf->content); - result = g_strdup((char *) buf->content); + result = g_strndup((char *) buf->content, (buf->use+1)); // g_strndup allocate (buf->use+1 + result[buf->use] = '\n'; + result[buf->use+1] = '\0'; xmlBufferFree(buf); diff --git a/src/xml_dump_primary.c b/src/xml_dump_primary.c index a302852..9fe8fa7 100644 --- a/src/xml_dump_primary.c +++ b/src/xml_dump_primary.c @@ -16,7 +16,8 @@ #define OBSOLETES 2 #define REQUIRES 3 -#define FORMAT_XML 1 +#define FORMAT_XML 1 +#define FORMAT_LEVEL 0 #define DATE_STR_MAX_LEN 32 #define SIZE_STR_MAX_LEN 32 @@ -241,14 +242,14 @@ void dump_base_items(xmlNodePtr root, Package *package) location = xmlNewChild(root, NULL, BAD_CAST "location", NULL); - // Write location attribute href - xmlNewProp(location, BAD_CAST "href", BAD_CAST ((package->location_href) ? package->location_href : "")); - - // Write location attribute base +// Write location attribute base if (package->location_base && package->location_base[0] != '\0') { xmlNewProp(location, BAD_CAST "xml:base", BAD_CAST package->location_base); } + // Write location attribute href + xmlNewProp(location, BAD_CAST "href", BAD_CAST ((package->location_href) ? package->location_href : "")); + /*********************************** Element: format @@ -339,9 +340,11 @@ char *xml_dump_primary(Package *package) return NULL; } // Seems to be little bit faster than xmlDocDumpFormatMemory - xmlNodeDump(buf, NULL, root, 1, FORMAT_XML); + xmlNodeDump(buf, NULL, root, FORMAT_LEVEL, FORMAT_XML); assert(buf->content); - result = g_strdup((char *) buf->content); + result = g_strndup((char *) buf->content, (buf->use+1)); // g_strndup allocate (buf->use+1)+1 + result[buf->use] = '\n'; + result[buf->use+1] = '\0'; xmlBufferFree(buf); -- 2.7.4