diff options
| author | Eugen Wissner <belka@caraus.de> | 2026-05-09 10:28:52 +0200 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2026-05-09 10:34:11 +0200 |
| commit | 8dd9efa88da99f602a6848731a115f10ec3a5b31 (patch) | |
| tree | c7d88ee8828fbbaa7571dd5fafba73d775d67e94 /backend/pkgtools.cc | |
| parent | dc3340473423ab92eae0962d9aaf239d218d16f2 (diff) | |
| download | katja-8dd9efa88da99f602a6848731a115f10ec3a5b31.tar.gz | |
Convert the backend to modules
Diffstat (limited to 'backend/pkgtools.cc')
| -rw-r--r-- | backend/pkgtools.cc | 162 |
1 files changed, 0 insertions, 162 deletions
diff --git a/backend/pkgtools.cc b/backend/pkgtools.cc deleted file mode 100644 index e4c8b41..0000000 --- a/backend/pkgtools.cc +++ /dev/null @@ -1,162 +0,0 @@ -/* - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at https://mozilla.org/MPL/2.0/. - */ -#include "config.h" -#include <curl/curl.h> -#include <sqlite3.h> -#include "pkgtools.h" - -namespace katja -{ -/** - * katja::Pkgtools::download: - * @job_data: A #JobData. - * @dest_dir_name: Destination directory. - * @pkg_name: Package name. - * - * Download a package. - * - * Returns: %TRUE on success, %FALSE otherwise. - **/ -bool Pkgtools::download(JobData *job_data, const char *dest_dir_name, char *pkg_name) noexcept -{ - char *dest_filename, *source_url; - bool ret = false; - sqlite3_stmt *statement = nullptr; - CURL *curl = nullptr; - - if ((sqlite3_prepare_v2(job_data->db, - "SELECT location, (full_name || '.' || ext) FROM pkglist " - "WHERE name LIKE @name AND repo_order = @repo_order", - -1, - &statement, - nullptr) != SQLITE_OK)) - { - return false; - } - sqlite3_bind_text(statement, 1, pkg_name, -1, SQLITE_TRANSIENT); - sqlite3_bind_int(statement, 2, this->get_order()); - - if (sqlite3_step(statement) == SQLITE_ROW) - { - dest_filename = g_build_filename(dest_dir_name, sqlite3_column_text(statement, 1), nullptr); - source_url = g_strconcat(this->get_mirror(), - sqlite3_column_text(statement, 0), - "/", - sqlite3_column_text(statement, 1), - nullptr); - - ret = g_file_test(dest_filename, G_FILE_TEST_EXISTS) - || get_file(&curl, source_url, dest_filename) == CURLE_OK; - - if (curl) - { - curl_easy_cleanup(curl); - } - g_free(source_url); - g_free(dest_filename); - } - sqlite3_finalize(statement); - - return ret; -} - -/** - * katja::Pkgtools::install: - * @job_data: A #JobData. - * @pkg_name: Package name. - * - * Install a package. - **/ -void Pkgtools::install(JobData *job_data, char *pkg_name) noexcept -{ - char *pkg_filename, *cmd_line; - sqlite3_stmt *statement = nullptr; - - if ((sqlite3_prepare_v2(job_data->db, - "SELECT (full_name || '.' || ext) FROM pkglist " - "WHERE name LIKE @name AND repo_order = @repo_order", - -1, - &statement, - nullptr) != SQLITE_OK)) - { - return; - } - - sqlite3_bind_text(statement, 1, pkg_name, -1, SQLITE_TRANSIENT); - sqlite3_bind_int(statement, 2, this->get_order()); - - if (sqlite3_step(statement) == SQLITE_ROW) - { - pkg_filename = g_build_filename(LOCALSTATEDIR, - "cache", - "PackageKit", - "downloads", - sqlite3_column_text(statement, 0), - nullptr); - cmd_line = g_strconcat("/sbin/upgradepkg --install-new ", pkg_filename, nullptr); - g_spawn_command_line_sync(cmd_line, nullptr, nullptr, nullptr, nullptr); - g_free(cmd_line); - - g_free(pkg_filename); - } - sqlite3_finalize(statement); -} - -Pkgtools::~Pkgtools() noexcept -{ -} - -/** - * katja::Pkgtools::get_name: - * - * Retrieves the repository name. - * - * Returns: Repository name. - **/ -const char *Pkgtools::get_name() const noexcept -{ - return this->name; -} - -/** - * katja::Pkgtools::get_mirror: - * - * Retrieves the repository mirror. - * - * Returns: Repository mirror. - **/ -const char *Pkgtools::get_mirror() const noexcept -{ - return this->mirror; -} - -/** - * katja::Pkgtools::get_order: - * - * Retrieves the repository order. - * - * Returns: Repository order. - **/ -guint8 Pkgtools::get_order() const noexcept -{ - return this->order; -} - -/** - * katja::Pkgtools:is_blacklisted: - * @pkg: Package name to check for. - * - * Checks whether a package is blacklisted. - * - * Returns: %TRUE if the package is blacklisted, %FALSE otherwise. - **/ -bool Pkgtools::is_blacklisted(const char *pkg) const noexcept -{ - return this->blacklist - && g_regex_match (this->blacklist, pkg, static_cast<GRegexMatchFlags>(0), nullptr); -} - -} |
