]> git.ipfire.org Git - pakfire.git/commitdiff
request: Check whether installed repository is set
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 11 Feb 2021 13:33:25 +0000 (13:33 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 11 Feb 2021 13:33:25 +0000 (13:33 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/request.c

index 4ec816ed8cf175189af048741394e11c9b605c67..a86ba61d58684c32f510fb003ea4bbc384f360be 100644 (file)
@@ -18,6 +18,7 @@
 #                                                                             #
 #############################################################################*/
 
+#include <errno.h>
 #include <stdlib.h>
 
 #include <solv/queue.h>
@@ -100,9 +101,12 @@ Solver* pakfire_request_get_solver(PakfireRequest request) {
        return request->solver;
 }
 
-static void init_solver(PakfireRequest request, int flags) {
+static int init_solver(PakfireRequest request, int flags) {
        Pool* p = pakfire_get_solv_pool(request->pakfire);
 
+       if (!p->installed)
+               return -EINVAL;
+
        Solver* solver = solver_create(p);
 
        /* Free older solver */
@@ -130,6 +134,8 @@ static void init_solver(PakfireRequest request, int flags) {
 
        /* no arch change for forcebest */
        solver_set_flag(solver, SOLVER_FLAG_BEST_OBEY_POLICY, 1);
+
+       return 0;
 }
 
 static int solve(PakfireRequest request, Queue* queue) {
@@ -167,7 +173,11 @@ static int solve(PakfireRequest request, Queue* queue) {
 }
 
 PAKFIRE_EXPORT int pakfire_request_solve(PakfireRequest request, int flags) {
-       init_solver(request, flags);
+       int r = init_solver(request, flags);
+       if (r) {
+               ERROR(request->pakfire, "Could not initialize the solver: %s\n", strerror(errno));
+               return r;
+       }
 
        Queue queue;
        queue_init_clone(&queue, &request->queue);
@@ -187,11 +197,11 @@ PAKFIRE_EXPORT int pakfire_request_solve(PakfireRequest request, int flags) {
 
        // XXX EXCLUDES
 
-       int ret = solve(request, &queue);
+       r = solve(request, &queue);
 
        queue_free(&queue);
 
-       return ret;
+       return r;
 }
 
 PAKFIRE_EXPORT PakfireProblem pakfire_request_get_problems(PakfireRequest request) {