xbps-query: fallback to repos on ENOENT for show modes.
This commit is contained in:
		@@ -27,6 +27,7 @@
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <getopt.h>
 | 
			
		||||
#include <errno.h>
 | 
			
		||||
 | 
			
		||||
#include <xbps_api.h>
 | 
			
		||||
#include "defs.h"
 | 
			
		||||
@@ -220,23 +221,33 @@ main(int argc, char **argv)
 | 
			
		||||
		/* show mode */
 | 
			
		||||
		if (repo_mode)
 | 
			
		||||
			rv = repo_show_pkg_info(&xh, argv[optind], props);
 | 
			
		||||
		else
 | 
			
		||||
		else {
 | 
			
		||||
			rv = show_pkg_info_from_metadir(&xh,
 | 
			
		||||
			    argv[optind], props);
 | 
			
		||||
			if (rv == ENOENT)
 | 
			
		||||
				rv = repo_show_pkg_info(&xh,
 | 
			
		||||
				    argv[optind], props);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	} else if (show_files) {
 | 
			
		||||
		/* show-files mode */
 | 
			
		||||
		if (repo_mode)
 | 
			
		||||
			rv =  repo_show_pkg_files(&xh, argv[optind]);
 | 
			
		||||
		else
 | 
			
		||||
		else {
 | 
			
		||||
			rv = show_pkg_files_from_metadir(&xh, argv[optind]);
 | 
			
		||||
			if (rv == ENOENT)
 | 
			
		||||
				rv = repo_show_pkg_files(&xh, argv[optind]);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	} else if (show_deps) {
 | 
			
		||||
		/* show-deps mode */
 | 
			
		||||
		if (repo_mode)
 | 
			
		||||
			rv = repo_show_pkg_deps(&xh, argv[optind]);
 | 
			
		||||
		else
 | 
			
		||||
		else {
 | 
			
		||||
			rv = show_pkg_deps(&xh, argv[optind]);
 | 
			
		||||
			if (rv == ENOENT)
 | 
			
		||||
				rv = repo_show_pkg_deps(&xh, argv[optind]);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	} else if (show_rdeps) {
 | 
			
		||||
		/* show-rdeps mode */
 | 
			
		||||
 
 | 
			
		||||
@@ -47,7 +47,7 @@ show_pkg_deps(struct xbps_handle *xhp, const char *pkgname)
 | 
			
		||||
	propsd = xbps_dictionary_from_metadata_plist(xhp,
 | 
			
		||||
	    pkgname, XBPS_PKGPROPS);
 | 
			
		||||
	if (propsd == NULL)
 | 
			
		||||
		return errno;
 | 
			
		||||
		return ENOENT;
 | 
			
		||||
 | 
			
		||||
	rv = xbps_callback_array_iter_in_dict(xhp, propsd, "run_depends",
 | 
			
		||||
	     list_strings_sep_in_array, NULL);
 | 
			
		||||
@@ -66,7 +66,7 @@ show_pkg_revdeps(struct xbps_handle *xhp, const char *pkgname)
 | 
			
		||||
	if (pkgd == NULL) {
 | 
			
		||||
		pkgd = xbps_find_pkg_dict_installed(xhp, pkgname, false);
 | 
			
		||||
		if (pkgd == NULL)
 | 
			
		||||
			return 0;
 | 
			
		||||
			return ENOENT;
 | 
			
		||||
	}
 | 
			
		||||
	rv = xbps_callback_array_iter_in_dict(xhp, pkgd, "requiredby",
 | 
			
		||||
	    list_strings_sep_in_array, NULL);
 | 
			
		||||
 
 | 
			
		||||
@@ -176,7 +176,7 @@ show_pkg_info_from_metadir(struct xbps_handle *xhp,
 | 
			
		||||
 | 
			
		||||
	d = xbps_dictionary_from_metadata_plist(xhp, pkgname, XBPS_PKGPROPS);
 | 
			
		||||
	if (d == NULL)
 | 
			
		||||
		return EINVAL;
 | 
			
		||||
		return ENOENT;
 | 
			
		||||
 | 
			
		||||
	prop_dictionary_get_cstring_nocopy(d, "pkgname", &pname);
 | 
			
		||||
	pkgdb_d = xbps_pkgdb_get_pkgd(xhp, pname, false);
 | 
			
		||||
@@ -209,7 +209,7 @@ show_pkg_files_from_metadir(struct xbps_handle *xhp, const char *pkgname)
 | 
			
		||||
 | 
			
		||||
	d = xbps_dictionary_from_metadata_plist(xhp, pkgname, XBPS_PKGFILES);
 | 
			
		||||
	if (d == NULL)
 | 
			
		||||
		return EINVAL;
 | 
			
		||||
		return ENOENT;
 | 
			
		||||
 | 
			
		||||
	rv = show_pkg_files(d);
 | 
			
		||||
	prop_object_release(d);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user