Merger structs razor_transaction and razor_transaction_resolver.
Now that both are opaque and hidden in razor.c we can do this cleanup.
1.1 --- a/razor.c Sun Apr 06 19:24:07 2008 -0400
1.2 +++ b/razor.c Sun Apr 06 19:34:58 2008 -0400
1.3 @@ -1722,9 +1722,10 @@
1.4
1.5 struct razor_transaction {
1.6 int package_count, errors;
1.7 - struct razor_transaction_package *packages;
1.8 -
1.9 struct razor_set *system, *upstream;
1.10 +
1.11 + struct bitarray syspkgs, uppkgs;
1.12 + struct array packages;
1.13 };
1.14
1.15 struct razor_transaction_package {
1.16 @@ -1762,13 +1763,6 @@
1.17 const char *dep_version;
1.18 };
1.19
1.20 -struct razor_transaction_resolver {
1.21 - struct razor_set *system, *upstream;
1.22 - struct bitarray syspkgs, uppkgs;
1.23 - struct array packages;
1.24 - int errors;
1.25 -};
1.26 -
1.27 static int
1.28 package_in_set(void *package, struct razor_set *set)
1.29 {
1.30 @@ -1784,7 +1778,7 @@
1.31 }
1.32
1.33 static struct razor_package *
1.34 -property_provider_package(struct razor_transaction_resolver *trans,
1.35 +property_provider_package(struct razor_transaction *trans,
1.36 struct razor_property *prop,
1.37 int installed)
1.38 {
1.39 @@ -1835,7 +1829,7 @@
1.40
1.41 /* FIXME: merge this into the other property loop in razor_transaction_satisfy */
1.42 static void
1.43 -resolve_new_packages(struct razor_transaction_resolver *trans,
1.44 +resolve_new_packages(struct razor_transaction *trans,
1.45 int start, int end)
1.46 {
1.47 struct razor_property *sp, *up, *sp_end, *up_end;
1.48 @@ -1935,7 +1929,7 @@
1.49 }
1.50
1.51 static void
1.52 -find_all_packages(struct razor_transaction_resolver *trans)
1.53 +find_all_packages(struct razor_transaction *trans)
1.54 {
1.55 struct razor_transaction_package *tp;
1.56 struct razor_package *sp, *spkgs, *send, *up, *upkgs, *uend;
1.57 @@ -2041,7 +2035,7 @@
1.58 }
1.59
1.60 static struct razor_package *
1.61 -find_installed_package_for_file(struct razor_transaction_resolver *trans,
1.62 +find_installed_package_for_file(struct razor_transaction *trans,
1.63 const char *filename)
1.64 {
1.65 struct razor_package *pkg;
1.66 @@ -2055,7 +2049,7 @@
1.67 }
1.68
1.69 static struct razor_package *
1.70 -find_uninstalled_package_for_file(struct razor_transaction_resolver *trans,
1.71 +find_uninstalled_package_for_file(struct razor_transaction *trans,
1.72 const char *filename)
1.73 {
1.74 struct razor_package *pkg;
1.75 @@ -2069,7 +2063,7 @@
1.76 }
1.77
1.78 static struct razor_property *
1.79 -skip_to_matching_property(struct razor_transaction_resolver *trans,
1.80 +skip_to_matching_property(struct razor_transaction *trans,
1.81 struct razor_property *match,
1.82 struct razor_property *prop)
1.83 {
1.84 @@ -2100,7 +2094,7 @@
1.85 }
1.86
1.87 static struct razor_package *
1.88 -find_package_matching(struct razor_transaction_resolver *trans, int installed,
1.89 +find_package_matching(struct razor_transaction *trans, int installed,
1.90 struct razor_property *prop,
1.91 struct razor_property *req,
1.92 struct razor_set *req_set)
1.93 @@ -2187,7 +2181,7 @@
1.94 }
1.95
1.96 static struct razor_package *
1.97 -find_installed_package_for_property(struct razor_transaction_resolver *trans,
1.98 +find_installed_package_for_property(struct razor_transaction *trans,
1.99 struct razor_property *sys_start,
1.100 struct razor_property *up_start,
1.101 struct razor_property *req)
1.102 @@ -2201,7 +2195,7 @@
1.103 }
1.104
1.105 static struct razor_package *
1.106 -find_uninstalled_package_for_property(struct razor_transaction_resolver *trans,
1.107 +find_uninstalled_package_for_property(struct razor_transaction *trans,
1.108 struct razor_property *sys_start,
1.109 struct razor_property *up_start,
1.110 struct razor_property *req)
1.111 @@ -2215,8 +2209,7 @@
1.112 }
1.113
1.114 static struct razor_transaction_package *
1.115 -find_transaction_package(struct razor_transaction_resolver *trans,
1.116 - const char *name)
1.117 +find_transaction_package(struct razor_transaction *trans, const char *name)
1.118 {
1.119 struct razor_transaction_package *packages;
1.120 int count, i;
1.121 @@ -2232,7 +2225,7 @@
1.122
1.123 /* FIXME? */
1.124 static int
1.125 -prop_is_being_installed(struct razor_transaction_resolver *trans,
1.126 +prop_is_being_installed(struct razor_transaction *trans,
1.127 struct razor_property *prop)
1.128 {
1.129 struct list *pkg;
1.130 @@ -2245,7 +2238,7 @@
1.131 }
1.132
1.133 static int
1.134 -prop_is_being_removed(struct razor_transaction_resolver *trans,
1.135 +prop_is_being_removed(struct razor_transaction *trans,
1.136 struct razor_property *prop)
1.137 {
1.138 struct list *pkg;
1.139 @@ -2258,7 +2251,7 @@
1.140 }
1.141
1.142 static int
1.143 -prop_is_being_updated(struct razor_transaction_resolver *trans,
1.144 +prop_is_being_updated(struct razor_transaction *trans,
1.145 struct razor_property *prop)
1.146 {
1.147 struct razor_package *packages = trans->system->packages.data;
1.148 @@ -2277,7 +2270,7 @@
1.149 }
1.150
1.151 static void
1.152 -add_transaction_package(struct razor_transaction_resolver *trans,
1.153 +add_transaction_package(struct razor_transaction *trans,
1.154 struct razor_package *new_package,
1.155 struct razor_package *old_package,
1.156 enum razor_transaction_package_state state,
1.157 @@ -2403,7 +2396,7 @@
1.158 }
1.159
1.160 static void
1.161 -razor_transaction_satisfy(struct razor_transaction_resolver *trans)
1.162 +razor_transaction_satisfy(struct razor_transaction *trans)
1.163 {
1.164 struct razor_package *spkgs, *upkgs, *pkg;
1.165 struct razor_property *sp, *sprops, *sprop_end;
1.166 @@ -2592,55 +2585,52 @@
1.167 int update_count, const char **update_packages,
1.168 int remove_count, const char **remove_packages)
1.169 {
1.170 - struct razor_transaction_resolver trans;
1.171 - struct razor_transaction *ret_trans;
1.172 + struct razor_transaction *trans;
1.173 struct razor_transaction_package *tp;
1.174 int start, end, i;
1.175
1.176 - trans.system = system;
1.177 - trans.upstream = upstream ? upstream : razor_set_create();
1.178 - array_init(&trans.packages);
1.179 - bitarray_init(&trans.syspkgs, trans.system->packages.size / sizeof (struct razor_package), 1);
1.180 - bitarray_init(&trans.uppkgs, trans.upstream->packages.size / sizeof (struct razor_package), 0);
1.181 - trans.errors = 0;
1.182 + trans = zalloc(sizeof *trans);
1.183 +
1.184 + trans->system = system;
1.185 + trans->upstream = upstream ? upstream : razor_set_create();
1.186 + array_init(&trans->packages);
1.187 + bitarray_init(&trans->syspkgs, trans->system->packages.size / sizeof (struct razor_package), 1);
1.188 + bitarray_init(&trans->uppkgs, trans->upstream->packages.size / sizeof (struct razor_package), 0);
1.189 + trans->errors = 0;
1.190
1.191 if (update_count > 0 || remove_count > 0) {
1.192 for (i = 0; i < update_count; i++) {
1.193 - tp = array_add(&trans.packages, sizeof *tp);
1.194 + tp = array_add(&trans->packages, sizeof *tp);
1.195 memset(tp, 0, sizeof *tp);
1.196 tp->name = update_packages[i];
1.197 tp->state = RAZOR_PACKAGE_INSTALL;
1.198 }
1.199 for (i = 0; i < remove_count; i++) {
1.200 - tp = array_add(&trans.packages, sizeof *tp);
1.201 + tp = array_add(&trans->packages, sizeof *tp);
1.202 memset(tp, 0, sizeof *tp);
1.203 tp->name = remove_packages[i];
1.204 tp->state = RAZOR_PACKAGE_REMOVE;
1.205 }
1.206 } else
1.207 - find_all_packages(&trans);
1.208 + find_all_packages(trans);
1.209
1.210 start = 0;
1.211 - end = trans.packages.size / sizeof (struct razor_transaction_package);
1.212 + end = trans->packages.size / sizeof (struct razor_transaction_package);
1.213
1.214 while (start != end) {
1.215 - resolve_new_packages(&trans, start, end);
1.216 - if (trans.errors)
1.217 + resolve_new_packages(trans, start, end);
1.218 + if (trans->errors)
1.219 break;
1.220
1.221 - razor_transaction_satisfy(&trans);
1.222 + razor_transaction_satisfy(trans);
1.223
1.224 start = end;
1.225 - end = trans.packages.size / sizeof (struct razor_transaction_package);
1.226 + end = trans->packages.size / sizeof (struct razor_transaction_package);
1.227 }
1.228
1.229 - ret_trans = zalloc(sizeof *ret_trans);
1.230 - ret_trans->system = trans.system;
1.231 - ret_trans->upstream = trans.upstream;
1.232 - ret_trans->packages = trans.packages.data;
1.233 - ret_trans->package_count = end;
1.234 - ret_trans->errors = trans.errors;
1.235 - return ret_trans;
1.236 + trans->package_count = end;
1.237 +
1.238 + return trans;
1.239 }
1.240
1.241 const char * const razor_version_relations[] = {
1.242 @@ -2688,9 +2678,9 @@
1.243 struct razor_transaction_package *p, *pend, *tps;
1.244 int errors_only = 0;
1.245
1.246 - tps = trans->packages;
1.247 - pend = trans->packages + trans->package_count;
1.248 - for (p = trans->packages; p < pend; p++) {
1.249 + tps = trans->packages.data;
1.250 + pend = trans->packages.data + trans->packages.size;
1.251 + for (p = trans->packages.data; p < pend; p++) {
1.252 switch (p->state) {
1.253 case RAZOR_PACKAGE_INSTALL:
1.254 if (errors_only)
1.255 @@ -2826,8 +2816,8 @@
1.256 {
1.257 struct razor_transaction_package *p, *end;
1.258
1.259 - end = trans->packages + trans->package_count;
1.260 - for (p = trans->packages; p < end; p++) {
1.261 + end = trans->packages.data + trans->packages.size;
1.262 + for (p = trans->packages.data; p < end; p++) {
1.263 if (p->state != RAZOR_PACKAGE_UNSATISFIABLE)
1.264 continue;
1.265 if (strcmp(name, p->dep_property) != 0 ||
1.266 @@ -2850,7 +2840,8 @@
1.267 struct source *source1, *source2;
1.268 char *spool, *ipool, *rpool;
1.269 uint32_t *map;
1.270 - int p, cmp;
1.271 + struct razor_transaction_package *p, *end;
1.272 + int cmp;
1.273
1.274 /* FIXME */
1.275 if (trans->errors)
1.276 @@ -2859,13 +2850,15 @@
1.277 /* Sort the transaction packages into two arrays */
1.278 array_init(&install_packages);
1.279 array_init(&remove_packages);
1.280 - for (p = 0; p < trans->package_count; p++) {
1.281 - if (trans->packages[p].new_package) {
1.282 +
1.283 + end = trans->packages.data + trans->packages.size;
1.284 + for (p = trans->packages.data; p < end; p++) {
1.285 + if (p->new_package) {
1.286 pkg = array_add(&install_packages, sizeof *pkg);
1.287 - *pkg = *trans->packages[p].new_package;
1.288 + *pkg = *p->new_package;
1.289 } else {
1.290 pkg = array_add(&remove_packages, sizeof *pkg);
1.291 - *pkg = *trans->packages[p].old_package;
1.292 + *pkg = *p->old_package;
1.293 }
1.294 }
1.295 map = razor_qsort_with_data(install_packages.data,
1.296 @@ -2935,13 +2928,14 @@
1.297 void
1.298 razor_transaction_destroy(struct razor_transaction *trans)
1.299 {
1.300 - int p;
1.301 -
1.302 - for (p = 0; p < trans->package_count; p++) {
1.303 - if (!trans->packages[p].dep_package &&
1.304 - (trans->packages[p].state == RAZOR_PACKAGE_INSTALL_UNAVAILABLE ||
1.305 - trans->packages[p].state == RAZOR_PACKAGE_REMOVE_NOT_INSTALLED))
1.306 - free((char *)trans->packages[p].name);
1.307 + struct razor_transaction_package *p, *end;
1.308 +
1.309 + end = trans->packages.data + trans->packages.size;
1.310 + for (p = trans->packages.data; p < end; p++) {
1.311 + if (!p->dep_package &&
1.312 + (p->state == RAZOR_PACKAGE_INSTALL_UNAVAILABLE ||
1.313 + p->state == RAZOR_PACKAGE_REMOVE_NOT_INSTALLED))
1.314 + free((char *)p->name);
1.315 }
1.316 free(trans);
1.317