From 5a1919e5206c589b8bf682a288a8954413647e69 Mon Sep 17 00:00:00 2001
From: Juan RP <xtraeme@gmail.com>
Date: Sat, 23 Aug 2014 15:54:24 +0200
Subject: [PATCH] xbps_pkg_is_installed(): a pkg in "unpacked" state is now
 accepted as installed too.

The reason is that even if the pkg was not configured, it should still be accepted
as installed. If installing packages via XBPS_TARGET_ARCH, pkgs are never configured,
so this must be taken into account.

Will be cherry-picked to 0.37 meanwhile.
---
 include/xbps.h.in | 3 ++-
 lib/util.c        | 6 +++---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/include/xbps.h.in b/include/xbps.h.in
index 5e7fb31..90d7ef4 100644
--- include/xbps.h.in
+++ include/xbps.h.in
@@ -1635,7 +1635,8 @@ int xbps_file_hash_check(const char *file, const char *sha256);
 bool xbps_verify_file_signature(struct xbps_repo *repo, const char *fname);
 
 /**
- * Checks if a package is currently installed by matching \a pkg.
+ * Checks if a package is currently installed in pkgdb by matching \a pkg.
+ * To be installed, the pkg must be in "installed" or "unpacked" state.
  *
  * @param[in] xhp The pointer to an xbps_handle struct.
  * @param[in] pkg Package name, version pattern or exact pkg to match.
diff --git a/lib/util.c b/lib/util.c
index d10bcee..a34b706 100644
--- lib/util.c
+++ lib/util.c
@@ -79,10 +79,10 @@ xbps_pkg_is_installed(struct xbps_handle *xhp, const char *pkg)
 	 */
 	if (xbps_pkg_state_dictionary(dict, &state) != 0)
 		return -1; /* error */
-	if (state != XBPS_PKG_STATE_INSTALLED)
-		return 0; /* not fully installed */
+	if (state == XBPS_PKG_STATE_INSTALLED || state == XBPS_PKG_STATE_UNPACKED)
+		return 1;
 
-	return 1;
+	return 0; /* not fully installed */
 }
 
 const char *
-- 
2.1.0

