summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarson Black <uhhadd@gmail.com>2020-03-24 20:59:50 -0400
committerRichard Hughes <richard@hughsie.com>2020-03-26 06:48:34 +0000
commitad56b4efc460cc5e6677b503893ba8a6c4f847ba (patch)
treef3b53335d66a2384dff725e82f1cd8a7c9014ddb
parenta76711fd450a326da97bd90e085734c20a852e00 (diff)
alpm: handle blank target name for progress cb
When the target name is blank, the callback is generally for the transaction in general and not for an unknown item. This handles all instances where libalpm currently emits a progress callback with a blank name.
-rw-r--r--backends/alpm/pk-alpm-transaction.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/backends/alpm/pk-alpm-transaction.c b/backends/alpm/pk-alpm-transaction.c
index 78e1d30c8..ff4c1ad8c 100644
--- a/backends/alpm/pk-alpm-transaction.c
+++ b/backends/alpm/pk-alpm-transaction.c
@@ -194,6 +194,34 @@ pk_alpm_transaction_progress_cb (alpm_progress_t type, const gchar *target,
g_assert (pkalpm_current_job);
job = pkalpm_current_job;
+ if (g_strcmp0(target, "") == 0) {
+ switch (type) {
+ case ALPM_PROGRESS_KEYRING_START:
+ pk_backend_job_set_status(job, PK_STATUS_ENUM_SIG_CHECK);
+ pk_backend_job_set_percentage(job, percent);
+ break;
+ case ALPM_PROGRESS_INTEGRITY_START:
+ pk_backend_job_set_status(job, PK_STATUS_ENUM_SIG_CHECK);
+ pk_backend_job_set_percentage(job, percent);
+ break;
+ case ALPM_PROGRESS_LOAD_START:
+ pk_backend_job_set_status(job, PK_STATUS_ENUM_LOADING_CACHE);
+ pk_backend_job_set_percentage(job, percent);
+ break;
+ case ALPM_PROGRESS_DISKSPACE_START:
+ pk_backend_job_set_status(job, PK_STATUS_ENUM_TEST_COMMIT);
+ pk_backend_job_set_percentage(job, percent);
+ break;
+ case ALPM_PROGRESS_CONFLICTS_START:
+ pk_backend_job_set_status(job, PK_STATUS_ENUM_TEST_COMMIT);
+ pk_backend_job_set_percentage(job, percent);
+ break;
+ default:
+ syslog (LOG_DAEMON | LOG_WARNING, "unhandled progress type for transaction %d", type);
+ break;
+ }
+ }
+
/* TODO: remove block if/when this is made consistent upstream */
if (type == ALPM_PROGRESS_CONFLICTS_START ||
type == ALPM_PROGRESS_DISKSPACE_START ||
@@ -220,11 +248,6 @@ pk_alpm_transaction_progress_cb (alpm_progress_t type, const gchar *target,
case ALPM_PROGRESS_DOWNGRADE_START:
case ALPM_PROGRESS_REINSTALL_START:
case ALPM_PROGRESS_REMOVE_START:
- case ALPM_PROGRESS_CONFLICTS_START:
- case ALPM_PROGRESS_DISKSPACE_START:
- case ALPM_PROGRESS_INTEGRITY_START:
- case ALPM_PROGRESS_LOAD_START:
- case ALPM_PROGRESS_KEYRING_START:
if (percent == recent)
break;