src/main.c
changeset 424 8cbc438cc298
parent 421 408c66ad463d
child 425 0c8bdd8dc942
     1.1 --- a/src/main.c	Sat Feb 11 09:34:40 2012 +0000
     1.2 +++ b/src/main.c	Thu Feb 16 17:33:47 2012 +0000
     1.3 @@ -55,9 +55,9 @@
     1.4  		struct razor_relocations *relocations,
     1.5  		enum razor_stage_type stage);
     1.6  static int
     1.7 -update_system(const char *install_root, struct razor_relocations *relocations,
     1.8 -	      struct razor_transaction *trans, struct razor_set *system,
     1.9 -	      struct razor_set *next, const char *verb);
    1.10 +update_system(struct razor_root *root, struct razor_relocations *relocations,
    1.11 +	      struct razor_transaction *trans, struct razor_set *next,
    1.12 +	      const char *verb);
    1.13  
    1.14  static struct razor_package_iterator *
    1.15  create_iterator_from_argv(struct razor_set *set, int argc, const char *argv[])
    1.16 @@ -120,7 +120,7 @@
    1.17  command_list(int argc, const char *argv[])
    1.18  {
    1.19  	struct razor_package_iterator *pi;
    1.20 -	struct razor_atomic *atomic;
    1.21 +	struct razor_error *error = NULL;
    1.22  	struct razor_set *set;
    1.23  	uint32_t flags = 0;
    1.24  	int i = 0;
    1.25 @@ -130,11 +130,10 @@
    1.26  		i++;
    1.27  	}
    1.28  
    1.29 -	atomic = razor_atomic_open("List installed packages");
    1.30 -	set = razor_root_open_read_only(install_root, atomic);
    1.31 +	set = razor_root_open_read_only(install_root, &error);
    1.32  	if (set == NULL) {
    1.33 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
    1.34 -		razor_atomic_destroy(atomic);
    1.35 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
    1.36 +		razor_error_free(error);
    1.37  		return 1;
    1.38  	}
    1.39  
    1.40 @@ -142,7 +141,6 @@
    1.41  	list_packages(pi, flags);
    1.42  	razor_package_iterator_destroy(pi);
    1.43  	razor_set_unref(set);
    1.44 -	razor_atomic_destroy(atomic);
    1.45  
    1.46  	return 0;
    1.47  }
    1.48 @@ -188,16 +186,15 @@
    1.49  list_properties(int argc, const char *argv[], uint32_t type)
    1.50  {
    1.51  	struct razor_set *set;
    1.52 -	struct razor_atomic *atomic;
    1.53 +	struct razor_error *error = NULL;
    1.54  	struct razor_package *package;
    1.55  	struct razor_package_iterator *pi;
    1.56  	const char *name, *version, *arch;
    1.57  
    1.58 -	atomic = razor_atomic_open("List package properties");
    1.59 -	set = razor_root_open_read_only(install_root, atomic);
    1.60 +	set = razor_root_open_read_only(install_root, &error);
    1.61  	if (set == NULL) {
    1.62 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
    1.63 -		razor_atomic_destroy(atomic);
    1.64 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
    1.65 +		razor_error_free(error);
    1.66  		return 1;
    1.67  	}
    1.68  
    1.69 @@ -210,7 +207,6 @@
    1.70  		list_package_properties(set, package, type);
    1.71  	razor_package_iterator_destroy(pi);
    1.72  	razor_set_unref(set);
    1.73 -	razor_atomic_destroy(atomic);
    1.74  
    1.75  	return 0;
    1.76  }
    1.77 @@ -243,16 +239,15 @@
    1.78  command_list_scripts(int argc, const char *argv[])
    1.79  {
    1.80  	struct razor_set *set;
    1.81 -	struct razor_atomic *atomic;
    1.82 +	struct razor_error *error = NULL;
    1.83  	struct razor_package *package;
    1.84  	struct razor_package_iterator *pi;
    1.85  	const char *preunprog, *preun, *postunprog, *postun;
    1.86  
    1.87 -	atomic = razor_atomic_open("List package scripts");
    1.88 -	set = razor_root_open_read_only(install_root, atomic);
    1.89 +	set = razor_root_open_read_only(install_root, &error);
    1.90  	if (set == NULL) {
    1.91 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
    1.92 -		razor_atomic_destroy(atomic);
    1.93 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
    1.94 +		razor_error_free(error);
    1.95  		return 1;
    1.96  	}
    1.97  
    1.98 @@ -278,7 +273,6 @@
    1.99  	}
   1.100  	razor_package_iterator_destroy(pi);
   1.101  	razor_set_unref(set);
   1.102 -	razor_atomic_destroy(atomic);
   1.103  
   1.104  	return 0;
   1.105  }
   1.106 @@ -286,20 +280,18 @@
   1.107  static int
   1.108  command_list_files(int argc, const char *argv[])
   1.109  {
   1.110 -	struct razor_atomic *atomic;
   1.111 +	struct razor_error *error = NULL;
   1.112  	struct razor_set *set;
   1.113  
   1.114 -	atomic = razor_atomic_open("List package files");
   1.115 -	set = razor_root_open_read_only(install_root, atomic);
   1.116 +	set = razor_root_open_read_only(install_root, &error);
   1.117  	if (set == NULL) {
   1.118 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.119 -		razor_atomic_destroy(atomic);
   1.120 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.121 +		razor_error_free(error);
   1.122  		return 1;
   1.123  	}
   1.124  
   1.125  	razor_set_list_files(set, argv[0]);
   1.126  	razor_set_unref(set);
   1.127 -	razor_atomic_destroy(atomic);
   1.128  
   1.129  	return 0;
   1.130  }
   1.131 @@ -307,15 +299,14 @@
   1.132  static int
   1.133  command_list_file_packages(int argc, const char *argv[])
   1.134  {
   1.135 -	struct razor_atomic *atomic;
   1.136 +	struct razor_error *error = NULL;
   1.137  	struct razor_set *set;
   1.138  	struct razor_package_iterator *pi;
   1.139  
   1.140 -	atomic = razor_atomic_open("List file packages");
   1.141 -	set = razor_root_open_read_only(install_root, atomic);
   1.142 +	set = razor_root_open_read_only(install_root, &error);
   1.143  	if (set == NULL) {
   1.144 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.145 -		razor_atomic_destroy(atomic);
   1.146 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.147 +		razor_error_free(error);
   1.148  		return 1;
   1.149  	}
   1.150  
   1.151 @@ -324,7 +315,6 @@
   1.152  	razor_package_iterator_destroy(pi);
   1.153  
   1.154  	razor_set_unref(set);
   1.155 -	razor_atomic_destroy(atomic);
   1.156  
   1.157  	return 0;
   1.158  }
   1.159 @@ -332,17 +322,16 @@
   1.160  static int
   1.161  command_list_package_files(int argc, const char *argv[])
   1.162  {
   1.163 -	struct razor_atomic *atomic;
   1.164 +	struct razor_error *error = NULL;
   1.165  	struct razor_set *set;
   1.166  	struct razor_package_iterator *pi;
   1.167  	struct razor_package *package;
   1.168  	const char *name, *version, *arch;
   1.169  
   1.170 -	atomic = razor_atomic_open("List package files");
   1.171 -	set = razor_root_open_read_only(install_root, atomic);
   1.172 +	set = razor_root_open_read_only(install_root, &error);
   1.173  	if (set == NULL) {
   1.174 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.175 -		razor_atomic_destroy(atomic);
   1.176 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.177 +		razor_error_free(error);
   1.178  		return 1;
   1.179  	}
   1.180  
   1.181 @@ -356,7 +345,6 @@
   1.182  	razor_package_iterator_destroy(pi);
   1.183  
   1.184  	razor_set_unref(set);
   1.185 -	razor_atomic_destroy(atomic);
   1.186  
   1.187  	return 0;
   1.188  }
   1.189 @@ -366,7 +354,7 @@
   1.190  		       const char *ref_version,
   1.191  		       uint32_t type)
   1.192  {
   1.193 -	struct razor_atomic *atomic;
   1.194 +	struct razor_error *error = NULL;
   1.195  	struct razor_set *set;
   1.196  	struct razor_property *property;
   1.197  	struct razor_property_iterator *prop_iter;
   1.198 @@ -377,11 +365,10 @@
   1.199  	if (ref_name == NULL)
   1.200  		return 0;
   1.201  
   1.202 -	atomic = razor_atomic_open("List package properties");
   1.203 -	set = razor_root_open_read_only(install_root, atomic);
   1.204 +	set = razor_root_open_read_only(install_root, &error);
   1.205  	if (set == NULL) {
   1.206 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.207 -		razor_atomic_destroy(atomic);
   1.208 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.209 +		razor_error_free(error);
   1.210  		return 1;
   1.211  	}
   1.212  
   1.213 @@ -406,7 +393,6 @@
   1.214  	razor_property_iterator_destroy(prop_iter);
   1.215  
   1.216  	razor_set_unref(set);
   1.217 -	razor_atomic_destroy(atomic);
   1.218  
   1.219  	return 0;
   1.220  }
   1.221 @@ -540,15 +526,14 @@
   1.222  {
   1.223  	struct razor_set *set;
   1.224  	struct razor_root *root;
   1.225 +	struct razor_error *error = NULL;
   1.226  	struct razor_atomic *atomic;
   1.227  	int retval;
   1.228  
   1.229 -	atomic = razor_atomic_open("Import RPM database");
   1.230 -
   1.231 -	root = razor_root_open(install_root, atomic);
   1.232 +	root = razor_root_open(install_root, &error);
   1.233  	if (root == NULL) {
   1.234 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.235 -		razor_atomic_destroy(atomic);
   1.236 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.237 +		razor_error_free(error);
   1.238  		return 1;
   1.239  	}
   1.240  
   1.241 @@ -556,14 +541,17 @@
   1.242  	if (set == NULL)
   1.243  		return 1;
   1.244  
   1.245 -	razor_root_update(root, set);
   1.246 +	atomic = razor_atomic_open("Import RPM database");
   1.247  
   1.248 -	retval = razor_root_commit(root);
   1.249 +	retval = razor_root_update(root, set, atomic);
   1.250 +
   1.251  	if (retval)
   1.252  		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.253  
   1.254  	razor_atomic_destroy(atomic);
   1.255  
   1.256 +	razor_root_close(root);
   1.257 +
   1.258  	return retval;
   1.259  }
   1.260  #endif
   1.261 @@ -619,20 +607,18 @@
   1.262  {
   1.263  	struct razor_set *system, *upstream, *next;
   1.264  	struct razor_transaction *trans;
   1.265 -	struct razor_atomic *atomic;
   1.266 +	struct razor_error *error = NULL;
   1.267 +	struct razor_root *root;
   1.268  	int i, retval;
   1.269  
   1.270 -	atomic = razor_atomic_open("Remove packages");
   1.271 -
   1.272 -	system = razor_root_open_read_only(install_root, atomic);
   1.273 -	if (system == NULL) {
   1.274 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.275 -		razor_atomic_destroy(atomic);
   1.276 +	root = razor_root_open(install_root, &error);
   1.277 +	if (root == NULL) {
   1.278 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.279 +		razor_error_free(error);
   1.280  		return 1;
   1.281  	}
   1.282  
   1.283 -	razor_atomic_destroy(atomic);
   1.284 -
   1.285 +	system = razor_root_get_system_set(root);
   1.286  	upstream = razor_set_create_without_root();
   1.287  	trans = razor_transaction_create(system, upstream);
   1.288  	razor_set_unref(upstream);
   1.289 @@ -640,7 +626,7 @@
   1.290  		if (mark_packages_for_removal(trans, system, argv[i]) == 0) {
   1.291  			fprintf(stderr, "no match for %s\n", argv[i]);
   1.292  			razor_transaction_destroy(trans);
   1.293 -			razor_set_unref(system);
   1.294 +			razor_root_close(root);
   1.295  			return 1;
   1.296  		}
   1.297  	}
   1.298 @@ -649,17 +635,16 @@
   1.299  	retval = razor_transaction_describe(trans);
   1.300  	if (retval) {
   1.301  		razor_transaction_destroy(trans);
   1.302 -		razor_set_unref(system);
   1.303 +		razor_root_close(root);
   1.304  		return 1;
   1.305  	}
   1.306  
   1.307  	next = razor_transaction_commit(trans);
   1.308  
   1.309 -	retval = update_system(install_root, NULL, trans, system, next,
   1.310 -			       "Remove");
   1.311 +	retval = update_system(root, NULL, trans, next, "Remove");
   1.312  
   1.313  	razor_transaction_destroy(trans);
   1.314 -	razor_set_unref(system);
   1.315 +	razor_root_close(root);
   1.316  	razor_set_unref(next);
   1.317  
   1.318  	return retval;
   1.319 @@ -682,15 +667,19 @@
   1.320  static int
   1.321  command_diff(int argc, const char *argv[])
   1.322  {
   1.323 -	struct razor_atomic *atomic;
   1.324 +	struct razor_error *error = NULL;
   1.325  	struct razor_set *set, *updated;
   1.326  
   1.327 -	atomic = razor_atomic_open("Show package differences");
   1.328 -	set = razor_root_open_read_only(install_root, atomic);
   1.329 -	updated = razor_set_open(rawhide_repo_filename, atomic);
   1.330 -	if (set == NULL || updated == NULL) {
   1.331 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.332 -		razor_atomic_destroy(atomic);
   1.333 +	set = razor_root_open_read_only(install_root, &error);
   1.334 +	if (set)
   1.335 +		updated = razor_set_open(rawhide_repo_filename, 0, &error);
   1.336 +	else
   1.337 +		updated = NULL;
   1.338 +	if (updated == NULL) {
   1.339 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.340 +		razor_error_free(error);
   1.341 +		if (set)
   1.342 +			razor_set_unref(set);
   1.343  		return 1;
   1.344  	}
   1.345  
   1.346 @@ -698,7 +687,6 @@
   1.347  
   1.348  	razor_set_unref(set);
   1.349  	razor_set_unref(updated);
   1.350 -	razor_atomic_destroy(atomic);
   1.351  
   1.352  	return 0;
   1.353  }
   1.354 @@ -997,12 +985,11 @@
   1.355  }
   1.356  
   1.357  static int
   1.358 -update_system(const char *install_root, struct razor_relocations *relocations,
   1.359 -	      struct razor_transaction *trans, struct razor_set *system,
   1.360 -	      struct razor_set *next, const char *verb)
   1.361 +update_system(struct razor_root *root, struct razor_relocations *relocations,
   1.362 +	      struct razor_transaction *trans, struct razor_set *next,
   1.363 +	      const char *verb)
   1.364  {
   1.365 -	struct razor_root *root;
   1.366 -	struct razor_set *set;
   1.367 +	struct razor_set *system, *set;
   1.368  	struct razor_atomic *atomic;
   1.369  	struct razor_install_iterator *ii;
   1.370  	int r, retval = 0;
   1.371 @@ -1011,6 +998,8 @@
   1.372  
   1.373  	description = razor_concat(verb, " packages", NULL);
   1.374  
   1.375 +	system = razor_set_ref(razor_root_get_system_set(root));
   1.376 +
   1.377  	ii = razor_set_create_install_iterator(system, next);
   1.378  
   1.379  	do {
   1.380 @@ -1018,20 +1007,10 @@
   1.381  
   1.382  		atomic = razor_atomic_open(description);
   1.383  
   1.384 -		root = razor_root_open(install_root, atomic);
   1.385 -		if (root == NULL) {
   1.386 -			fprintf(stderr, "%s\n",
   1.387 -				razor_atomic_get_error_msg(atomic));
   1.388 -			razor_atomic_destroy(atomic);
   1.389 -			retval = 1;
   1.390 -			break;
   1.391 -		}
   1.392 -
   1.393  		r = update_packages(trans, ii, system, next, atomic,
   1.394  				    relocations, RAZOR_STAGE_SCRIPTS_PRE);
   1.395  		if (r < 0) {
   1.396  			fprintf(stderr, "%s aborted\n", verb);
   1.397 -			razor_root_close(root);
   1.398  			retval = r;
   1.399  		} else {
   1.400  			razor_install_iterator_seek(ii, pos);
   1.401 @@ -1040,12 +1019,11 @@
   1.402  
   1.403  			if (r == 1) {
   1.404  				set = razor_install_iterator_commit_set(ii);
   1.405 -				razor_root_update(root, set);
   1.406 +				razor_root_update(root, set, atomic);
   1.407  				razor_set_unref(set);
   1.408  			} else if (r == 0)
   1.409 -				razor_root_update(root, next);
   1.410 +				razor_root_update(root, next, atomic);
   1.411  
   1.412 -			(void)razor_root_commit(root);
   1.413  			retval = razor_atomic_commit(atomic);
   1.414  			if (retval)
   1.415  				fprintf(stderr, "%s\n",
   1.416 @@ -1061,6 +1039,8 @@
   1.417  		razor_atomic_destroy(atomic);
   1.418  	} while(!retval && r == 1);
   1.419  
   1.420 +	razor_set_unref(system);
   1.421 +
   1.422  	free(description);
   1.423  
   1.424  	return retval;
   1.425 @@ -1069,10 +1049,12 @@
   1.426  static int
   1.427  command_install_or_update(int argc, const char *argv[], int do_update)
   1.428  {
   1.429 -	struct razor_relocations *relocations=NULL;
   1.430 +	struct razor_relocations *relocations = NULL;
   1.431  	struct razor_set *system, *upstream, *next, *set;
   1.432  	struct razor_transaction *trans;
   1.433 +	struct razor_error *error = NULL;
   1.434  	struct razor_atomic *atomic;
   1.435 +	struct razor_root *root;
   1.436  	int i, retval, len, dependencies = 1;
   1.437  	char *oldpath;
   1.438  
   1.439 @@ -1104,18 +1086,18 @@
   1.440  			break;
   1.441  	}
   1.442  
   1.443 +	upstream = razor_set_open(rawhide_repo_filename, 0, &error);
   1.444 +	if (upstream == NULL) {
   1.445 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.446 +		razor_error_free(error);
   1.447 +		return 1;
   1.448 +	}
   1.449 +
   1.450  	if (do_update)
   1.451  		atomic = razor_atomic_open("Update packages");
   1.452  	else
   1.453  		atomic = razor_atomic_open("Install packages");
   1.454  
   1.455 -	upstream = razor_set_open(rawhide_repo_filename, atomic);
   1.456 -	if (upstream == NULL) {
   1.457 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.458 -		razor_atomic_destroy(atomic);
   1.459 -		return 1;
   1.460 -	}
   1.461 -
   1.462  	if (relocations) {
   1.463  		set = relocate_packages(upstream, atomic, relocations);
   1.464  		if (set == NULL) {
   1.465 @@ -1129,8 +1111,18 @@
   1.466  		upstream = set;
   1.467  	}
   1.468  
   1.469 -	system = razor_root_open_read_only(install_root, atomic);
   1.470 +	root = razor_root_open(install_root, &error);
   1.471 +	if (root == NULL) {
   1.472 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.473 +		razor_error_free(error);
   1.474 +		razor_atomic_destroy(atomic);
   1.475 +		razor_set_unref(upstream);
   1.476 +		if (relocations)
   1.477 +			razor_relocations_destroy(relocations);
   1.478 +		return 1;
   1.479 +	}
   1.480  
   1.481 +	system = razor_root_get_system_set(root);
   1.482  	trans = razor_transaction_create(system, upstream);
   1.483  
   1.484  	if (i == argc && do_update)
   1.485 @@ -1142,9 +1134,11 @@
   1.486  		if (mark_packages_for_update(trans, upstream, argv[i]) == 0) {
   1.487  			fprintf(stderr, "no package matched %s\n", argv[i]);
   1.488  			razor_transaction_destroy(trans);
   1.489 +			razor_root_close(root);
   1.490  			razor_set_unref(upstream);
   1.491 -			razor_set_unref(system);
   1.492  			razor_atomic_destroy(atomic);
   1.493 +			if (relocations)
   1.494 +				razor_relocations_destroy(relocations);
   1.495  			return 1;
   1.496  		}
   1.497  	}
   1.498 @@ -1154,8 +1148,10 @@
   1.499  		if (razor_transaction_describe(trans) > 0) {
   1.500  			razor_transaction_destroy(trans);
   1.501  			razor_set_unref(upstream);
   1.502 -			razor_set_unref(system);
   1.503 +			razor_root_close(root);
   1.504  			razor_atomic_destroy(atomic);
   1.505 +			if (relocations)
   1.506 +				razor_relocations_destroy(relocations);
   1.507  			return 1;
   1.508  		}
   1.509  	}
   1.510 @@ -1166,8 +1162,10 @@
   1.511  		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.512  		razor_transaction_destroy(trans);
   1.513  		razor_set_unref(upstream);
   1.514 -		razor_set_unref(system);
   1.515 +		razor_root_close(root);
   1.516  		razor_atomic_destroy(atomic);
   1.517 +		if (relocations)
   1.518 +			razor_relocations_destroy(relocations);
   1.519  		return 1;
   1.520  	}
   1.521  
   1.522 @@ -1179,22 +1177,24 @@
   1.523  		razor_set_unref(next);
   1.524  		razor_transaction_destroy(trans);
   1.525  		razor_set_unref(upstream);
   1.526 -		razor_set_unref(system);
   1.527 +		razor_root_close(root);
   1.528  		razor_atomic_destroy(atomic);
   1.529 +		if (relocations)
   1.530 +			razor_relocations_destroy(relocations);
   1.531                  return 1;
   1.532          }
   1.533  
   1.534 -	retval = update_system(install_root, relocations, trans, system, next,
   1.535 +	retval = update_system(root, relocations, trans, next,
   1.536  			       do_update ? "Update" : "Install");
   1.537  
   1.538  	razor_set_unref(upstream);
   1.539 +	razor_root_close(root);
   1.540  
   1.541  	razor_transaction_destroy(trans);
   1.542  	if (relocations)
   1.543  		razor_relocations_destroy(relocations);
   1.544  
   1.545  	razor_set_unref(next);
   1.546 -	razor_set_unref(system);
   1.547  
   1.548  	return retval;
   1.549  }
   1.550 @@ -1220,6 +1220,7 @@
   1.551  static int
   1.552  command_download(int argc, const char *argv[])
   1.553  {
   1.554 +	struct razor_error *error = NULL;
   1.555  	struct razor_atomic *atomic;
   1.556  	struct razor_set *set;
   1.557  	struct razor_package_iterator *pi;
   1.558 @@ -1228,6 +1229,13 @@
   1.559  	char url[256], file[256];
   1.560  	int matches = 0;
   1.561  
   1.562 +	set = razor_set_open(rawhide_repo_filename, 0, &error);
   1.563 +	if (set == NULL) {
   1.564 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.565 +		razor_error_free(error);
   1.566 +		return 1;
   1.567 +	}
   1.568 +
   1.569  	atomic = razor_atomic_open("Download packages");
   1.570  
   1.571  	if (razor_atomic_create_dir(atomic, "rpms", 
   1.572 @@ -1237,8 +1245,6 @@
   1.573  		return 1;
   1.574  	}
   1.575  
   1.576 -	set = razor_set_open(rawhide_repo_filename, atomic);
   1.577 -
   1.578  	if (razor_atomic_commit(atomic)) {
   1.579  		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.580  		razor_atomic_destroy(atomic);
   1.581 @@ -1279,18 +1285,17 @@
   1.582  static int
   1.583  command_info(int argc, const char *argv[])
   1.584  {
   1.585 -	struct razor_atomic *atomic;
   1.586 +	struct razor_error *error = NULL;
   1.587  	struct razor_set *set;
   1.588  	struct razor_package_iterator *pi;
   1.589  	struct razor_package *package;
   1.590  	const char *pattern = argv[0], *name, *version, *arch;
   1.591  	const char *summary, *description, *url, *license;
   1.592  
   1.593 -	atomic = razor_atomic_open("Package info");
   1.594 -	set = razor_root_open_read_only(install_root, atomic);
   1.595 +	set = razor_root_open_read_only(install_root, &error);
   1.596  	if (set == NULL) {
   1.597 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.598 -		razor_atomic_destroy(atomic);
   1.599 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.600 +		razor_error_free(error);
   1.601  		return 1;
   1.602  	}
   1.603  
   1.604 @@ -1322,7 +1327,6 @@
   1.605  	}
   1.606  	razor_package_iterator_destroy(pi);
   1.607  	razor_set_unref(set);
   1.608 -	razor_atomic_destroy(atomic);
   1.609  
   1.610  	return 0;
   1.611  }
   1.612 @@ -1332,7 +1336,7 @@
   1.613  static int
   1.614  command_search(int argc, const char *argv[])
   1.615  {
   1.616 -	struct razor_atomic *atomic;
   1.617 +	struct razor_error *error = NULL;
   1.618  	struct razor_set *set;
   1.619  	struct razor_package_iterator *pi;
   1.620  	struct razor_package *package;
   1.621 @@ -1347,14 +1351,12 @@
   1.622  
   1.623  	snprintf(pattern, sizeof pattern, "*%s*", argv[0]);
   1.624  
   1.625 -	atomic = razor_atomic_open("Search packages");
   1.626 -	set = razor_set_open(rawhide_repo_filename, atomic);
   1.627 -	if (set == NULL || razor_atomic_commit(atomic)) {
   1.628 -		fprintf(stderr, "%s\n", razor_atomic_get_error_msg(atomic));
   1.629 -		razor_atomic_destroy(atomic);
   1.630 +	set = razor_set_open(rawhide_repo_filename, 0, &error);
   1.631 +	if (set == NULL) {
   1.632 +		fprintf(stderr, "%s\n", razor_error_get_msg(error));
   1.633 +		razor_error_free(error);
   1.634  		return 1;
   1.635  	}
   1.636 -	razor_atomic_destroy(atomic);
   1.637  
   1.638  	pi = razor_package_iterator_create(set);
   1.639  	while (razor_package_iterator_next(pi, &package,