yum.c
changeset 146 1d4043c9f869
parent 109 313b0a615c14
child 192 55b177b689c0
     1.1 --- a/yum.c	Mon Feb 04 14:25:45 2008 -0500
     1.2 +++ b/yum.c	Wed Mar 05 19:01:51 2008 -0500
     1.3 @@ -62,7 +62,7 @@
     1.4  yum_primary_start_element(void *data, const char *name, const char **atts)
     1.5  {
     1.6  	struct yum_context *ctx = data;
     1.7 -	const char *n, *version, *release, *flags;
     1.8 +	const char *n, *epoch, *version, *release, *flags;
     1.9  	char buffer[128];
    1.10  	int i;
    1.11  
    1.12 @@ -70,10 +70,13 @@
    1.13  		ctx->state = YUM_STATE_PACKAGE_NAME;
    1.14  		ctx->p = ctx->name;
    1.15  	} else if (strcmp(name, "version") == 0) {
    1.16 +		epoch = NULL;
    1.17  		version = NULL;
    1.18  		release = NULL;
    1.19  		for (i = 0; atts[i]; i += 2) {
    1.20 -			if (strcmp(atts[i], "ver") == 0)
    1.21 +			if (strcmp(atts[i], "epoch") == 0)
    1.22 +				epoch = atts[i + 1];
    1.23 +			else if (strcmp(atts[i], "ver") == 0)
    1.24  				version = atts[i + 1];
    1.25  			else if (strcmp(atts[i], "rel") == 0)
    1.26  				release = atts[i + 1];
    1.27 @@ -84,7 +87,7 @@
    1.28  			return;
    1.29  		}
    1.30  
    1.31 -		snprintf(buffer, sizeof buffer, "%s-%s", version, release);
    1.32 +		razor_build_evr(buffer, sizeof buffer, epoch, version, release);
    1.33  		razor_importer_begin_package(ctx->importer, ctx->name, buffer);
    1.34  	} else if (strcmp(name, "checksum") == 0) {
    1.35  		ctx->p = ctx->pkgid;
    1.36 @@ -100,12 +103,15 @@
    1.37  	} else if (strcmp(name, "rpm:entry") == 0 &&
    1.38  		   ctx->state != YUM_STATE_BEGIN) {
    1.39  		n = NULL;
    1.40 +		epoch = NULL;
    1.41  		version = NULL;
    1.42  		release = NULL;
    1.43  		flags = NULL;
    1.44  		for (i = 0; atts[i]; i += 2) {
    1.45  			if (strcmp(atts[i], "name") == 0)
    1.46  				n = atts[i + 1];
    1.47 +			else if (strcmp(atts[i], "epoch") == 0)
    1.48 +				epoch = atts[i + 1];
    1.49  			else if (strcmp(atts[i], "ver") == 0)
    1.50  				version = atts[i + 1];
    1.51  			else if (strcmp(atts[i], "rel") == 0)
    1.52 @@ -120,14 +126,7 @@
    1.53  			return;
    1.54  		}
    1.55  
    1.56 -		if (version && release)
    1.57 -			snprintf(buffer, sizeof buffer,
    1.58 -				 "%s-%s", version, release);
    1.59 -		else if (version)
    1.60 -			strcpy(buffer, version);
    1.61 -		else
    1.62 -			buffer[0] = '\0';
    1.63 -			
    1.64 +		razor_build_evr(buffer, sizeof buffer, epoch, version, release);
    1.65  		switch (ctx->state) {
    1.66  		case YUM_STATE_REQUIRES:
    1.67  			razor_importer_add_property(ctx->importer, n,