load_metadata module refactoring
authorTomas Mlcoch <tmlcoch@redhat.com>
Mon, 25 Feb 2013 13:43:43 +0000 (14:43 +0100)
committerTomas Mlcoch <tmlcoch@redhat.com>
Mon, 25 Feb 2013 13:52:55 +0000 (14:52 +0100)
src/createrepo_c.c
src/load_metadata.c
src/load_metadata.h
src/mergerepo_c.c

index 67a86be..503dbec 100644 (file)
@@ -725,14 +725,14 @@ main(int argc, char **argv)
 
     if (package_count && cmd_options->update) {
         int ret;
-        old_metadata = cr_new_metadata(CR_HT_KEY_FILENAME, 1, current_pkglist);
+        old_metadata = cr_metadata_new(CR_HT_KEY_FILENAME, 1, current_pkglist);
 
         if (cmd_options->outputdir)
             old_metadata_location = cr_locate_metadata(out_dir, 1);
         else
             old_metadata_location = cr_locate_metadata(in_dir, 1);
 
-        ret = cr_load_xml_metadata(old_metadata, old_metadata_location);
+        ret = cr_metadata_load_xml(old_metadata, old_metadata_location);
         if (ret == CR_LOAD_METADATA_OK)
             g_debug("Old metadata from: %s - loaded", out_dir);
         else
@@ -743,7 +743,7 @@ main(int argc, char **argv)
         for (; element; element = g_slist_next(element)) {
             char *path = (char *) element->data;
             g_message("Loading metadata from md-path: %s", path);
-            ret = cr_locate_and_load_xml_metadata(old_metadata, path);
+            ret = cr_metadata_locate_and_load_xml(old_metadata, path);
             if (ret == CR_LOAD_METADATA_OK)
                 g_debug("Metadata from md-path %s - loaded", path);
             else
@@ -1230,7 +1230,7 @@ main(int argc, char **argv)
     g_debug("Memory cleanup");
 
     if (old_metadata)
-        cr_destroy_metadata(old_metadata);
+        cr_metadata_free(old_metadata);
 
     g_free(in_repo);
     g_free(out_repo);
index f819603..6f0736d 100644 (file)
  * This module has one known issue about a memory management.
  * The issue acts in cases when you are using one single string chunk
  * for all parsed packages.
- * (use_single_chunk != 0 during call of cr_new_metadata())
+ * (use_single_chunk != 0 during call of cr_metadata_new())
  *
  * Description of issue:
  * During parsing of primary.xml, all string from obtained during parsing are
  * stored into the chunk. When we have all the information from primary.xml and
  * we found out that we don't want the package (according the pkglist passed
- * via cr_new_metadata) and we drop the package (package is not inserted
+ * via cr_metadata_new) and we drop the package (package is not inserted
  * into the hashtable of metadatas), all strings from primary.xml are yet
  * stored in the chunk and they remains there!
  *
@@ -114,7 +114,7 @@ struct ParserData {
 
 
 void
-free_values(gpointer data)
+cr_free_values(gpointer data)
 {
     cr_package_free((cr_Package *) data);
 }
@@ -125,7 +125,7 @@ GHashTable *
 cr_new_metadata_hashtable()
 {
     GHashTable *hashtable = g_hash_table_new_full(g_str_hash, g_str_equal,
-                                                  NULL, free_values);
+                                                  NULL, cr_free_values);
     return hashtable;
 }
 
@@ -141,7 +141,7 @@ cr_destroy_metadata_hashtable(GHashTable *hashtable)
 
 
 cr_Metadata
-cr_new_metadata(cr_HashTableKey key, int use_single_chunk, GSList *pkglist)
+cr_metadata_new(cr_HashTableKey key, int use_single_chunk, GSList *pkglist)
 {
     cr_Metadata md = g_malloc0(sizeof(*md));
     md->key = key;
@@ -171,7 +171,7 @@ cr_new_metadata(cr_HashTableKey key, int use_single_chunk, GSList *pkglist)
 
 
 void
-cr_destroy_metadata(cr_Metadata md)
+cr_metadata_free(cr_Metadata md)
 {
     if (!md)
         return;
@@ -187,7 +187,7 @@ cr_destroy_metadata(cr_Metadata md)
 
 
 inline gchar *
-chunk_insert_len_or_null (GStringChunk *chunk, const gchar *str, gssize len)
+cr_chunk_insert_len_or_null (GStringChunk *chunk, const gchar *str, gssize len)
 {
     if (!str || len <= 0)
         return NULL;
@@ -200,7 +200,7 @@ chunk_insert_len_or_null (GStringChunk *chunk, const gchar *str, gssize len)
 // primary.xml parser handlers
 
 void
-pri_start_handler(void *data, const char *el, const char **attr)
+cr_pri_start_handler(void *data, const char *el, const char **attr)
 {
     struct ParserData *ppd = (struct ParserData *) data;
     cr_Package *pkg = ppd->pkg;
@@ -487,7 +487,7 @@ pri_start_handler(void *data, const char *el, const char **attr)
 
 
 void
-pri_char_handler(void *data, const char *txt, int txtlen)
+cr_pri_char_handler(void *data, const char *txt, int txtlen)
 {
     struct ParserData *ppd = (struct ParserData *) data;
     cr_Package *pkg = ppd->pkg;
@@ -527,7 +527,7 @@ pri_char_handler(void *data, const char *txt, int txtlen)
 
 
 void
-pri_end_handler(void *data, const char *el)
+cr_pri_end_handler(void *data, const char *el)
 {
     struct ParserData *ppd = (struct ParserData *) data;
     cr_Package *pkg = ppd->pkg;
@@ -541,40 +541,40 @@ pri_end_handler(void *data, const char *el)
 
         switch (ppd->last_elem) {
             case NAME_ELEM:
-                pkg->name = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->name = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case ARCH_ELEM:
-                pkg->arch = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->arch = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case CHECKSUM_ELEM:
-                pkg->pkgId = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->pkgId = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case SUMMARY_ELEM:
-                pkg->summary = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->summary = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case DESCRIPTION_ELEM:
-                pkg->description = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->description = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case PACKAGER_ELEM:
-                pkg->rpm_packager = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->rpm_packager = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case URL_ELEM:
-                pkg->url = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->url = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case RPM_LICENSE_ELEM:
-                pkg->rpm_license = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->rpm_license = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case RPM_VENDOR_ELEM:
-                pkg->rpm_vendor = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->rpm_vendor = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case RPM_GROUP_ELEM:
-                pkg->rpm_group = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->rpm_group = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case RPM_BUILDHOST_ELEM:
-                pkg->rpm_buildhost = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->rpm_buildhost = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case RPM_SOURCERPM_ELEM:
-                pkg->rpm_sourcerpm = chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
+                pkg->rpm_sourcerpm = cr_chunk_insert_len_or_null(pkg->chunk, txt, txtlen);
                 break;
             case FILE_ELEM:
             case FILE_DIR_ELEM:
@@ -650,7 +650,7 @@ pri_end_handler(void *data, const char *el)
 // filelists.xml parser handlers
 
 void
-fil_start_handler(void *data, const char *el, const char **attr)
+cr_fil_start_handler(void *data, const char *el, const char **attr)
 {
     int i;
     struct ParserData *ppd = (struct ParserData *) data;
@@ -756,7 +756,7 @@ fil_start_handler(void *data, const char *el, const char **attr)
 
 
 void
-fil_char_handler(void *data, const char *txt, int txtlen)
+cr_fil_char_handler(void *data, const char *txt, int txtlen)
 {
     struct ParserData *ppd = (struct ParserData *) data;
     cr_Package *pkg = ppd->pkg;
@@ -782,7 +782,7 @@ fil_char_handler(void *data, const char *txt, int txtlen)
 
 
 void
-fil_end_handler(void *data, const char *el)
+cr_fil_end_handler(void *data, const char *el)
 {
     struct ParserData *ppd = (struct ParserData *) data;
     cr_Package *pkg = ppd->pkg;
@@ -858,7 +858,7 @@ fil_end_handler(void *data, const char *el)
 // other.xml parser handlers
 
 void
-oth_start_handler(void *data, const char *el, const char **attr)
+cr_oth_start_handler(void *data, const char *el, const char **attr)
 {
     int i;
     struct ParserData *ppd = (struct ParserData *) data;
@@ -972,7 +972,7 @@ oth_start_handler(void *data, const char *el, const char **attr)
 
 
 void
-oth_char_handler(void *data, const char *txt, int txtlen)
+cr_oth_char_handler(void *data, const char *txt, int txtlen)
 {
     struct ParserData *ppd = (struct ParserData *) data;
     cr_Package *pkg = ppd->pkg;
@@ -996,7 +996,7 @@ oth_char_handler(void *data, const char *txt, int txtlen)
 
 
 void
-oth_end_handler(void *data, const char *el)
+cr_oth_end_handler(void *data, const char *el)
 {
     struct ParserData *ppd = (struct ParserData *) data;
     cr_Package *pkg = ppd->pkg;
@@ -1048,7 +1048,7 @@ oth_end_handler(void *data, const char *el)
 
 
 int
-load_xml_files(GHashTable *hashtable, const char *primary_xml_path,
+cr_load_xml_files(GHashTable *hashtable, const char *primary_xml_path,
                const char *filelists_xml_path, const char *other_xml_path,
                GStringChunk *chunk, GHashTable *pkglist_ht)
 {
@@ -1098,18 +1098,18 @@ load_xml_files(GHashTable *hashtable, const char *primary_xml_path,
 
     pri_p = XML_ParserCreate(NULL);
     XML_SetUserData(pri_p, (void *) &parser_data);
-    XML_SetElementHandler(pri_p, pri_start_handler, pri_end_handler);
-    XML_SetCharacterDataHandler(pri_p, pri_char_handler);
+    XML_SetElementHandler(pri_p, cr_pri_start_handler, cr_pri_end_handler);
+    XML_SetCharacterDataHandler(pri_p, cr_pri_char_handler);
 
     fil_p = XML_ParserCreate(NULL);
     XML_SetUserData(fil_p, (void *) &parser_data);
-    XML_SetElementHandler(fil_p, fil_start_handler, fil_end_handler);
-    XML_SetCharacterDataHandler(fil_p, fil_char_handler);
+    XML_SetElementHandler(fil_p, cr_fil_start_handler, cr_fil_end_handler);
+    XML_SetCharacterDataHandler(fil_p, cr_fil_char_handler);
 
     oth_p = XML_ParserCreate(NULL);
     XML_SetUserData(oth_p, (void *) &parser_data);
-    XML_SetElementHandler(oth_p, oth_start_handler, oth_end_handler);
-    XML_SetCharacterDataHandler(oth_p, oth_char_handler);
+    XML_SetElementHandler(oth_p, cr_oth_start_handler, cr_oth_end_handler);
+    XML_SetCharacterDataHandler(oth_p, cr_oth_char_handler);
 
 
     // Parse
@@ -1240,7 +1240,7 @@ cleanup:
 
 
 int
-cr_load_xml_metadata(cr_Metadata md, struct cr_MetadataLocation *ml)
+cr_metadata_load_xml(cr_Metadata md, struct cr_MetadataLocation *ml)
 {
     if (!md || !ml)
         return CR_LOAD_METADATA_ERR;
@@ -1256,7 +1256,7 @@ cr_load_xml_metadata(cr_Metadata md, struct cr_MetadataLocation *ml)
     GHashTable *intern_hashtable;  // key is checksum (pkgId)
 
     intern_hashtable = cr_new_metadata_hashtable();
-    result = load_xml_files(intern_hashtable, ml->pri_xml_href,
+    result = cr_load_xml_files(intern_hashtable, ml->pri_xml_href,
                             ml->fil_xml_href, ml->oth_xml_href,
                             md->chunk, md->pkglist_ht);
 
@@ -1318,14 +1318,14 @@ cr_load_xml_metadata(cr_Metadata md, struct cr_MetadataLocation *ml)
 
 
 int
-cr_locate_and_load_xml_metadata(cr_Metadata md, const char *repopath)
+cr_metadata_locate_and_load_xml(cr_Metadata md, const char *repopath)
 {
     if (!md || !repopath)
         return CR_LOAD_METADATA_ERR;
 
     int ret;
     struct cr_MetadataLocation *ml = cr_locate_metadata(repopath, 1);
-    ret = cr_load_xml_metadata(md, ml);
+    ret = cr_metadata_load_xml(md, ml);
     cr_metadatalocation_free(ml);
 
     return ret;
index e98d784..7ab8398 100644 (file)
@@ -79,21 +79,21 @@ typedef struct _cr_Metadata *cr_Metadata;
  *                          list. If param is NULL all packages are loaded.
  * @return                  empty cr_Metadata object
  */
-cr_Metadata cr_new_metadata(cr_HashTableKey key,
+cr_Metadata cr_metadata_new(cr_HashTableKey key,
                             int use_single_chunk,
                             GSList *pkglist);
 
 /** Destroy metadata.
  * @param md            cr_Metadata object
  */
-void cr_destroy_metadata(cr_Metadata md);
+void cr_metadata_free(cr_Metadata md);
 
 /** Load metadata from the specified location.
  * @param md            metadata object
  * @param ml            metadata location
  * @return              return code CR_LOAD_METADATA_OK or CR_LOAD_METADATA_ERR
  */
-int cr_load_xml_metadata(cr_Metadata md,
+int cr_metadata_load_xml(cr_Metadata md,
                          struct cr_MetadataLocation *ml);
 
 /** Locate and load metadata from the specified path.
@@ -101,7 +101,7 @@ int cr_load_xml_metadata(cr_Metadata md,
  * @param repopath      path to repo (to directory with repodata/ subdir)
  * @return              return code CR_LOAD_METADATA_OK or CR_LOAD_METADATA_ERR
  */
-int cr_locate_and_load_xml_metadata(cr_Metadata md,
+int cr_metadata_locate_and_load_xml(cr_Metadata md,
                                     const char *repopath);
 
 /** @} */
index 70d0a58..8af3863 100644 (file)
@@ -537,11 +537,11 @@ koji_stuff_prepare(struct KojiMergedReposStuff **koji_stuff_ptr,
         GHashTableIter iter;
         gpointer key, value;
 
-        metadata = cr_new_metadata(CR_HT_KEY_HASH, 0, NULL);
+        metadata = cr_metadata_new(CR_HT_KEY_HASH, 0, NULL);
         ml       = (struct cr_MetadataLocation *) element->data;
 
-        if (cr_load_xml_metadata(metadata, ml) == CR_LOAD_METADATA_ERR) {
-            cr_destroy_metadata(metadata);
+        if (cr_metadata_load_xml(metadata, ml) == CR_LOAD_METADATA_ERR) {
+            cr_metadata_free(metadata);
             g_critical("Cannot load repo: \"%s\"", ml->original_url);
             repoid++;
             break;
@@ -618,7 +618,7 @@ koji_stuff_prepare(struct KojiMergedReposStuff **koji_stuff_ptr,
             cr_nvrea_free(nvrea);
         }
 
-        cr_destroy_metadata(metadata);
+        cr_metadata_free(metadata);
         repoid++;
     }
 
@@ -848,7 +848,7 @@ merge_repos(GHashTable *merged,
         cr_Metadata metadata;               // current repodata
         struct cr_MetadataLocation *ml;     // location of current repodata
 
-        metadata = cr_new_metadata(CR_HT_KEY_HASH, 0, NULL);
+        metadata = cr_metadata_new(CR_HT_KEY_HASH, 0, NULL);
         ml       = (struct cr_MetadataLocation *) element->data;
         repopath = cr_normalize_dir_path(ml->original_url);
 
@@ -858,8 +858,8 @@ merge_repos(GHashTable *merged,
 
         g_debug("Processing: %s", repopath);
 
-        if (cr_load_xml_metadata(metadata, ml) == CR_LOAD_METADATA_ERR) {
-            cr_destroy_metadata(metadata);
+        if (cr_metadata_load_xml(metadata, ml) == CR_LOAD_METADATA_ERR) {
+            cr_metadata_free(metadata);
             g_critical("Cannot load repo: \"%s\"", ml->repomd);
             break;
         }
@@ -926,7 +926,7 @@ merge_repos(GHashTable *merged,
         }
 
         loaded_packages += repo_loaded_packages;
-        cr_destroy_metadata(metadata);
+        cr_metadata_free(metadata);
         g_debug("Repo: %s (Loaded: %ld Used: %ld)", repopath,
                 (unsigned long) original_size, repo_loaded_packages);
         g_free(repopath);
@@ -1486,7 +1486,7 @@ main(int argc, char **argv)
         struct cr_MetadataLocation *noarch_ml;
 
         noarch_ml = cr_locate_metadata(cmd_options->noarch_repo_url, 1);
-        noarch_metadata = cr_new_metadata(CR_HT_KEY_FILENAME, 0, NULL);
+        noarch_metadata = cr_metadata_new(CR_HT_KEY_FILENAME, 0, NULL);
 
         // Base paths in output of original createrepo doesn't have trailing '/'
         gchar *noarch_repopath = cr_normalize_dir_path(noarch_ml->original_url);
@@ -1496,9 +1496,9 @@ main(int argc, char **argv)
 
         g_debug("Loading noarch_repo: %s", noarch_repopath);
 
-        if (cr_load_xml_metadata(noarch_metadata, noarch_ml) == CR_LOAD_METADATA_ERR) {
+        if (cr_metadata_load_xml(noarch_metadata, noarch_ml) == CR_LOAD_METADATA_ERR) {
             g_error("Cannot load noarch repo: \"%s\"", noarch_ml->repomd);
-            cr_destroy_metadata(noarch_metadata);
+            cr_metadata_free(noarch_metadata);
             // TODO cleanup
             cr_metadatalocation_free(noarch_ml);
             return 1;
@@ -1569,7 +1569,7 @@ main(int argc, char **argv)
     // Cleanup
 
     g_free(groupfile);
-    cr_destroy_metadata(noarch_metadata);
+    cr_metadata_free(noarch_metadata);
     destroy_merged_metadata_hashtable(merged_hashtable);
     free_options(cmd_options);
     return 0;