// Progress
struct pakfire_progress* progress;
- // Callbacks
- struct pakfire_transaction_callbacks {
- // Status
- pakfire_status_callback status;
- void* status_data;
- } callbacks;
-
// Changes for file conflicts
struct pakfire_packagelist* installed_packages;
struct pakfire_packagelist* new_packages;
return r;
}
-static void pakfire_transaction_default_status_callback(
- struct pakfire* pakfire, void* data, int progress, const char* status) {
- // XXX perform some default action...
-}
-
static int pakfire_transaction_setup_solver(struct pakfire_transaction* transaction) {
Pool* pool = pakfire_get_solv_pool(transaction->pakfire);
if (r < 0)
goto ERROR;
- // Set the default status callback
- t->callbacks.status = pakfire_transaction_default_status_callback;
-
// Setup the solver
r = pakfire_transaction_setup_solver(t);
if (r)
return NULL;
}
-static void pakfire_transaction_status(struct pakfire_transaction* transaction,
- const char* message, ...) __attribute__((format(printf, 2, 3)));
-
-/*
- Move this into the progress stuff
-*/
-static void pakfire_transaction_status(struct pakfire_transaction* transaction,
- const char* message, ...) {
- char* buffer = NULL;
- va_list args;
- int r;
-
- // Do nothing if callback isn't set
- if (!transaction->callbacks.status)
- return;
-
- // Format the message
- if (message) {
- va_start(args, message);
- r = vasprintf(&buffer, message, args);
- va_end(args);
-
- if (r < 0)
- return;
- }
-
- // Fetch progress
- const int progress = pakfire_progress_get_percentage(transaction->progress);
-
- // Call the callback
- transaction->callbacks.status(transaction->pakfire,
- transaction->callbacks.status_data, progress, buffer);
-
- // Cleanup
- if (buffer)
- free(buffer);
-}
-
struct pakfire_problem** pakfire_transaction_get_problems(
struct pakfire_transaction* transaction) {
struct pakfire_problem** problems = NULL;
struct pakfire_filelist* filelist = NULL;
int r;
+ // Fetch NEVRA
const char* nevra = pakfire_package_get_string(pkg, PAKFIRE_PKG_NEVRA);
// Update status
- pakfire_transaction_status(transaction, _("Installing %s..."), nevra);
+ r = pakfire_progress_set_status(transaction->progress, _("Installing %s..."), nevra);
+ if (r < 0)
+ return r;
// Extract payload
r = pakfire_archive_extract(archive, NULL, 0, transaction->progress);
struct pakfire_filelist* filelist = NULL;
int r;
+ // Fetch NEVRA
+ const char* nevra = pakfire_package_get_string(pkg, PAKFIRE_PKG_NEVRA);
+
+ // Update status
+ r = pakfire_progress_set_status(transaction->progress, _("Removing %s..."), nevra);
+ if (r < 0)
+ goto ERROR;
+
// Fetch filelist
r = pakfire_db_package_filelist(db, &filelist, pkg);
if (r)
// Increment progress
pakfire_progress_increment(transaction->progress, 1);
- // Update progress callback
- pakfire_transaction_status(transaction, NULL);
-
switch (type) {
case PAKFIRE_STEP_INSTALL:
case PAKFIRE_STEP_REINSTALL:
// Update status
switch (action) {
case PAKFIRE_ACTION_VERIFY:
- pakfire_transaction_status(transaction, _("Verifying packages..."));
+ r = pakfire_progress_set_status(transaction->progress, _("Verifying Packages..."));
+ if (r < 0)
+ return r;
break;
case PAKFIRE_ACTION_PRETRANS:
- pakfire_transaction_status(transaction, _("Preparing installation..."));
+ r = pakfire_progress_set_status(transaction->progress, _("Preparing Installation..."));
+ if (r < 0)
+ return r;
break;
case PAKFIRE_ACTION_POSTTRANS:
- pakfire_transaction_status(transaction, _("Finishing up..."));
+ r = pakfire_progress_set_status(transaction->progress, _("Finishing Up..."));
+ if (r < 0)
+ return r;
break;
default: