1.1 --- a/razor.c Sun Apr 06 19:34:58 2008 -0400
1.2 +++ b/razor.c Sun Apr 06 23:36:45 2008 -0400
1.3 @@ -45,6 +45,7 @@
1.4 uint name : 24;
1.5 uint flags : 8;
1.6 uint32_t version;
1.7 + uint32_t arch;
1.8 struct list_head properties;
1.9 struct list_head files;
1.10 };
1.11 @@ -268,7 +269,9 @@
1.12
1.13 void
1.14 razor_importer_begin_package(struct razor_importer *importer,
1.15 - const char *name, const char *version)
1.16 + const char *name,
1.17 + const char *version,
1.18 + const char *arch)
1.19 {
1.20 struct razor_package *p;
1.21
1.22 @@ -276,6 +279,7 @@
1.23 p->name = hashtable_tokenize(&importer->table, name);
1.24 p->flags = 0;
1.25 p->version = hashtable_tokenize(&importer->table, version);
1.26 + p->arch = hashtable_tokenize(&importer->table, arch);
1.27
1.28 importer->package = p;
1.29 array_init(&importer->properties);
1.30 @@ -816,7 +820,9 @@
1.31 int
1.32 razor_package_iterator_next(struct razor_package_iterator *pi,
1.33 struct razor_package **package,
1.34 - const char **name, const char **version)
1.35 + const char **name,
1.36 + const char **version,
1.37 + const char **arch)
1.38 {
1.39 char *pool;
1.40 int valid;
1.41 @@ -838,6 +844,7 @@
1.42 *package = p;
1.43 *name = &pool[p->name];
1.44 *version = &pool[p->version];
1.45 + *arch = &pool[p->arch];
1.46 } else {
1.47 *package = NULL;
1.48 }
1.49 @@ -856,10 +863,10 @@
1.50 {
1.51 struct razor_package_iterator *pi;
1.52 struct razor_package *p;
1.53 - const char *name, *version;
1.54 + const char *name, *version, *arch;
1.55
1.56 pi = razor_package_iterator_create(set);
1.57 - while (razor_package_iterator_next(pi, &p, &name, &version)) {
1.58 + while (razor_package_iterator_next(pi, &p, &name, &version, &arch)) {
1.59 if (strcmp(package, name) == 0)
1.60 break;
1.61 }
1.62 @@ -1234,6 +1241,8 @@
1.63 p->flags = flags;
1.64 p->version = hashtable_tokenize(&merger->table,
1.65 &pool[package->version]);
1.66 + p->arch = hashtable_tokenize(&merger->table,
1.67 + &pool[package->arch]);
1.68
1.69 p->properties = package->properties;
1.70 r = list_first(&package->properties, &source->set->property_pool);
1.71 @@ -1681,14 +1690,14 @@
1.72 {
1.73 struct razor_package_iterator *pi1, *pi2;
1.74 struct razor_package *p1, *p2;
1.75 - const char *name1, *name2, *version1, *version2;
1.76 + const char *name1, *name2, *version1, *version2, *arch1, *arch2;
1.77 int res;
1.78
1.79 pi1 = razor_package_iterator_create(set);
1.80 pi2 = razor_package_iterator_create(upstream);
1.81
1.82 - razor_package_iterator_next(pi1, &p1, &name1, &version1);
1.83 - razor_package_iterator_next(pi2, &p2, &name2, &version2);
1.84 + razor_package_iterator_next(pi1, &p1, &name1, &version1, &arch1);
1.85 + razor_package_iterator_next(pi2, &p2, &name2, &version2, &arch2);
1.86
1.87 while (p1 || p2) {
1.88 if (p1 && p2) {
1.89 @@ -1700,16 +1709,16 @@
1.90 }
1.91
1.92 if (p2 == NULL || res < 0)
1.93 - callback(name1, version1, NULL, data);
1.94 + callback(name1, version1, NULL, arch1, data);
1.95 else if (p1 == NULL || res > 0)
1.96 - callback(name2, NULL, version2, data);
1.97 + callback(name2, NULL, version2, arch2, data);
1.98
1.99 if (p1 != NULL && res <= 0)
1.100 razor_package_iterator_next(pi1, &p1,
1.101 - &name1, &version1);
1.102 + &name1, &version1, &arch1);
1.103 if (p2 != NULL && res >= 0)
1.104 razor_package_iterator_next(pi2, &p2,
1.105 - &name2, &version2);
1.106 + &name2, &version2, &arch2);
1.107 }
1.108
1.109 razor_package_iterator_destroy(pi1);