Solver* solver;
Queue jobs;
-
- // Temporary files
- char** cleanup_files;
};
/*
};
static void pakfire_request_free(struct pakfire_request* request) {
- int r;
-
if (request->solver)
solver_free(request->solver);
queue_free(&request->jobs);
- // Remove all cleanup files
- if (request->cleanup_files) {
- for (char** p = request->cleanup_files; *p; p++) {
- DEBUG(request->pakfire, "Cleaning up %s...\n", *p);
-
- // Unlink file
- r = unlink(*p);
- if (r && errno != ENOENT) {
- ERROR(request->pakfire, "Could not unlink %s: %m\n", *p);
- }
-
- free(*p);
- }
-
- free(request->cleanup_files);
- }
-
pakfire_unref(request->pakfire);
free(request);
}
return r;
}
-static int pakfire_request_cleanup_file(
- struct pakfire_request* request, const char* path) {
- size_t length = 0;
-
- // Count existing elements
- if (request->cleanup_files) {
- for (char** p = request->cleanup_files; *p; p++)
- length++;
- }
-
- // Increase size of array
- request->cleanup_files = reallocarray(request->cleanup_files,
- length + 2, sizeof(*request->cleanup_files));
- if (!request->cleanup_files) {
- ERROR(request->pakfire, "Could not (re-)allocate cleanup_files: %m\n");
- return 1;
- }
-
- request->cleanup_files[length] = strdup(path);
-
- // Terminate array
- request->cleanup_files[length + 1] = NULL;
-
- return 0;
-}
-
static int pakfire_request_add_url(struct pakfire_request* request, int action,
const char* url, int extra_flags) {
struct pakfire_downloader* downloader;
if (r)
goto ERROR;
- // Cleanup this file when the request is being freed
- r = pakfire_request_cleanup_file(request, path);
- if (r)
- goto ERROR;
-
// Success
r = 0;