Fix epoch in rpm and rpmdb importer: epoch is an integer tag.
authorKristian H?gsberg <krh@redhat.com>
Wed Mar 05 23:49:05 2008 -0500 (2008-03-05)
changeset 148ea06dacb3c04
parent 147 c3eab84160e5
child 149 43cac7931189
Fix epoch in rpm and rpmdb importer: epoch is an integer tag.
rpm.c
     1.1 --- a/rpm.c	Wed Mar 05 19:02:29 2008 -0500
     1.2 +++ b/rpm.c	Wed Mar 05 23:49:05 2008 -0500
     1.3 @@ -524,15 +524,22 @@
     1.4  int
     1.5  razor_importer_add_rpm(struct razor_importer *importer, struct razor_rpm *rpm)
     1.6  {
     1.7 -	const char *name, *epoch, *version, *release;
     1.8 -	char evr[128];
     1.9 +	const char *name, *version, *release;
    1.10 +	const uint_32 *epoch;
    1.11 +	struct rpm_header_index *epoch_header;
    1.12 +	char evr[128], buf[16];
    1.13  
    1.14  	name = razor_rpm_get_indirect(rpm, RPMTAG_NAME, NULL);
    1.15  	epoch = razor_rpm_get_indirect(rpm, RPMTAG_EPOCH, NULL);
    1.16  	version = razor_rpm_get_indirect(rpm, RPMTAG_VERSION, NULL);
    1.17  	release = razor_rpm_get_indirect(rpm, RPMTAG_RELEASE, NULL);
    1.18  
    1.19 -	razor_build_evr(evr, sizeof evr, epoch, version, release);
    1.20 +	if (epoch_header) {
    1.21 +		snprintf(buf, sizeof buf, "%u", ntohl(*epoch));
    1.22 +		razor_build_evr(evr, sizeof evr, buf, version, release);
    1.23 +	} else {
    1.24 +		razor_build_evr(evr, sizeof evr, NULL, version, release);
    1.25 +	}
    1.26  	razor_importer_begin_package(importer, name, evr);
    1.27  
    1.28  	import_properties(importer, RAZOR_PROPERTY_REQUIRES, rpm,
    1.29 @@ -567,6 +574,7 @@
    1.30  	char *string;
    1.31  	char **list;
    1.32  	uint_32 *flags;
    1.33 +	uint_32 integer;
    1.34  };
    1.35  
    1.36  static void
    1.37 @@ -598,7 +606,7 @@
    1.38  	int_32 type, count, i;
    1.39  	union rpm_entry name, epoch, version, release;
    1.40  	union rpm_entry basenames, dirnames, dirindexes;
    1.41 -	char filename[PATH_MAX], evr[128];
    1.42 +	char filename[PATH_MAX], evr[128], buf[16];
    1.43  	rpmdb db;
    1.44  
    1.45  	rpmReadConfigFiles(NULL, NULL);
    1.46 @@ -616,8 +624,16 @@
    1.47  		headerGetEntry(h, RPMTAG_EPOCH, &type, &epoch.p, &count);
    1.48  		headerGetEntry(h, RPMTAG_VERSION, &type, &version.p, &count);
    1.49  		headerGetEntry(h, RPMTAG_RELEASE, &type, &release.p, &count);
    1.50 -		razor_build_evr(evr, sizeof evr, epoch.string, version.string,
    1.51 -				release.string);
    1.52 +
    1.53 +		if (epoch.flags != NULL) {
    1.54 +			snprintf(buf, sizeof buf, "%u", *epoch.flags);
    1.55 +			razor_build_evr(evr, sizeof evr,
    1.56 +					buf, version.string, release.string);
    1.57 +		} else {
    1.58 +			razor_build_evr(evr, sizeof evr,
    1.59 +					NULL, version.string, release.string);
    1.60 +		}
    1.61 +
    1.62  		razor_importer_begin_package(importer, name.string, evr);
    1.63  
    1.64  		add_properties(importer, RAZOR_PROPERTY_REQUIRES, h,