From: Tomas Mlcoch Date: Thu, 6 Jun 2013 11:11:09 +0000 (+0200) Subject: xml_file: Support for cr_ContentStat. X-Git-Tag: upstream/0.2.1~104 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3b855a406d02be366b96971d776ea0958eae555d;p=services%2Fcreaterepo_c.git xml_file: Support for cr_ContentStat. --- diff --git a/src/compression_wrapper.c b/src/compression_wrapper.c index bf105b3..990c80c 100644 --- a/src/compression_wrapper.c +++ b/src/compression_wrapper.c @@ -668,9 +668,14 @@ cr_close(CR_FILE *cr_file, GError **err) break; } - if (cr_file->stat) - cr_file->stat->checksum = cr_checksum_final(cr_file->checksum_ctx, - NULL); + if (cr_file->stat) { + g_free(cr_file->stat->checksum); + if (cr_file->checksum_ctx) + cr_file->stat->checksum = cr_checksum_final(cr_file->checksum_ctx, + NULL); + else + cr_file->stat->checksum = NULL; + } g_free(cr_file); diff --git a/src/xml_file.c b/src/xml_file.c index 4d312c6..af945d4 100644 --- a/src/xml_file.c +++ b/src/xml_file.c @@ -41,10 +41,11 @@ #define XML_OTHER_FOOTER "" cr_XmlFile * -cr_xmlfile_open(const char *filename, - cr_XmlFileType type, - cr_CompressionType comtype, - GError **err) +cr_xmlfile_sopen(const char *filename, + cr_XmlFileType type, + cr_CompressionType comtype, + cr_ContentStat *stat, + GError **err) { cr_XmlFile *f; GError *tmp_err = NULL; @@ -60,7 +61,11 @@ cr_xmlfile_open(const char *filename, return NULL; } - CR_FILE *cr_f = cr_open(filename, CR_CW_MODE_WRITE, comtype, &tmp_err); + CR_FILE *cr_f = cr_open_with_stat(filename, + CR_CW_MODE_WRITE, + comtype, + stat, + &tmp_err); if (tmp_err) { g_propagate_prefixed_error(err, tmp_err, "Cannot open %s: ", filename); return NULL; diff --git a/src/xml_file.h b/src/xml_file.h index 3842f39..6545cd2 100644 --- a/src/xml_file.h +++ b/src/xml_file.h @@ -64,7 +64,10 @@ typedef struct { * @return Opened cr_XmlFile or NULL on error */ #define cr_xmlfile_open_primary(FILENAME, COMTYPE, ERR) \ - cr_xmlfile_open(FILENAME, CR_XMLFILE_PRIMARY, COMTYPE, ERR) + cr_xmlfile_open(FILENAME, CR_XMLFILE_PRIMARY, COMTYPE, ERR) + +#define cr_xmlfile_sopen_primary(FILENAME, COMTYPE, STAT, ERR) \ + cr_xmlfile_sopen(FILENAME, CR_XMLFILE_PRIMARY, COMTYPE, STAT, ERR) /** Open a new filelists XML file. * @param FILENAME Filename. @@ -73,7 +76,10 @@ typedef struct { * @return Opened cr_XmlFile or NULL on error */ #define cr_xmlfile_open_filelists(FILENAME, COMTYPE, ERR) \ - cr_xmlfile_open(FILENAME, CR_XMLFILE_FILELISTS, COMTYPE, ERR) + cr_xmlfile_open(FILENAME, CR_XMLFILE_FILELISTS, COMTYPE, ERR) + +#define cr_xmlfile_sopen_filelists(FILENAME, COMTYPE, STAT, ERR) \ + cr_xmlfile_sopen(FILENAME, CR_XMLFILE_FILELISTS, COMTYPE, STAT, ERR) /** Open a new other XML file. * @param FILENAME Filename. @@ -82,7 +88,22 @@ typedef struct { * @return Opened cr_XmlFile or NULL on error */ #define cr_xmlfile_open_other(FILENAME, COMTYPE, ERR) \ - cr_xmlfile_open(FILENAME, CR_XMLFILE_OTHER, COMTYPE, ERR) + cr_xmlfile_open(FILENAME, CR_XMLFILE_OTHER, COMTYPE, ERR) + +#define cr_xmlfile_sopen_other(FILENAME, COMTYPE, STAT, ERR) \ + cr_xmlfile_open(FILENAME, CR_XMLFILE_OTHER, COMTYPE, STAT, ERR) + +/** Open a new XML file with stats. + * Note: Opened file must not exists! This function cannot + * open existing file!. + * @param filename Filename. + * @param type Type of XML file. + * @param comtype Type of used compression. + * @param err **GError + * @return Opened cr_XmlFile or NULL on error + */ +#define cr_xmlfile_open(FILENAME, TYPE, COMTYPE, ERR) \ + cr_xmlfile_sopen(FILENAME, TYPE, COMTYPE, NULL, ERR) /** Open a new XML file. * Note: Opened file must not exists! This function cannot @@ -90,13 +111,15 @@ typedef struct { * @param filename Filename. * @param type Type of XML file. * @param comtype Type of used compression. + * @param stat pointer to cr_ContentStat or NULL * @param err **GError * @return Opened cr_XmlFile or NULL on error */ -cr_XmlFile *cr_xmlfile_open(const char *filename, - cr_XmlFileType type, - cr_CompressionType comtype, - GError **err); +cr_XmlFile *cr_xmlfile_sopen(const char *filename, + cr_XmlFileType type, + cr_CompressionType comtype, + cr_ContentStat *stat, + GError **err); /** Set total number of packages that will be in the file. * This number must be set before any write operation