From 6a4486ee4d6a803ed6d08373d99f8c55495ed118 Mon Sep 17 00:00:00 2001 From: Tomas Mlcoch Date: Mon, 25 Feb 2013 14:43:43 +0100 Subject: [PATCH] load_metadata module refactoring --- src/createrepo_c.c | 8 +++--- src/load_metadata.c | 78 ++++++++++++++++++++++++++--------------------------- src/load_metadata.h | 8 +++--- src/mergerepo_c.c | 24 ++++++++--------- 4 files changed, 59 insertions(+), 59 deletions(-) diff --git a/src/createrepo_c.c b/src/createrepo_c.c index 67a86be..503dbec 100644 --- a/src/createrepo_c.c +++ b/src/createrepo_c.c @@ -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); diff --git a/src/load_metadata.c b/src/load_metadata.c index f819603..6f0736d 100644 --- a/src/load_metadata.c +++ b/src/load_metadata.c @@ -40,13 +40,13 @@ * 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; diff --git a/src/load_metadata.h b/src/load_metadata.h index e98d784..7ab8398 100644 --- a/src/load_metadata.h +++ b/src/load_metadata.h @@ -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); /** @} */ diff --git a/src/mergerepo_c.c b/src/mergerepo_c.c index 70d0a58..8af3863 100644 --- a/src/mergerepo_c.c +++ b/src/mergerepo_c.c @@ -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; -- 2.7.4