src/main.c
changeset 316 5ebed314390c
parent 315 1c52b84bfc33
child 317 019a53b65271
     1.1 --- a/src/main.c	Tue Jul 08 21:59:36 2008 -0400
     1.2 +++ b/src/main.c	Tue Jul 08 22:02:58 2008 -0400
     1.3 @@ -684,19 +684,26 @@
     1.4  static int
     1.5  download_packages(struct razor_set *system, struct razor_set *next)
     1.6  {
     1.7 -	struct razor_package_iterator *pi;
     1.8 +	struct razor_install_iterator *ii;
     1.9  	struct razor_package *package;
    1.10 +	struct razor_set *set;
    1.11 +	enum razor_install_action action;
    1.12  	const char *name, *version, *arch;
    1.13  	char file[PATH_MAX], url[256];
    1.14 -	int errors;
    1.15 - 
    1.16 -	pi = razor_set_create_install_iterator(system, next);
    1.17 -	errors = 0;
    1.18 -	while (razor_package_iterator_next(pi, &package,
    1.19 -					   RAZOR_DETAIL_NAME, &name,
    1.20 -					   RAZOR_DETAIL_VERSION, &version,
    1.21 -					   RAZOR_DETAIL_ARCH, &arch,
    1.22 -					   RAZOR_DETAIL_LAST)) {
    1.23 +	int errors = 0, count;
    1.24 +
    1.25 +	ii = razor_set_create_install_iterator(system, next);
    1.26 +	while (razor_install_iterator_next(ii, &set, &package,
    1.27 +					   &action, &count)) {
    1.28 +		if (action == RAZOR_INSTALL_ACTION_REMOVE)
    1.29 +			continue;
    1.30 +
    1.31 +		razor_package_get_details(set, package,
    1.32 +					  RAZOR_DETAIL_NAME, &name,
    1.33 +					  RAZOR_DETAIL_VERSION, &version,
    1.34 +					  RAZOR_DETAIL_ARCH, &arch,
    1.35 +					  RAZOR_DETAIL_LAST);
    1.36 +		
    1.37  		snprintf(url, sizeof url,
    1.38  			 "%s/Packages/%s",
    1.39  			 yum_url, rpm_filename(name, version, arch));
    1.40 @@ -705,7 +712,7 @@
    1.41  		if (download_if_missing(url, file) < 0)
    1.42  			errors++;
    1.43  	}
    1.44 -	razor_package_iterator_destroy(pi);
    1.45 +	razor_install_iterator_destroy(ii);
    1.46  
    1.47  	if (errors > 0) {
    1.48  		fprintf(stderr, "failed to download %d packages\n", errors);
    1.49 @@ -718,18 +725,27 @@
    1.50  static int
    1.51  install_packages(struct razor_set *system, struct razor_set *next)
    1.52  {
    1.53 -	struct razor_package_iterator *pi;
    1.54 +	struct razor_install_iterator *ii;
    1.55  	struct razor_package *package;
    1.56 +	struct razor_set *set;
    1.57 +	enum razor_install_action action;
    1.58  	struct razor_rpm *rpm;
    1.59  	const char *name, *version, *arch;
    1.60  	char file[PATH_MAX];
    1.61 +	int count;
    1.62  
    1.63 -	pi = razor_set_create_install_iterator(system, next);
    1.64 -	while (razor_package_iterator_next(pi, &package,
    1.65 -					   RAZOR_DETAIL_NAME, &name,
    1.66 -					   RAZOR_DETAIL_VERSION, &version,
    1.67 -					   RAZOR_DETAIL_ARCH, &arch,
    1.68 -					   RAZOR_DETAIL_LAST)) {
    1.69 +	ii = razor_set_create_install_iterator(system, next);
    1.70 +	while (razor_install_iterator_next(ii, &set, &package,
    1.71 +					   &action, &count)) {
    1.72 +		if (action == RAZOR_INSTALL_ACTION_REMOVE)
    1.73 +			continue;
    1.74 +
    1.75 +		razor_package_get_details(set, package,
    1.76 +					  RAZOR_DETAIL_NAME, &name,
    1.77 +					  RAZOR_DETAIL_VERSION, &version,
    1.78 +					  RAZOR_DETAIL_ARCH, &arch,
    1.79 +					  RAZOR_DETAIL_LAST);
    1.80 +
    1.81  		printf("install %s-%s\n", name, version);
    1.82  
    1.83  		snprintf(file, sizeof file,
    1.84 @@ -746,7 +762,7 @@
    1.85  		}
    1.86  		razor_rpm_close(rpm);
    1.87  	}
    1.88 -	razor_package_iterator_destroy(pi);
    1.89 +	razor_install_iterator_destroy(ii);
    1.90  
    1.91  	return 0;
    1.92  }