From caffc8d8fdb724bf16e153b093c4ac4b3233919a Mon Sep 17 00:00:00 2001 From: Tomas Mlcoch Date: Mon, 25 Feb 2013 14:19:15 +0100 Subject: [PATCH] parsepkg and parsehdr module refactoring --- src/createrepo_c.c | 2 +- src/parsehdr.c | 70 +++++++++++++++++++++++++++--------------------------- src/parsehdr.h | 20 ++++++++-------- src/parsepkg.c | 24 +++++++++---------- src/parsepkg.h | 26 ++++++++++---------- 5 files changed, 71 insertions(+), 71 deletions(-) diff --git a/src/createrepo_c.c b/src/createrepo_c.c index e18e87d..10704b6 100644 --- a/src/createrepo_c.c +++ b/src/createrepo_c.c @@ -257,7 +257,7 @@ dumper_thread(gpointer data, gpointer user_data) // Load package and gen XML metadata if (!old_used) { // Load package from file - pkg = cr_package_from_file(task->full_path, udata->checksum_type, + pkg = cr_package_from_rpm(task->full_path, udata->checksum_type, location_href, udata->location_base, udata->changelog_limit, NULL); if (!pkg) { diff --git a/src/parsehdr.c b/src/parsehdr.c index 263d8a3..8dbca64 100644 --- a/src/parsehdr.c +++ b/src/parsehdr.c @@ -28,7 +28,7 @@ inline gchar * -safe_string_chunk_insert(GStringChunk *chunk, const char *str) +cr_safe_string_chunk_insert(GStringChunk *chunk, const char *str) { if (!chunk || !str) { return NULL; @@ -39,7 +39,7 @@ safe_string_chunk_insert(GStringChunk *chunk, const char *str) inline int -compare_dependency(const char *dep1, const char *dep2) +cr_compare_dependency(const char *dep1, const char *dep2) { /* Compares two dependency by name * NOTE: The function assume first parts must be same! @@ -112,10 +112,10 @@ compare_dependency(const char *dep1, const char *dep2) cr_Package * -cr_parse_header(Header hdr, gint64 mtime, gint64 size, - const char *checksum, const char *checksum_type, - const char *location_href, const char *location_base, - int changelog_limit, gint64 hdr_start, gint64 hdr_end) +cr_package_from_header(Header hdr, gint64 mtime, gint64 size, + const char *checksum, const char *checksum_type, + const char *location_href, const char *location_base, + int changelog_limit, gint64 hdr_start, gint64 hdr_end) { // Create new package structure @@ -131,17 +131,17 @@ cr_parse_header(Header hdr, gint64 mtime, gint64 size, // Fill package structure - pkg->pkgId = safe_string_chunk_insert(pkg->chunk, checksum); - pkg->name = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_NAME)); + pkg->pkgId = cr_safe_string_chunk_insert(pkg->chunk, checksum); + pkg->name = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_NAME)); gint64 is_src = headerGetNumber(hdr, RPMTAG_SOURCEPACKAGE); if (is_src) { - pkg->arch = safe_string_chunk_insert(pkg->chunk, "src"); + pkg->arch = cr_safe_string_chunk_insert(pkg->chunk, "src"); } else { - pkg->arch = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_ARCH)); + pkg->arch = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_ARCH)); } - pkg->version = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_VERSION)); + pkg->version = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_VERSION)); #define MAX_STR_INT_LEN 24 char tmp_epoch[MAX_STR_INT_LEN]; @@ -150,22 +150,22 @@ cr_parse_header(Header hdr, gint64 mtime, gint64 size, } pkg->epoch = g_string_chunk_insert_len(pkg->chunk, tmp_epoch, MAX_STR_INT_LEN); - pkg->release = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_RELEASE)); - pkg->summary = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_SUMMARY)); - pkg->description = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_DESCRIPTION)); - pkg->url = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_URL)); + pkg->release = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_RELEASE)); + pkg->summary = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_SUMMARY)); + pkg->description = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_DESCRIPTION)); + pkg->url = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_URL)); pkg->time_file = mtime; if (headerGet(hdr, RPMTAG_BUILDTIME, td, flags)) { pkg->time_build = rpmtdGetNumber(td); } - pkg->rpm_license = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_LICENSE)); - pkg->rpm_vendor = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_VENDOR)); - pkg->rpm_group = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_GROUP)); - pkg->rpm_buildhost = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_BUILDHOST)); - pkg->rpm_sourcerpm = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_SOURCERPM)); + pkg->rpm_license = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_LICENSE)); + pkg->rpm_vendor = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_VENDOR)); + pkg->rpm_group = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_GROUP)); + pkg->rpm_buildhost = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_BUILDHOST)); + pkg->rpm_sourcerpm = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_SOURCERPM)); pkg->rpm_header_start = hdr_start; pkg->rpm_header_end = hdr_end; - pkg->rpm_packager = safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_PACKAGER)); + pkg->rpm_packager = cr_safe_string_chunk_insert(pkg->chunk, headerGetString(hdr, RPMTAG_PACKAGER)); pkg->size_package = size; if (headerGet(hdr, RPMTAG_SIZE, td, flags)) { pkg->size_installed = rpmtdGetNumber(td); @@ -173,9 +173,9 @@ cr_parse_header(Header hdr, gint64 mtime, gint64 size, if (headerGet(hdr, RPMTAG_ARCHIVESIZE, td, flags)) { pkg->size_archive = rpmtdGetNumber(td); } - pkg->location_href = safe_string_chunk_insert(pkg->chunk, location_href); - pkg->location_base = safe_string_chunk_insert(pkg->chunk, location_base); - pkg->checksum_type = safe_string_chunk_insert(pkg->chunk, checksum_type); + pkg->location_href = cr_safe_string_chunk_insert(pkg->chunk, location_href); + pkg->location_base = cr_safe_string_chunk_insert(pkg->chunk, location_base); + pkg->checksum_type = cr_safe_string_chunk_insert(pkg->chunk, checksum_type); rpmtdFreeData(td); rpmtdFree(td); @@ -204,7 +204,7 @@ cr_parse_header(Header hdr, gint64 mtime, gint64 size, int x = 0; dir_list = malloc(sizeof(char *) * dir_count); while (rpmtdNext(dirnames) != -1) { - dir_list[x] = safe_string_chunk_insert(pkg->chunk, rpmtdGetString(dirnames)); + dir_list[x] = cr_safe_string_chunk_insert(pkg->chunk, rpmtdGetString(dirnames)); x++; } assert(x == dir_count); @@ -228,19 +228,19 @@ cr_parse_header(Header hdr, gint64 mtime, gint64 size, (rpmtdNext(filemodes) != -1)) { cr_PackageFile *packagefile = cr_package_file_new(); - packagefile->name = safe_string_chunk_insert(pkg->chunk, + packagefile->name = cr_safe_string_chunk_insert(pkg->chunk, rpmtdGetString(filenames)); packagefile->path = (dir_list) ? dir_list[(int) rpmtdGetNumber(indexes)] : ""; if (S_ISDIR(rpmtdGetNumber(filemodes))) { // Directory - packagefile->type = safe_string_chunk_insert(pkg->chunk, "dir"); + packagefile->type = cr_safe_string_chunk_insert(pkg->chunk, "dir"); } else if (rpmtdGetNumber(fileflags) & RPMFILE_GHOST) { // Ghost - packagefile->type = safe_string_chunk_insert(pkg->chunk, "ghost"); + packagefile->type = cr_safe_string_chunk_insert(pkg->chunk, "ghost"); } else { // Regular file - packagefile->type = safe_string_chunk_insert(pkg->chunk, ""); + packagefile->type = cr_safe_string_chunk_insert(pkg->chunk, ""); } g_hash_table_replace(filenames_hashtable, @@ -374,8 +374,8 @@ cr_parse_header(Header hdr, gint64 mtime, gint64 size, // Create dynamic dependency object cr_Dependency *dependency = cr_dependency_new(); - dependency->name = safe_string_chunk_insert(pkg->chunk, filename); - dependency->flags = safe_string_chunk_insert(pkg->chunk, flags); + dependency->name = cr_safe_string_chunk_insert(pkg->chunk, filename); + dependency->flags = cr_safe_string_chunk_insert(pkg->chunk, flags); struct cr_EVR evr = cr_str_to_evr(full_version, pkg->chunk); dependency->epoch = evr.epoch; dependency->version = evr.version; @@ -400,7 +400,7 @@ cr_parse_header(Header hdr, gint64 mtime, gint64 size, if (!libc_require_highest) libc_require_highest = dependency; else { - if (compare_dependency(libc_require_highest->name, + if (cr_compare_dependency(libc_require_highest->name, dependency->name) == 2) { g_free(libc_require_highest); @@ -480,10 +480,10 @@ cr_parse_header(Header hdr, gint64 mtime, gint64 size, gint64 time = rpmtdGetNumber(changelogtimes); cr_ChangelogEntry *changelog = cr_changelog_entry_new(); - changelog->author = safe_string_chunk_insert(pkg->chunk, + changelog->author = cr_safe_string_chunk_insert(pkg->chunk, rpmtdGetString(changelognames)); changelog->date = time; - changelog->changelog = safe_string_chunk_insert(pkg->chunk, + changelog->changelog = cr_safe_string_chunk_insert(pkg->chunk, rpmtdGetString(changelogtexts)); // Remove space from end of author name @@ -543,7 +543,7 @@ cr_xml_from_header(Header hdr, gint64 mtime, gint64 size, int changelog_limit, gint64 hdr_start, gint64 hdr_end) { - cr_Package *pkg = cr_parse_header(hdr, mtime, size, checksum, checksum_type, + cr_Package *pkg = cr_package_from_header(hdr, mtime, size, checksum, checksum_type, location_href, location_base, changelog_limit, hdr_start, hdr_end); diff --git a/src/parsehdr.h b/src/parsehdr.h index ee63f8a..97da4a3 100644 --- a/src/parsehdr.h +++ b/src/parsehdr.h @@ -47,16 +47,16 @@ extern "C" { * @param hdr_end last byte of header * @return cr_Package */ -cr_Package *cr_parse_header(Header hdr, - gint64 mtime, - gint64 size, - const char *checksum, - const char *checksum_type, - const char *location_href, - const char *location_base, - int changelog_limit, - gint64 hdr_start, - gint64 hdr_end); +cr_Package *cr_package_from_header(Header hdr, + gint64 mtime, + gint64 size, + const char *checksum, + const char *checksum_type, + const char *location_href, + const char *location_base, + int changelog_limit, + gint64 hdr_start, + gint64 hdr_end); /** Read data from header and return struct cr_XmlStruct. * All const char * params could be NULL. diff --git a/src/parsepkg.c b/src/parsepkg.c index 8bf4eb6..99c13d2 100644 --- a/src/parsepkg.c +++ b/src/parsepkg.c @@ -36,7 +36,7 @@ #include "parsehdr.h" volatile short cr_initialized = 0; -rpmts ts = NULL; +rpmts cr_ts = NULL; void @@ -48,15 +48,15 @@ cr_package_parser_init() return; cr_initialized = 1; rpmReadConfigFiles(NULL, NULL); - ts = rpmtsCreate(); - if (!ts) + cr_ts = rpmtsCreate(); + if (!cr_ts) g_critical("%s: rpmtsCreate() failed", __func__); rpmVSFlags vsflags = 0; vsflags |= _RPMVSF_NODIGESTS; vsflags |= _RPMVSF_NOSIGNATURES; vsflags |= RPMVSF_NOHDRCHK; - rpmtsSetVSFlags(ts, vsflags); + rpmtsSetVSFlags(cr_ts, vsflags); // Set empty keyring // Why? Because RPM is not thread-safe. Not only a little bit. @@ -64,7 +64,7 @@ cr_package_parser_init() // This includes also reading the headers. // Work around for this shoud be use empty keyring. keyring = rpmKeyringNew(); - if (rpmtsSetKeyring(ts, keyring) == -1) + if (rpmtsSetKeyring(cr_ts, keyring) == -1) g_critical("%s: rpmtsSetKeyring() failed", __func__); rpmKeyringFree(keyring); } @@ -73,8 +73,8 @@ cr_package_parser_init() void cr_package_parser_shutdown() { - if (ts) - rpmtsFree(ts); + if (cr_ts) + rpmtsFree(cr_ts); rpmFreeMacros(NULL); rpmFreeRpmrc(); @@ -82,7 +82,7 @@ cr_package_parser_shutdown() cr_Package * -cr_package_from_file(const char *filename, +cr_package_from_rpm(const char *filename, cr_ChecksumType checksum_type, const char *location_href, const char *location_base, @@ -125,7 +125,7 @@ cr_package_from_file(const char *filename, // Read package Header hdr; - int rc = rpmReadPackageFile(ts, fd, NULL, &hdr); + int rc = rpmReadPackageFile(cr_ts, fd, NULL, &hdr); if (rc != RPMRC_OK) { switch (rc) { case RPMRC_NOKEY: @@ -180,7 +180,7 @@ cr_package_from_file(const char *filename, // Get package object - result = cr_parse_header(hdr, mtime, size, checksum, checksum_type_str, + result = cr_package_from_header(hdr, mtime, size, checksum, checksum_type_str, location_href, location_base, changelog_limit, hdr_r.start, hdr_r.end); @@ -196,7 +196,7 @@ cr_package_from_file(const char *filename, struct cr_XmlStruct -cr_xml_from_package_file(const char *filename, +cr_xml_from_rpm(const char *filename, cr_ChecksumType checksum_type, const char *location_href, const char *location_base, @@ -243,7 +243,7 @@ cr_xml_from_package_file(const char *filename, // Read package Header hdr; - int rc = rpmReadPackageFile(ts, fd, NULL, &hdr); + int rc = rpmReadPackageFile(cr_ts, fd, NULL, &hdr); if (rc != RPMRC_OK) { switch (rc) { case RPMRC_NOKEY: diff --git a/src/parsepkg.h b/src/parsepkg.h index 796bf93..4ea2869 100644 --- a/src/parsepkg.h +++ b/src/parsepkg.h @@ -56,15 +56,15 @@ void cr_package_parser_shutdown(); * @param stat_buf struct stat of the filename * (optional - could be NULL) */ -cr_Package *cr_package_from_file(const char *filename, - cr_ChecksumType checksum_type, - const char *location_href, - const char *location_base, - int changelog_limit, - struct stat *stat_buf); +cr_Package *cr_package_from_rpm(const char *filename, + cr_ChecksumType checksum_type, + const char *location_href, + const char *location_base, + int changelog_limit, + struct stat *stat_buf); /** Generate XML for the specified package. - * @param filename filename + * @param filename rpm filename * @param checksum_type type of checksum to be used * @param location_href package location inside repository * @param location_base location (url) of repository @@ -72,12 +72,12 @@ cr_Package *cr_package_from_file(const char *filename, * @param stat_buf struct stat of the filename * (optional - could be NULL) */ -struct cr_XmlStruct cr_xml_from_package_file(const char *filename, - cr_ChecksumType checksum_type, - const char *location_href, - const char *location_base, - int changelog_limit, - struct stat *stat_buf); +struct cr_XmlStruct cr_xml_from_rpm(const char *filename, + cr_ChecksumType checksum_type, + const char *location_href, + const char *location_base, + int changelog_limit, + struct stat *stat_buf); /** @} */ -- 2.7.4