1.1 --- a/import.c Wed Oct 24 12:21:29 2007 -0400
1.2 +++ b/import.c Thu Oct 25 23:35:42 2007 -0400
1.3 @@ -171,7 +171,8 @@
1.4 yum_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;
1.8 + const char *n, *version, *release;
1.9 + char buffer[128];
1.10 int i;
1.11
1.12 if (strcmp(name, "name") == 0) {
1.13 @@ -179,11 +180,21 @@
1.14 ctx->p = ctx->name;
1.15 } else if (strcmp(name, "version") == 0) {
1.16 version = NULL;
1.17 + release = NULL;
1.18 for (i = 0; atts[i]; i += 2) {
1.19 if (strcmp(atts[i], "ver") == 0)
1.20 version = atts[i + 1];
1.21 + else if (strcmp(atts[i], "rel") == 0)
1.22 + release = atts[i + 1];
1.23 }
1.24 - razor_importer_begin_package(ctx->importer, ctx->name, version);
1.25 + if (version == NULL || release == NULL) {
1.26 + fprintf(stderr, "invalid version tag, "
1.27 + "missing version or release attribute\n");
1.28 + return;
1.29 + }
1.30 +
1.31 + snprintf(buffer, sizeof buffer, "%s-%s", version, release);
1.32 + razor_importer_begin_package(ctx->importer, ctx->name, buffer);
1.33 } else if (strcmp(name, "rpm:requires") == 0) {
1.34 ctx->state = YUM_STATE_REQUIRES;
1.35 } else if (strcmp(name, "rpm:provides") == 0) {
1.36 @@ -192,11 +203,14 @@
1.37 ctx->state != YUM_STATE_BEGIN) {
1.38 n = NULL;
1.39 version = NULL;
1.40 + release = NULL;
1.41 for (i = 0; atts[i]; i += 2) {
1.42 if (strcmp(atts[i], "name") == 0)
1.43 n = atts[i + 1];
1.44 else if (strcmp(atts[i], "ver") == 0)
1.45 version = atts[i + 1];
1.46 + else if (strcmp(atts[i], "rel") == 0)
1.47 + release = atts[i + 1];
1.48 }
1.49
1.50 if (n == NULL) {
1.51 @@ -205,12 +219,20 @@
1.52 return;
1.53 }
1.54
1.55 + if (version && release)
1.56 + snprintf(buffer, sizeof buffer,
1.57 + "%s-%s", version, release);
1.58 + else if (version)
1.59 + strcpy(buffer, version);
1.60 + else
1.61 + buffer[0] = '\0';
1.62 +
1.63 switch (ctx->state) {
1.64 case YUM_STATE_REQUIRES:
1.65 - razor_importer_add_requires(ctx->importer, n, version);
1.66 + razor_importer_add_requires(ctx->importer, n, buffer);
1.67 break;
1.68 case YUM_STATE_PROVIDES:
1.69 - razor_importer_add_provides(ctx->importer, n, version);
1.70 + razor_importer_add_provides(ctx->importer, n, buffer);
1.71 break;
1.72 }
1.73 } else if (strcmp(name, "file") == 0) {
1.74 @@ -255,6 +277,7 @@
1.75 int len;
1.76
1.77 ctx.importer = razor_importer_new();
1.78 + ctx.state = YUM_STATE_BEGIN;
1.79
1.80 parser = XML_ParserCreate(NULL);
1.81 XML_SetUserData(parser, &ctx);