From b3e36a6d4f1383ecc81ff0ce551d287751dc3183 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 4 Nov 2022 11:09:16 +0000 Subject: [PATCH] requests: Move fetching the transaction into a separate function Signed-off-by: Michael Tremer --- src/libpakfire/build.c | 2 +- src/libpakfire/include/pakfire/request.h | 6 +++-- src/libpakfire/pakfire.c | 14 +++++++++-- src/libpakfire/request.c | 30 +++++++----------------- 4 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/libpakfire/build.c b/src/libpakfire/build.c index e605f2904..4ec759e9e 100644 --- a/src/libpakfire/build.c +++ b/src/libpakfire/build.c @@ -1326,7 +1326,7 @@ static int pakfire_build_install_test(struct pakfire_build* build) { r = pakfire_packagelist_walk(build->packages, pakfire_build_install_package, request); // Solve the request - r = pakfire_request_solve(request, NULL); + r = pakfire_request_solve(request); switch (r) { // All okay case 0: diff --git a/src/libpakfire/include/pakfire/request.h b/src/libpakfire/include/pakfire/request.h index 72f2f7914..89b808cbd 100644 --- a/src/libpakfire/include/pakfire/request.h +++ b/src/libpakfire/include/pakfire/request.h @@ -59,8 +59,7 @@ int pakfire_request_create(struct pakfire_request** request, struct pakfire* pak struct pakfire_request* pakfire_request_ref(struct pakfire_request* request); struct pakfire_request* pakfire_request_unref(struct pakfire_request* request); -int pakfire_request_solve(struct pakfire_request* request, - struct pakfire_transaction** transaction); +int pakfire_request_solve(struct pakfire_request* request); int pakfire_request_add(struct pakfire_request* request, const enum pakfire_request_action action, const char* what, int flags); @@ -75,6 +74,9 @@ Solver* pakfire_request_get_solver(struct pakfire_request* request); int pakfire_request_next_problem( struct pakfire_request* request, struct pakfire_problem** problem); +int pakfire_request_get_transaction(struct pakfire_request* request, + struct pakfire_transaction** transaction); + #endif #endif /* PAKFIRE_REQUEST_H */ diff --git a/src/libpakfire/pakfire.c b/src/libpakfire/pakfire.c index 19dff85b7..427a40fa2 100644 --- a/src/libpakfire/pakfire.c +++ b/src/libpakfire/pakfire.c @@ -1755,7 +1755,7 @@ static int pakfire_perform_transaction( // Solve the request while (!solved) { - r = pakfire_request_solve(request, &transaction); + r = pakfire_request_solve(request); switch (r) { case 0: solved = 1; @@ -1775,6 +1775,11 @@ static int pakfire_perform_transaction( } } + // Fetch the transaction + r = pakfire_request_get_transaction(request, &transaction); + if (r) + goto ERROR; + // Set how many packages have been changed if (changed) *changed = pakfire_transaction_count(transaction); @@ -1876,7 +1881,7 @@ static int pakfire_perform_transaction_simple(struct pakfire* pakfire, int solve // Solve the request while (!solved) { - r = pakfire_request_solve(request, &transaction); + r = pakfire_request_solve(request); switch (r) { case 0: solved = 1; @@ -1897,6 +1902,11 @@ static int pakfire_perform_transaction_simple(struct pakfire* pakfire, int solve } } + // Fetch the transaction + r = pakfire_request_get_transaction(request, &transaction); + if (r) + goto ERROR; + // Set how many packages have been changed if (changed) *changed = pakfire_transaction_count(transaction); diff --git a/src/libpakfire/request.c b/src/libpakfire/request.c index 0e9331f73..8cc773d8c 100644 --- a/src/libpakfire/request.c +++ b/src/libpakfire/request.c @@ -214,17 +214,10 @@ Solver* pakfire_request_get_solver(struct pakfire_request* request) { return request->solver; } -int pakfire_request_solve(struct pakfire_request* request, - struct pakfire_transaction** transaction) { - int r; - +int pakfire_request_solve(struct pakfire_request* request) { // Prepare pool pakfire_pool_internalize(request->pakfire); - // Reset pointer - if (transaction) - *transaction = NULL; - #ifdef ENABLE_DEBUG Pool* pool = pakfire_get_solv_pool(request->pakfire); @@ -255,21 +248,8 @@ int pakfire_request_solve(struct pakfire_request* request, solver_printdecisions(request->solver); #endif - // If the solving process was successful, we create the transaction - if (transaction) { - r = pakfire_transaction_create(transaction, request->pakfire, request->solver); - if (r) - goto ERROR; - } - // All okay return 0; - -ERROR: - if (transaction && *transaction) - pakfire_transaction_unref(*transaction); - - return r; } static int pakfire_request_is_file(const char* what) { @@ -490,3 +470,11 @@ int pakfire_request_take_solution(struct pakfire_request* request, pakfire_problem_unref(problem); return 0; } + +int pakfire_request_get_transaction(struct pakfire_request* request, + struct pakfire_transaction** transaction) { + // XXX Check if we have solved successfully + + // Create the transaction + return pakfire_transaction_create(transaction, request->pakfire, request->solver); +} -- 2.39.5