commit:     2d78938f5d4c3be536e7484c0f23be64b124db05
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Thu Jan  2 13:23:35 2020 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Thu Jan  2 13:23:35 2020 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=2d78938f

qdepends: use tree_foreach_pkg query selection on forward queries

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 qdepends.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/qdepends.c b/qdepends.c
index 44821b6..6f580a9 100644
--- a/qdepends.c
+++ b/qdepends.c
@@ -375,14 +375,28 @@ int qdepends_main(int argc, char **argv)
                array_for_each(overlays, n, overlay) {
                        t = tree_open(portroot, overlay);
                        if (t != NULL) {
-                               ret = tree_foreach_pkg_sorted(t,
-                                               qdepends_results_cb, &state, 
NULL);
+                               if (!(state.qmode & QMODE_REVERSE) && 
array_cnt(atoms) > 0) {
+                                       array_for_each(atoms, i, atom) {
+                                               ret = tree_foreach_pkg_sorted(t,
+                                                               
qdepends_results_cb, &state, atom);
+                                       }
+                               } else {
+                                       ret = tree_foreach_pkg_sorted(t,
+                                                       qdepends_results_cb, 
&state, NULL);
+                               }
                                tree_close(t);
                        }
                }
        } else {
-               ret = tree_foreach_pkg_fast(state.vdb,
-                               qdepends_results_cb, &state, NULL);
+               if (!(state.qmode & QMODE_REVERSE) && array_cnt(atoms) > 0) {
+                       array_for_each(atoms, i, atom) {
+                               ret = tree_foreach_pkg_fast(state.vdb,
+                                               qdepends_results_cb, &state, 
atom);
+                       }
+               } else {
+                       ret = tree_foreach_pkg_fast(state.vdb,
+                                       qdepends_results_cb, &state, NULL);
+               }
        }
 
        if (state.vdb != NULL)

Reply via email to