summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Nicoletti <dantti12@gmail.com>2012-04-18 11:50:05 -0300
committerDaniel Nicoletti <dantti12@gmail.com>2012-04-18 11:50:05 -0300
commit21aef7cf7f39e5ca47c95e323732acd105b37446 (patch)
tree7523900bb2735c0ff2a4a27dc674226c30550525
parent9f893b55bc932a9be22dd194be33b3f657135108 (diff)
packagekit: Add PK_ERROR_ENUM_UNFINISHED_TRANSACTION and PK_EXIT_ENUM_REPAIR_REQUIRED so that UI can know when to repair the system
-rw-r--r--lib/packagekit-glib2/pk-enum.c2
-rw-r--r--lib/packagekit-glib2/pk-enum.h2
-rw-r--r--lib/packagekit-qt2/transaction.h6
-rw-r--r--src/pk-backend.c5
4 files changed, 13 insertions, 2 deletions
diff --git a/lib/packagekit-glib2/pk-enum.c b/lib/packagekit-glib2/pk-enum.c
index 903ca9e5c..e84b54ff6 100644
--- a/lib/packagekit-glib2/pk-enum.c
+++ b/lib/packagekit-glib2/pk-enum.c
@@ -47,6 +47,7 @@ static const PkEnumMatch enum_exit[] = {
{PK_EXIT_ENUM_NEED_UNTRUSTED, "need-untrusted"},
{PK_EXIT_ENUM_CANCELLED_PRIORITY, "cancelled-priority"},
{PK_EXIT_ENUM_SKIP_TRANSACTION, "skip-transaction"},
+ {PK_EXIT_ENUM_REPAIR_REQUIRED, "repair-required"},
{0, NULL}
};
@@ -200,6 +201,7 @@ static const PkEnumMatch enum_error[] = {
{PK_ERROR_ENUM_INSTALL_ROOT_INVALID, "install-root-invalid"},
{PK_ERROR_ENUM_CANNOT_FETCH_SOURCES, "cannot-fetch-sources"},
{PK_ERROR_ENUM_CANCELLED_PRIORITY, "cancelled-priority"},
+ {PK_ERROR_ENUM_UNFINISHED_TRANSACTION, "unfinished-transaction"},
{0, NULL}
};
diff --git a/lib/packagekit-glib2/pk-enum.h b/lib/packagekit-glib2/pk-enum.h
index 7c96d8a6d..92c91e46e 100644
--- a/lib/packagekit-glib2/pk-enum.h
+++ b/lib/packagekit-glib2/pk-enum.h
@@ -168,6 +168,7 @@ typedef enum {
PK_EXIT_ENUM_NEED_UNTRUSTED,
PK_EXIT_ENUM_CANCELLED_PRIORITY,
PK_EXIT_ENUM_SKIP_TRANSACTION,
+ PK_EXIT_ENUM_REPAIR_REQUIRED,
PK_EXIT_ENUM_LAST
} PkExitEnum;
@@ -333,6 +334,7 @@ typedef enum {
PK_ERROR_ENUM_INSTALL_ROOT_INVALID,
PK_ERROR_ENUM_CANNOT_FETCH_SOURCES,
PK_ERROR_ENUM_CANCELLED_PRIORITY,
+ PK_ERROR_ENUM_UNFINISHED_TRANSACTION,
PK_ERROR_ENUM_LAST
} PkErrorEnum;
diff --git a/lib/packagekit-qt2/transaction.h b/lib/packagekit-qt2/transaction.h
index 2d0ffb408..969201256 100644
--- a/lib/packagekit-qt2/transaction.h
+++ b/lib/packagekit-qt2/transaction.h
@@ -194,7 +194,8 @@ public:
ErrorProvideTypeNotSupported,
ErrorInstallRootInvalid,
ErrorCannotFetchSources,
- ErrorCancelledPriority
+ ErrorCancelledPriority,
+ ErrorUnfinishedTransaction
} Error;
/**
@@ -211,7 +212,8 @@ public:
ExitKilled, /* when we forced the cancel, but had to sigkill */
ExitMediaChangeRequired,
ExitNeedUntrusted,
- ExitCancelledPriority
+ ExitCancelledPriority,
+ ExitRepairRequired
} Exit;
/**
diff --git a/src/pk-backend.c b/src/pk-backend.c
index bacd07bb4..652497a56 100644
--- a/src/pk-backend.c
+++ b/src/pk-backend.c
@@ -2195,6 +2195,11 @@ pk_backend_error_code (PkBackend *backend, PkErrorEnum error_code, const gchar *
else
pk_backend_set_exit_code (backend, PK_EXIT_ENUM_FAILED);
+ /* set the hint that RepairSystem is needed */
+ if (error_code == PK_ERROR_ENUM_UNFINISHED_TRANSACTION) {
+ pk_backend_set_exit_code (backend, PK_EXIT_ENUM_REPAIR_REQUIRED);
+ }
+
/* form PkError struct */
item = pk_error_new ();
g_object_set (item,