Add error getter to PkgQueryInterface 11/151311/5
authorDamian Pietruchowski <d.pietruchow@samsung.com>
Wed, 20 Sep 2017 11:12:44 +0000 (13:12 +0200)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Tue, 14 Nov 2017 02:23:06 +0000 (02:23 +0000)
Required by: https://review.tizen.org/gerrit/#/c/151312/

Change-Id: I7bccdbaff658ac59f3c332352aab3b0bf6cc8357
Signed-off-by: Damian Pietruchowski <d.pietruchow@samsung.com>
src/common/pkgmgr_query.cc
src/common/pkgmgr_query.h

index e38637f..9501d41 100644 (file)
@@ -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<std::string>* 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<std::string>* 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,
index 920e8b4..19d4c7a 100644 (file)
@@ -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<std::string>* result);
 
  private:
+  int error_;
   std::string pkgid_;
   uid_t uid_;
   pkgmgrinfo_pkginfo_h handle_;