From 57fef3fe65c00e0f102155f3fe182b3a61cddc9c Mon Sep 17 00:00:00 2001 From: Damian Pietruchowski Date: Wed, 20 Sep 2017 13:12:44 +0200 Subject: [PATCH] Add error getter to PkgQueryInterface Required by: https://review.tizen.org/gerrit/#/c/151312/ Change-Id: I7bccdbaff658ac59f3c332352aab3b0bf6cc8357 Signed-off-by: Damian Pietruchowski --- src/common/pkgmgr_query.cc | 60 +++++++++++++++++++++++++++------------------- src/common/pkgmgr_query.h | 2 ++ 2 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/common/pkgmgr_query.cc b/src/common/pkgmgr_query.cc index e38637f..9501d41 100644 --- a/src/common/pkgmgr_query.cc +++ b/src/common/pkgmgr_query.cc @@ -37,10 +37,10 @@ namespace common_installer { PkgQueryInterface::PkgQueryInterface(const std::string& pkgid, uid_t uid) : pkgid_(pkgid), uid_(uid), handle_(nullptr) { - int ret = pkgmgrinfo_pkginfo_get_usr_all_pkginfo(pkgid_.c_str(), uid_, + error_ = pkgmgrinfo_pkginfo_get_usr_all_pkginfo(pkgid_.c_str(), uid_, &handle_); - if (ret != PMINFO_R_OK) { - if (ret != PMINFO_R_ENOENT) { + if (error_ != PMINFO_R_OK) { + if (error_ != PMINFO_R_ENOENT) { LOG(ERROR) << "Failed to call pkgmgrinfo_pkginfo_get_usr_pkginfo"; handle_ = nullptr; } @@ -59,14 +59,18 @@ bool PkgQueryInterface::IsValid() { return handle_ != nullptr; } +int PkgQueryInterface::GetLastOperationError() { + return error_; +} + std::string PkgQueryInterface::TepPath() { if (!IsValid()) return {}; char* tep_name = nullptr; - int ret = pkgmgrinfo_pkginfo_get_tep_name(handle_, &tep_name); - if (ret != PMINFO_R_OK) { + error_ = pkgmgrinfo_pkginfo_get_tep_name(handle_, &tep_name); + if (error_ != PMINFO_R_OK) { LOG(DEBUG) << "pkgmgrinfo_pkginfo_get_tep_name failed with error: " - << ret; + << error_; return {}; } std::string tep_name_value; @@ -79,11 +83,11 @@ std::string PkgQueryInterface::ZipMountFile() { if (!IsValid()) return {}; char* zip_mount_file = nullptr; - int ret = pkgmgrinfo_pkginfo_get_zip_mount_file(handle_, + error_ = pkgmgrinfo_pkginfo_get_zip_mount_file(handle_, &zip_mount_file); - if (ret != PMINFO_R_OK) { + if (error_ != PMINFO_R_OK) { LOG(DEBUG) << "pkgmgrinfo_pkginfo_get_zip_mount_file failed with error: " - << ret; + << error_; return {}; } std::string zip_mount_file_value; @@ -99,10 +103,9 @@ std::string PkgQueryInterface::StorageForPkgId() { std::string installed_location = "installed_internal"; pkgmgrinfo_installed_storage storage; - bool ok = pkgmgrinfo_pkginfo_get_installed_storage(handle_, - &storage) == PMINFO_R_OK; + error_ = pkgmgrinfo_pkginfo_get_installed_storage(handle_, &storage); - if (!ok) + if (error_ != PMINFO_R_OK) return ""; if (storage == PMINFO_EXTERNAL_STORAGE) @@ -133,7 +136,8 @@ bool PkgQueryInterface::IsPackageInstalled(RequestMode mode) { if (!IsValid()) return false; bool is_global = false; - if (pkgmgrinfo_pkginfo_is_for_all_users(handle_, &is_global) != PMINFO_R_OK) { + error_ = pkgmgrinfo_pkginfo_is_for_all_users(handle_, &is_global); + if (error_ != PMINFO_R_OK) { LOG(ERROR) << "pkgmgrinfo_pkginfo_is_for_all_users failed"; return false; } @@ -150,7 +154,8 @@ bool PkgQueryInterface::IsGlobalPackage() { if (!IsValid()) return false; bool is_global = false; - if (pkgmgrinfo_pkginfo_is_for_all_users(handle_, &is_global) != PMINFO_R_OK) { + error_ = pkgmgrinfo_pkginfo_is_for_all_users(handle_, &is_global); + if (error_ != PMINFO_R_OK) { LOG(ERROR) << "pkgmgrinfo_pkginfo_is_for_all_users failed"; return false; } @@ -161,7 +166,8 @@ bool PkgQueryInterface::IsReadonlyPackage() { if (!IsValid()) return false; bool is_readonly = false; - if (pkgmgrinfo_pkginfo_is_readonly(handle_, &is_readonly) != PMINFO_R_OK) { + error_ = pkgmgrinfo_pkginfo_is_readonly(handle_, &is_readonly); + if (error_ != PMINFO_R_OK) { LOG(ERROR) << "pkgmgrinfo_pkginfo_is_readonly failed"; return false; } @@ -172,7 +178,8 @@ bool PkgQueryInterface::IsUpdatedPackage() { if (!IsValid()) return false; bool is_update = false; - if (pkgmgrinfo_pkginfo_is_update(handle_, &is_update) != PMINFO_R_OK) { + error_ = pkgmgrinfo_pkginfo_is_update(handle_, &is_update); + if (error_ != PMINFO_R_OK) { LOG(ERROR) << "pkgmgrinfo_pkginfo_is_update failed"; return false; } @@ -183,7 +190,8 @@ bool PkgQueryInterface::IsPreloadPackage() { if (!IsValid()) return false; bool is_preload = false; - if (pkgmgrinfo_pkginfo_is_preload(handle_, &is_preload) != PMINFO_R_OK) { + error_ = pkgmgrinfo_pkginfo_is_preload(handle_, &is_preload); + if (error_ != PMINFO_R_OK) { LOG(ERROR) << "pkgmgrinfo_pkginfo_is_preload failed"; return false; } @@ -194,7 +202,8 @@ bool PkgQueryInterface::IsSystemPackage() { if (!IsValid()) return false; bool is_system = false; - if (pkgmgrinfo_pkginfo_is_system(handle_, &is_system) != PMINFO_R_OK) { + error_ = pkgmgrinfo_pkginfo_is_system(handle_, &is_system); + if (error_ != PMINFO_R_OK) { LOG(ERROR) << "pkgmgrinfo_pkginfo_is_system failed"; return false; } @@ -205,7 +214,8 @@ bool PkgQueryInterface::IsRemovablePackage() { if (!IsValid()) return false; bool is_removable = false; - if (pkgmgrinfo_pkginfo_is_removable(handle_, &is_removable) != PMINFO_R_OK) { + error_ = pkgmgrinfo_pkginfo_is_removable(handle_, &is_removable); + if (error_ != PMINFO_R_OK) { LOG(ERROR) << "pkgmgrinfo_pkginfo_is_removable failed"; return false; } @@ -215,17 +225,17 @@ bool PkgQueryInterface::IsRemovablePackage() { bool PkgQueryInterface::AppidsForPkgId(std::vector* result) { if (!IsValid()) return false; - bool ret = pkgmgrinfo_appinfo_get_usr_list(handle_, PMINFO_ALL_APP, - &PkgmgrForeachAppCallback, result, uid_) == PMINFO_R_OK; - return ret; + error_ = pkgmgrinfo_appinfo_get_usr_list(handle_, PMINFO_ALL_APP, + &PkgmgrForeachAppCallback, result, uid_); + return error_ == PMINFO_R_OK; } bool PkgQueryInterface::PrivilegesForPkgId(std::vector* result) { if (!IsValid()) return false; - bool ret = pkgmgrinfo_pkginfo_foreach_privilege(handle_, - &PkgmgrForeachPrivilegeCallback, result) == PMINFO_R_OK; - return ret; + error_ = pkgmgrinfo_pkginfo_foreach_privilege(handle_, + &PkgmgrForeachPrivilegeCallback, result); + return error_ == PMINFO_R_OK; } std::string QueryCertificateAuthorCertificate(const std::string& pkgid, diff --git a/src/common/pkgmgr_query.h b/src/common/pkgmgr_query.h index 920e8b4..19d4c7a 100644 --- a/src/common/pkgmgr_query.h +++ b/src/common/pkgmgr_query.h @@ -26,6 +26,7 @@ class PkgQueryInterface { ~PkgQueryInterface(); bool IsValid(); + int GetLastOperationError(); /** * \brief Returns tizen extension package path for given package. @@ -124,6 +125,7 @@ class PkgQueryInterface { bool PrivilegesForPkgId(std::vector* result); private: + int error_; std::string pkgid_; uid_t uid_; pkgmgrinfo_pkginfo_h handle_; -- 2.7.4