From: Michael Tremer Date: Sun, 14 Jan 2018 16:48:55 +0000 (+0100) Subject: libpakfire: Use step type logic from Step objects X-Git-Tag: 0.9.28~1285^2~1212 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c104384397151ba3a56f4c58a9018f34490b29f9;p=pakfire.git libpakfire: Use step type logic from Step objects Signed-off-by: Michael Tremer --- diff --git a/src/libpakfire/include/pakfire/step.h b/src/libpakfire/include/pakfire/step.h index 6e7611e03..70f43a7ff 100644 --- a/src/libpakfire/include/pakfire/step.h +++ b/src/libpakfire/include/pakfire/step.h @@ -23,19 +23,8 @@ #include -#include #include -typedef enum _pakfire_step_types { - PAKFIRE_STEP_IGNORE = 0, - PAKFIRE_STEP_INSTALL, - PAKFIRE_STEP_REINSTALL, - PAKFIRE_STEP_ERASE, - PAKFIRE_STEP_UPGRADE, - PAKFIRE_STEP_DOWNGRADE, - PAKFIRE_STEP_OBSOLETE, -} pakfire_step_type_t; - PakfireStep pakfire_step_create(PakfireTransaction transaction, Id id); void pakfire_step_free(PakfireStep step); diff --git a/src/libpakfire/include/pakfire/transaction.h b/src/libpakfire/include/pakfire/transaction.h index 952cd40ff..25e3be6fd 100644 --- a/src/libpakfire/include/pakfire/transaction.h +++ b/src/libpakfire/include/pakfire/transaction.h @@ -35,7 +35,7 @@ size_t pakfire_transaction_count(PakfireTransaction transaction); ssize_t pakfire_transaction_installsizechange(PakfireTransaction transaction); PakfireStep pakfire_transaction_get_step(PakfireTransaction transaction, int index); -PakfirePackageList pakfire_transaction_get_packages(PakfireTransaction transaction, int type); +PakfirePackageList pakfire_transaction_get_packages(PakfireTransaction transaction, pakfire_step_type_t type); char* pakfire_transaction_dump(PakfireTransaction transaction, size_t width); @@ -43,14 +43,6 @@ int pakfire_transaction_run(PakfireTransaction transaction); #ifdef PAKFIRE_PRIVATE -typedef enum _pakfire_action_types { - PAKFIRE_ACTION_NOOP = 0, - PAKFIRE_ACTION_VERIFY = 1 << 0, - PAKFIRE_ACTION_EXECUTE = 1 << 1, - PAKFIRE_ACTION_PRETRANS = 1 << 2, - PAKFIRE_ACTION_POSTTRANS = 1 << 3, -} pakfire_action_type; - Transaction* pakfire_transaction_get_transaction(PakfireTransaction transaction); #endif diff --git a/src/libpakfire/include/pakfire/types.h b/src/libpakfire/include/pakfire/types.h index ca6f47a59..b5d6f17dd 100644 --- a/src/libpakfire/include/pakfire/types.h +++ b/src/libpakfire/include/pakfire/types.h @@ -66,6 +66,24 @@ enum _pakfire_comparison_types { PAKFIRE_GLOB = 1 << 12, }; +typedef enum _pakfire_action_types { + PAKFIRE_ACTION_NOOP = 0, + PAKFIRE_ACTION_VERIFY = 1 << 0, + PAKFIRE_ACTION_EXECUTE = 1 << 1, + PAKFIRE_ACTION_PRETRANS = 1 << 2, + PAKFIRE_ACTION_POSTTRANS = 1 << 3, +} pakfire_action_type; + +typedef enum _pakfire_step_types { + PAKFIRE_STEP_IGNORE = 0, + PAKFIRE_STEP_INSTALL, + PAKFIRE_STEP_REINSTALL, + PAKFIRE_STEP_ERASE, + PAKFIRE_STEP_UPGRADE, + PAKFIRE_STEP_DOWNGRADE, + PAKFIRE_STEP_OBSOLETE, +} pakfire_step_type_t; + #define PAKFIRE_SOLVABLE_FILEMARKER "solvable:filemarker" #endif /* PAKFIRE_TYPES_H */ diff --git a/src/libpakfire/transaction.c b/src/libpakfire/transaction.c index 3ab9d0b1f..640cd20b3 100644 --- a/src/libpakfire/transaction.c +++ b/src/libpakfire/transaction.c @@ -107,25 +107,12 @@ PAKFIRE_EXPORT ssize_t pakfire_transaction_installsizechange(PakfireTransaction PAKFIRE_EXPORT ssize_t pakfire_transaction_downloadsize(PakfireTransaction transaction) { ssize_t size = 0; - for (int i = 0; i < transaction->transaction->steps.count; i++) { - Id p = transaction->transaction->steps.elements[i]; - Id t = transaction_type(transaction->transaction, p, - SOLVER_TRANSACTION_SHOW_OBSOLETES | - SOLVER_TRANSACTION_CHANGE_IS_REINSTALL | - SOLVER_TRANSACTION_SHOW_ALL | - SOLVER_TRANSACTION_SHOW_ACTIVE); - - // Erasing a package does not require us to download it - if (t == SOLVER_TRANSACTION_ERASE) - continue; - - // Get the package for this step - PakfirePackage pkg = pakfire_package_create(transaction->pool, p); - - if (!pakfire_package_is_cached(pkg)) - size += pakfire_package_get_downloadsize(pkg); + size_t steps = pakfire_transaction_count(transaction); + for (unsigned int i = 0; i < steps; i++) { + PakfireStep step = pakfire_transaction_get_step(transaction, i); + size += pakfire_step_get_downloadsize(step); - pakfire_package_free(pkg); + pakfire_step_free(step); } return size; @@ -140,21 +127,21 @@ PAKFIRE_EXPORT PakfireStep pakfire_transaction_get_step(PakfireTransaction trans return pakfire_step_create(transaction, trans->steps.elements[index]); } -PAKFIRE_EXPORT PakfirePackageList pakfire_transaction_get_packages(PakfireTransaction transaction, int type) { +PAKFIRE_EXPORT PakfirePackageList pakfire_transaction_get_packages(PakfireTransaction transaction, pakfire_step_type_t type) { PakfirePackageList packagelist = pakfire_packagelist_create(); - for (int i = 0; i < transaction->transaction->steps.count; i++) { - Id p = transaction->transaction->steps.elements[i]; - Id t = transaction_type(transaction->transaction, p, - SOLVER_TRANSACTION_SHOW_OBSOLETES | - SOLVER_TRANSACTION_CHANGE_IS_REINSTALL | - SOLVER_TRANSACTION_SHOW_ALL | - SOLVER_TRANSACTION_SHOW_ACTIVE); + size_t steps = pakfire_transaction_count(transaction); + for (unsigned int i = 0; i < steps; i++) { + PakfireStep step = pakfire_transaction_get_step(transaction, i); - if (t == type) { - PakfirePackage package = pakfire_package_create(transaction->pool, p); + if (pakfire_step_get_type(step) == type) { + PakfirePackage package = pakfire_step_get_package(step); pakfire_packagelist_push(packagelist, package); + + pakfire_package_free(package); } + + pakfire_step_free(step); } // Sort list in place