}
PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_ref(PakfireTransaction transaction) {
- if (!transaction)
- return NULL;
-
transaction->nrefs++;
+
return transaction;
}
void pakfire_transaction_free(PakfireTransaction transaction) {
DEBUG(transaction->pakfire, "Releasing Transaction at %p\n", transaction);
- pakfire_unref(transaction->pakfire);
// Release all steps
while (*transaction->steps)
pakfire_step_unref(*transaction->steps++);
transaction_free(transaction->transaction);
+
+ pakfire_unref(transaction->pakfire);
free(transaction);
}
PAKFIRE_EXPORT PakfireTransaction pakfire_transaction_unref(PakfireTransaction transaction) {
- if (!transaction)
- return NULL;
-
if (--transaction->nrefs > 0)
return transaction;
PAKFIRE_EXPORT ssize_t pakfire_transaction_downloadsize(PakfireTransaction transaction) {
ssize_t size = 0;
- PakfireStep* steps = transaction->steps;
- while (*steps) {
- PakfireStep step = *steps++;
-
- size += pakfire_step_get_downloadsize(step);
- }
+ for (PakfireStep* step = transaction->steps; *step; step++)
+ size += pakfire_step_get_downloadsize(*step);
return size;
}
PAKFIRE_EXPORT PakfireStep pakfire_transaction_get_step(PakfireTransaction transaction, unsigned int index) {
- PakfireStep* steps = transaction->steps;
-
- while (index-- && *steps)
- steps++;
-
- if (*steps)
- return pakfire_step_ref(*steps);
+ if (index >= transaction->num_steps)
+ return NULL;
- return NULL;
+ return pakfire_step_ref(transaction->steps[index]);
}
PAKFIRE_EXPORT PakfirePackageList pakfire_transaction_get_packages(PakfireTransaction transaction, pakfire_step_type_t type) {
PakfirePackageList packagelist = pakfire_packagelist_create(transaction->pakfire);
+ if (!packagelist)
+ return NULL;
- PakfireStep* steps = transaction->steps;
- while (*steps) {
- PakfireStep step = *steps++;
-
- if (pakfire_step_get_type(step) == type) {
- PakfirePackage package = pakfire_step_get_package(step);
+ for (PakfireStep* step = transaction->steps; *step; step++) {
+ if (pakfire_step_get_type(*step) == type) {
+ PakfirePackage package = pakfire_step_get_package(*step);
pakfire_packagelist_push(packagelist, package);
pakfire_package_unref(package);
(sizechange >= 0) ? _("Installed Size") : _("Freed Size"), sizechange);
// Remove trailing newline
- size_t l = strlen(string) - 1;
-
- if (l > 0 && string[l] == '\n')
- string[l] = '\0';
+ pakfire_remove_trailing_newline(string);
DEBUG(transaction->pakfire, "Transaction: %s\n", string);