diff --git a/srcpkgs/xbps/patches/0001-Explicitly-set-errno-to-ENOENT-when-a-pkg-hasn-t-bee.patch b/srcpkgs/xbps/patches/0001-Explicitly-set-errno-to-ENOENT-when-a-pkg-hasn-t-bee.patch new file mode 100644 index 00000000000..159e11adc20 --- /dev/null +++ b/srcpkgs/xbps/patches/0001-Explicitly-set-errno-to-ENOENT-when-a-pkg-hasn-t-bee.patch @@ -0,0 +1,68 @@ +From a3f2898ea64930cc9eb3765a6efebe900c9ceafc Mon Sep 17 00:00:00 2001 +From: Juan RP +Date: Sat, 17 May 2014 12:36:02 +0200 +Subject: [PATCH] Explicitly set errno to ENOENT when a pkg hasn't been found + in array/dictionaries. + +--- + lib/plist_find.c | 14 +++++++++++--- + lib/repo_pkgdeps.c | 2 +- + 2 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/lib/plist_find.c b/lib/plist_find.c +index ddc0183..8890888 100644 +--- lib/plist_find.c ++++ lib/plist_find.c +@@ -90,7 +90,11 @@ get_pkg_in_array(xbps_array_t array, const char *str, bool virtual) + } + xbps_object_iterator_release(iter); + +- return found ? obj : NULL; ++ if (!found) { ++ errno = ENOENT; ++ return NULL; ++ } ++ return obj; + } + + xbps_dictionary_t HIDDEN +@@ -140,8 +144,10 @@ match_pkg_by_pkgver(xbps_dictionary_t repod, const char *p) + d = xbps_dictionary_get(repod, pkgname); + if (d) { + xbps_dictionary_get_cstring_nocopy(d, "pkgver", &pkgver); +- if (strcmp(pkgver, p)) ++ if (strcmp(pkgver, p)) { + d = NULL; ++ errno = ENOENT; ++ } + } + + free(pkgname); +@@ -168,8 +174,10 @@ match_pkg_by_pattern(xbps_dictionary_t repod, const char *p) + if (d) { + xbps_dictionary_get_cstring_nocopy(d, "pkgver", &pkgver); + assert(pkgver); +- if (!xbps_pkgpattern_match(pkgver, p)) ++ if (!xbps_pkgpattern_match(pkgver, p)) { + d = NULL; ++ errno = ENOENT; ++ } + } + + free(pkgname); +diff --git a/lib/repo_pkgdeps.c b/lib/repo_pkgdeps.c +index fa1cb38..d1b3c36 100644 +--- lib/repo_pkgdeps.c ++++ lib/repo_pkgdeps.c +@@ -224,7 +224,7 @@ find_repo_deps(struct xbps_handle *xhp, + if (errno && errno != ENOENT) { + /* error */ + rv = errno; +- xbps_dbg_printf(xhp, "failed to find installed pkg for `%s': %s\n", reqpkg, strerror(errno)); ++ xbps_dbg_printf(xhp, "failed to find installed pkg for `%s': %s\n", reqpkg, strerror(rv)); + free(pkgname); + break; + } +-- +1.9.2 + diff --git a/srcpkgs/xbps/template b/srcpkgs/xbps/template index 026a3037c67..eb962e1f950 100644 --- a/srcpkgs/xbps/template +++ b/srcpkgs/xbps/template @@ -1,7 +1,7 @@ # Template file for 'xbps' pkgname=xbps version=0.36 -revision=2 +revision=3 bootstrap=yes short_desc="The XBPS package system utilities" maintainer="Juan RP "