From 2c65a2c6b02924df720f55c6e96e2e201d404c0c Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 27 Feb 2026 09:51:29 +0100 Subject: [PATCH] Rename Glib primitive types to standard C types --- CMakeLists.txt | 8 +- backend/CMakeLists.txt | 56 +++++ backend/Slackware.conf.in | 15 -- backend/dl.cc | 68 +++--- backend/dl.h | 22 +- backend/job.cc | 25 ++- backend/job.h | 12 +- backend/meson.build | 53 ----- backend/pk-backend-slack.cc | 397 +++++++++++++++------------------ backend/pkgtools.cc | 60 ++--- backend/pkgtools.h | 40 ++-- backend/slackpkg.cc | 167 +++++++------- backend/slackpkg.h | 24 +- backend/tests/definitions.cc | 68 +++--- backend/tests/dl-test.cc | 9 +- backend/tests/slackpkg-test.cc | 9 +- backend/utils.cc | 68 +++--- backend/utils.h | 20 +- katja.toml.dist | 8 + 19 files changed, 563 insertions(+), 566 deletions(-) create mode 100644 backend/CMakeLists.txt delete mode 100644 backend/Slackware.conf.in delete mode 100644 backend/meson.build diff --git a/CMakeLists.txt b/CMakeLists.txt index 980c023..04d8af6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,20 +6,22 @@ cmake_minimum_required(VERSION 4.0.0) project(Katja LANGUAGES CXX) include(CTest) -include(FetchContent) -option(KATJA_BUILD_TUI "Build text user interface" ON) +option(KATJA_BUILD_CLI "Build command line interface" ON) set(CMAKE_EXPORT_COMPILE_COMMANDS 1) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_CXX_STANDARD 23) +find_package(Boost REQUIRED) + add_library(katja) target_sources(katja PUBLIC FILE_SET all_my_modules TYPE CXX_MODULES FILES katja/database.cpp katja/repository.cpp katja/sbo.cpp) include_directories(include ${Boost_INCLUDE_DIR}) -if(KATJA_BUILD_TUI) +# add_subdirectory(backend) +if(KATJA_BUILD_CLI) add_subdirectory(cli) endif() if(BUILD_TESTING) diff --git a/backend/CMakeLists.txt b/backend/CMakeLists.txt new file mode 100644 index 0000000..f2eae86 --- /dev/null +++ b/backend/CMakeLists.txt @@ -0,0 +1,56 @@ +# 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/. + +find_package(PkgConfig REQUIRED) +pkg_check_modules(deps REQUIRED IMPORTED_TARGET glib-2.0) + +add_library(backend) +target_sources(backend + INTERFACE job.h utils.h pkgtools.h slackpkg.h dl.h + PRIVATE job.cc utils.cc pkgtools.cc slackpkg.cc dl.cc +) + +target_link_libraries(backend PkgConfig::deps) +# curl_dep = meson.get_compiler('c').find_library('curl') +# bzip2_dep = dependency('bzip2') + +# packagekit_backend_slack_module = shared_module( +# 'pk_backend_slack', +# 'pk-backend-slack.cc', +# 'utils.cc', +# 'pkgtools.cc', +# 'slackpkg.cc', +# 'dl.cc', +# 'job.cc', +# include_directories: packagekit_src_include, +# dependencies: [ +# packagekit_glib2_dep, +# curl_dep, +# gmodule_dep, +# sqlite3_dep, +# bzip2_dep, +# ], +# cpp_args: [ +# '-DG_LOG_DOMAIN="PackageKit-Slackware"', +# '-DLOCALSTATEDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('localstatedir'))), +# '-DLIBDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('libdir'))), +# '-DSYSCONFDIR="@0@"'.format(get_option('sysconfdir')), +# ], +# override_options: ['c_std=c14', 'cpp_std=c++14'], +# install: true, +# install_dir: pk_plugin_dir, +# ) + +# configure_file( +# input: 'Slackware.conf.in', +# output: 'Slackware.conf', +# configuration: slackware_config_data, +# install: true, +# install_dir: join_paths(get_option('sysconfdir'), 'PackageKit'), +# ) + +# install_data( +# 'metadata.db', +# install_dir: join_paths(get_option('localstatedir'), 'cache', 'PackageKit', 'metadata'), +# ) diff --git a/backend/Slackware.conf.in b/backend/Slackware.conf.in deleted file mode 100644 index a1a6efa..0000000 --- a/backend/Slackware.conf.in +++ /dev/null @@ -1,15 +0,0 @@ -# It is a sample configuration. - -[slackware] -Mirror=http://mirrors.slackware.com/slackware/@pkgmain@-14.2/ -Priority=patches;@pkgmain@;extra;pasture;testing -#Blacklist= - - -#[dropline] -#Mirror=http://dl.flevum.de/slackware/3.10/ -#IndexFile=http://dl.flevum.de/slackware/3.10/DroplineFiles3.10 - -#[dropline] -#Mirror=http://dl.flevum.de/slackware64/3.10/ -#IndexFile=http://dl.flevum.de/slackware64/3.10/Dropline64Files3.10 diff --git a/backend/dl.cc b/backend/dl.cc index 5a749c1..06698c9 100644 --- a/backend/dl.cc +++ b/backend/dl.cc @@ -1,3 +1,8 @@ +/* + * 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 #include #include "dl.h" @@ -15,27 +20,27 @@ namespace slack { * Returns: List of files needed for building the cache. **/ GSList * -Dl::collect_cache_info (const gchar *tmpl) noexcept +Dl::collect_cache_info (const char *tmpl) noexcept { - CURL *curl = NULL; - GSList *file_list = NULL; + CURL *curl = nullptr; + GSList *file_list = nullptr; GFile *tmp_dir, *repo_tmp_dir; /* Create the temporary directory for the repository */ tmp_dir = g_file_new_for_path(tmpl); repo_tmp_dir = g_file_get_child(tmp_dir, this->get_name ()); - g_file_make_directory(repo_tmp_dir, NULL, NULL); + g_file_make_directory(repo_tmp_dir, nullptr, nullptr); /* There is no ChangeLog yet to check if there are updates or not. Just mark the index file for download */ - auto source_dest = static_cast (g_malloc_n(3, sizeof(gchar *))); + auto source_dest = static_cast (g_malloc_n(3, sizeof(char *))); source_dest[0] = g_strdup(this->index_file); source_dest[1] = g_build_filename(tmpl, this->get_name (), "IndexFile", - NULL); - source_dest[2] = NULL; + nullptr); + source_dest[2] = nullptr; /* Check if the remote file can be found */ - if (get_file(&curl, source_dest[0], NULL)) + if (get_file(&curl, source_dest[0], nullptr)) { g_strfreev(source_dest); } @@ -55,7 +60,7 @@ Dl::collect_cache_info (const gchar *tmpl) noexcept /** * slack::Dl::generate_cache: - * @job: A #PkBackendJob. + * @job_data: A #JobData. * @tmpl: temporary directory for downloading the files. * * Download files needed to get the information like the list of packages @@ -64,23 +69,22 @@ Dl::collect_cache_info (const gchar *tmpl) noexcept * Returns: List of files needed for building the cache. **/ void -Dl::generate_cache(PkBackendJob *job, const gchar *tmpl) noexcept +Dl::generate_cache(JobData *job_data, const char *tmpl) noexcept { - gchar **line_tokens, **pkg_tokens, *line, *collection_name = NULL, *list_filename; - gboolean skip = FALSE; + char **line_tokens, **pkg_tokens, *line, *collection_name = nullptr, *list_filename; + bool skip = false; GFile *list_file; GFileInputStream *fin; - GDataInputStream *data_in = NULL; - sqlite3_stmt *stmt = NULL; - auto job_data = static_cast (pk_backend_job_get_user_data(job)); + GDataInputStream *data_in = nullptr; + sqlite3_stmt *stmt = nullptr; /* Check if the temporary directory for this repository exists. If so the file metadata have to be generated */ list_filename = g_build_filename(tmpl, this->get_name (), "IndexFile", - NULL); + nullptr); list_file = g_file_new_for_path(list_filename); - if (!(fin = g_file_read(list_file, NULL, NULL))) + if (!(fin = g_file_read(list_file, nullptr, nullptr))) { goto out; } @@ -91,7 +95,7 @@ Dl::generate_cache(PkBackendJob *job, const gchar *tmpl) noexcept "DELETE FROM repos WHERE repo LIKE @repo", -1, &stmt, - NULL) == SQLITE_OK) { + nullptr) == SQLITE_OK) { sqlite3_bind_text(stmt, 1, this->get_name (), -1, SQLITE_TRANSIENT); sqlite3_step(stmt); sqlite3_finalize(stmt); @@ -100,7 +104,7 @@ Dl::generate_cache(PkBackendJob *job, const gchar *tmpl) noexcept "INSERT INTO repos (repo_order, repo) VALUES (@repo_order, @repo)", -1, &stmt, - NULL) != SQLITE_OK) + nullptr) != SQLITE_OK) { goto out; } @@ -120,13 +124,13 @@ Dl::generate_cache(PkBackendJob *job, const gchar *tmpl) noexcept "@desc, @compressed, @uncompressed, @cat, @repo_order, @ext)", -1, &stmt, - NULL) != SQLITE_OK)) + nullptr) != SQLITE_OK)) { goto out; } - sqlite3_exec(job_data->db, "BEGIN TRANSACTION", NULL, NULL, NULL); + sqlite3_exec(job_data->db, "BEGIN TRANSACTION", nullptr, nullptr, nullptr); - while ((line = g_data_input_stream_read_line(data_in, NULL, NULL, NULL))) + while ((line = g_data_input_stream_read_line(data_in, nullptr, nullptr, nullptr))) { line_tokens = g_strsplit(line, ":", 0); if ((g_strv_length(line_tokens) > 6) @@ -158,11 +162,11 @@ Dl::generate_cache(PkBackendJob *job, const gchar *tmpl) noexcept } else { - skip = TRUE; /* Skip other candidates for collections */ + skip = true; /* Skip other candidates for collections */ } if (skip) { - skip = FALSE; + skip = false; } else { @@ -186,15 +190,15 @@ Dl::generate_cache(PkBackendJob *job, const gchar *tmpl) noexcept } /* Create a collection entry */ - if (collection_name && g_seekable_seek(G_SEEKABLE(data_in), 0, G_SEEK_SET, NULL, NULL) + if (collection_name && g_seekable_seek(G_SEEKABLE(data_in), 0, G_SEEK_SET, nullptr, nullptr) && (sqlite3_prepare_v2(job_data->db, "INSERT INTO collections (name, repo_order, collection_pkg) " "VALUES (@name, @repo_order, @collection_pkg)", -1, &stmt, - NULL) == SQLITE_OK)) + nullptr) == SQLITE_OK)) { - while ((line = g_data_input_stream_read_line(data_in, NULL, NULL, NULL))) + while ((line = g_data_input_stream_read_line(data_in, nullptr, nullptr, nullptr))) { line_tokens = g_strsplit(line, ":", 0); if ((g_strv_length(line_tokens) > 6) @@ -221,7 +225,7 @@ Dl::generate_cache(PkBackendJob *job, const gchar *tmpl) noexcept } g_free(collection_name); - sqlite3_exec(job_data->db, "END TRANSACTION", NULL, NULL, NULL); + sqlite3_exec(job_data->db, "END TRANSACTION", nullptr, nullptr, nullptr); out: if (data_in) @@ -260,19 +264,19 @@ Dl::~Dl () noexcept * * Return value: New #slack::Dl. **/ -Dl::Dl (const gchar *name, const gchar *mirror, - guint8 order, const gchar *blacklist, gchar *index_file) noexcept +Dl::Dl (const char *name, const char *mirror, + std::uint8_t order, const char *blacklist, char *index_file) noexcept { GRegex *regex; if (blacklist) { regex = static_cast (g_regex_new (blacklist, - G_REGEX_OPTIMIZE, static_cast (0), NULL)); + G_REGEX_OPTIMIZE, static_cast (0), nullptr)); } else { - regex = NULL; + regex = nullptr; } this->name = g_strdup (name); diff --git a/backend/dl.h b/backend/dl.h index 600088d..47b4d2a 100644 --- a/backend/dl.h +++ b/backend/dl.h @@ -1,24 +1,28 @@ -#ifndef __SLACK_DL_H -#define __SLACK_DL_H +/* + * 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/. + */ +#pragma once +#include #include "pkgtools.h" +#include "utils.h" namespace slack { class Dl final : public Pkgtools { public: - Dl (const gchar *name, const gchar *mirror, - guint8 order, const gchar *blacklist, gchar *index_file) noexcept; + Dl (const char *name, const char *mirror, + std::uint8_t order, const char *blacklist, char *index_file) noexcept; ~Dl () noexcept; - GSList *collect_cache_info (const gchar *tmpl) noexcept; - void generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept; + GSList *collect_cache_info (const char *tmpl) noexcept; + void generate_cache (JobData *job_data, const char *tmpl) noexcept; private: - gchar *index_file; + char *index_file; }; } - -#endif /* __SLACK_DL_H */ diff --git a/backend/job.cc b/backend/job.cc index 86468ea..4dcb232 100644 --- a/backend/job.cc +++ b/backend/job.cc @@ -1,3 +1,8 @@ +/* + * 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 "job.h" #include @@ -51,42 +56,42 @@ generate_query(PkBitfield filters) } void -pk_backend_search_thread (PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_search_thread (PkBackendJob *job, GVariant *params, void *user_data) { auto job_data = reinterpret_cast (pk_backend_job_get_user_data (job)); pk_backend_job_set_status (job, PK_STATUS_ENUM_QUERY); pk_backend_job_set_percentage (job, 0); - gchar **vals; + char **vals; PkBitfield filters; g_variant_get (params, "(t^a&s)", &filters, &vals); - gchar *search = g_strjoinv ("%", vals); + char *search = g_strjoinv ("%", vals); - gchar *query = sqlite3_mprintf (slack::generate_query(filters).c_str(), + char *query = sqlite3_mprintf (slack::generate_query(filters).c_str(), user_data, search); sqlite3_stmt *stmt; - if ((sqlite3_prepare_v2 (job_data->db, query, -1, &stmt, NULL) == SQLITE_OK)) + if ((sqlite3_prepare_v2 (job_data->db, query, -1, &stmt, nullptr) == SQLITE_OK)) { /* Now we're ready to output all packages */ while (sqlite3_step (stmt) == SQLITE_ROW) { PkInfoEnum info = slack::is_installed ( - reinterpret_cast (sqlite3_column_text (stmt, 2))); + reinterpret_cast (sqlite3_column_text (stmt, 2))); if ((info == PK_INFO_ENUM_INSTALLED || info == PK_INFO_ENUM_UPDATING) && slack::filter_package (filters, true)) { pk_backend_job_package (job, PK_INFO_ENUM_INSTALLED, - reinterpret_cast (sqlite3_column_text (stmt, 0)), - reinterpret_cast (sqlite3_column_text (stmt, 1))); + reinterpret_cast (sqlite3_column_text (stmt, 0)), + reinterpret_cast (sqlite3_column_text (stmt, 1))); } else if (info == PK_INFO_ENUM_INSTALLING && slack::filter_package (filters, false)) { pk_backend_job_package(job, PK_INFO_ENUM_AVAILABLE, - reinterpret_cast (sqlite3_column_text (stmt, 0)), - reinterpret_cast (sqlite3_column_text (stmt, 1))); + reinterpret_cast (sqlite3_column_text (stmt, 0)), + reinterpret_cast (sqlite3_column_text (stmt, 1))); } } sqlite3_finalize (stmt); diff --git a/backend/job.h b/backend/job.h index a1684c6..f99baee 100644 --- a/backend/job.h +++ b/backend/job.h @@ -1,5 +1,9 @@ -#ifndef __SLACK_JOB_H -#define __SLACK_JOB_H +/* + * 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/. + */ +#pragma once #include #include @@ -12,8 +16,6 @@ bool filter_package (PkBitfield filters, bool is_installed); extern "C" { -void pk_backend_search_thread (PkBackendJob *job, GVariant *params, gpointer user_data); +void pk_backend_search_thread (PkBackendJob *job, GVariant *params, void *user_data); } - -#endif /* __SLACK_JOB_H */ diff --git a/backend/meson.build b/backend/meson.build deleted file mode 100644 index e01398b..0000000 --- a/backend/meson.build +++ /dev/null @@ -1,53 +0,0 @@ -add_languages('cpp', native: false) - -curl_dep = meson.get_compiler('c').find_library('curl') -bzip2_dep = dependency('bzip2') - -packagekit_backend_slack_module = shared_module( - 'pk_backend_slack', - 'pk-backend-slack.cc', - 'utils.cc', - 'pkgtools.cc', - 'slackpkg.cc', - 'dl.cc', - 'job.cc', - include_directories: packagekit_src_include, - dependencies: [ - packagekit_glib2_dep, - curl_dep, - gmodule_dep, - sqlite3_dep, - bzip2_dep, - ], - cpp_args: [ - '-DG_LOG_DOMAIN="PackageKit-Slackware"', - '-DLOCALSTATEDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('localstatedir'))), - '-DLIBDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('libdir'))), - '-DSYSCONFDIR="@0@"'.format(get_option('sysconfdir')), - ], - override_options: ['c_std=c14', 'cpp_std=c++14'], - install: true, - install_dir: pk_plugin_dir, -) - -subdir('tests') - -slackware_config_data = configuration_data() -if (target_machine.cpu_family() == 'x86_64') - slackware_config_data.set('pkgmain', 'slackware64') -else - slackware_config_data.set('pkgmain', 'slackware') -endif - -configure_file( - input: 'Slackware.conf.in', - output: 'Slackware.conf', - configuration: slackware_config_data, - install: true, - install_dir: join_paths(get_option('sysconfdir'), 'PackageKit'), -) - -install_data( - 'metadata.db', - install_dir: join_paths(get_option('localstatedir'), 'cache', 'PackageKit', 'metadata'), -) diff --git a/backend/pk-backend-slack.cc b/backend/pk-backend-slack.cc index 7e04866..322ee1d 100644 --- a/backend/pk-backend-slack.cc +++ b/backend/pk-backend-slack.cc @@ -1,6 +1,12 @@ +/* + * 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 #include #include +#include #include #include #include @@ -15,19 +21,19 @@ using namespace slack; -static GSList *repos = NULL; +static GSList *repos = nullptr; void pk_backend_initialize(GKeyFile *conf, PkBackend *backend) { - gchar *path, **groups; - gint ret; + char *path, **groups; + int ret; gushort i; gsize groups_len; GFile *conf_file; GFileInfo *file_info; GKeyFile *key_conf; - GError *err = NULL; - gpointer repo = NULL; + GError *err = nullptr; + void *repo = nullptr; sqlite3 *db; sqlite3_stmt *stmt; @@ -35,7 +41,7 @@ void pk_backend_initialize(GKeyFile *conf, PkBackend *backend) curl_global_init(CURL_GLOBAL_DEFAULT); /* Open the database. We will need it to save the time the configuration file was last modified. */ - path = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "metadata", "metadata.db", NULL); + path = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "metadata", "metadata.db", nullptr); if (sqlite3_open(path, &db) != SQLITE_OK) { g_error("%s: %s", path, sqlite3_errmsg(db)); @@ -44,7 +50,7 @@ void pk_backend_initialize(GKeyFile *conf, PkBackend *backend) /* Read the configuration file */ key_conf = g_key_file_new(); - path = g_build_filename(SYSCONFDIR, "PackageKit", "Slackware.conf", NULL); + path = g_build_filename(SYSCONFDIR, "PackageKit", "Slackware.conf", nullptr); g_key_file_load_from_file(key_conf, path, G_KEY_FILE_NONE, &err); if (err) { @@ -56,7 +62,7 @@ void pk_backend_initialize(GKeyFile *conf, PkBackend *backend) if (!(file_info = g_file_query_info(conf_file, "time::modified-usec", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, - NULL, + nullptr, &err))) { g_error("%s", err->message); @@ -67,7 +73,7 @@ void pk_backend_initialize(GKeyFile *conf, PkBackend *backend) "UPDATE cache_info SET value = ? WHERE key LIKE 'last_modification'", -1, &stmt, - NULL)) == SQLITE_OK) { + nullptr)) == SQLITE_OK) { ret = sqlite3_bind_int(stmt, 1, g_file_info_get_attribute_uint32(file_info, "time::modified-usec")); if (ret == SQLITE_OK) { @@ -93,18 +99,18 @@ void pk_backend_initialize(GKeyFile *conf, PkBackend *backend) groups = g_key_file_get_groups(key_conf, &groups_len); for (i = 0; i < groups_len; i++) { - gchar *blacklist = g_key_file_get_string(key_conf, groups[i], "Blacklist", NULL); - gchar *mirror = g_key_file_get_string(key_conf, groups[i], "Mirror", NULL); + char *blacklist = g_key_file_get_string(key_conf, groups[i], "Blacklist", nullptr); + char *mirror = g_key_file_get_string(key_conf, groups[i], "Mirror", nullptr); - if (g_key_file_has_key(key_conf, groups[i], "Priority", NULL)) + if (g_key_file_has_key(key_conf, groups[i], "Priority", nullptr)) { repo = new Slackpkg (groups[i], mirror, i + 1, blacklist, - g_key_file_get_string_list(key_conf, groups[i], "Priority", NULL, NULL)); + g_key_file_get_string_list(key_conf, groups[i], "Priority", nullptr, nullptr)); } - else if (g_key_file_has_key(key_conf, groups[i], "IndexFile", NULL)) + else if (g_key_file_has_key(key_conf, groups[i], "IndexFile", nullptr)) { repo = new Dl (groups[i], mirror, i + 1, blacklist, - g_key_file_get_string(key_conf, groups[i], "IndexFile", NULL)); + g_key_file_get_string(key_conf, groups[i], "IndexFile", nullptr)); } if (repo) @@ -137,71 +143,18 @@ pk_backend_destroy(PkBackend *backend) curl_global_cleanup (); } -gchar ** -pk_backend_get_mime_types(PkBackend *backend) -{ - const gchar *mime_types[] = { - "application/x-xz-compressed-tar", - "application/x-compressed-tar", - "application/x-bzip-compressed-tar", - "application/x-lzma-compressed-tar", - NULL - }; - - return g_strdupv((gchar **) mime_types); -} - -gboolean -pk_backend_supports_parallelization(PkBackend *backend) -{ - return FALSE; -} - -const gchar * -pk_backend_get_description(PkBackend* backend) -{ - return "Slackware"; -} - -const gchar * -pk_backend_get_author(PkBackend* backend) -{ - return "Eugene Wissner "; -} - -PkBitfield -pk_backend_get_groups(PkBackend *backend) -{ - return pk_bitfield_from_enums(PK_GROUP_ENUM_COLLECTIONS, - PK_GROUP_ENUM_SYSTEM, - PK_GROUP_ENUM_ADMIN_TOOLS, - PK_GROUP_ENUM_PROGRAMMING, - PK_GROUP_ENUM_PUBLISHING, - PK_GROUP_ENUM_DOCUMENTATION, - PK_GROUP_ENUM_DESKTOP_KDE, - PK_GROUP_ENUM_LOCALIZATION, - PK_GROUP_ENUM_NETWORK, - PK_GROUP_ENUM_DESKTOP_OTHER, - PK_GROUP_ENUM_ACCESSORIES, - PK_GROUP_ENUM_DESKTOP_XFCE, - PK_GROUP_ENUM_GAMES, - PK_GROUP_ENUM_OTHER, - PK_GROUP_ENUM_UNKNOWN, - -1); -} - void pk_backend_start_job(PkBackend *backend, PkBackendJob *job) { - gchar *db_filename = NULL; + char *db_filename = nullptr; JobData *job_data = g_new0(JobData, 1); - pk_backend_job_set_allow_cancel(job, TRUE); - pk_backend_job_set_allow_cancel(job, FALSE); + pk_backend_job_set_allow_cancel(job, true); + pk_backend_job_set_allow_cancel(job, false); - db_filename = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "metadata", "metadata.db", NULL); + db_filename = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "metadata", "metadata.db", nullptr); if (sqlite3_open(db_filename, &job_data->db) == SQLITE_OK) { /* Some SQLite settings */ - sqlite3_exec(job_data->db, "PRAGMA foreign_keys = ON", NULL, NULL, NULL); + sqlite3_exec(job_data->db, "PRAGMA foreign_keys = ON", nullptr, nullptr, nullptr); } else { @@ -231,32 +184,32 @@ pk_backend_stop_job(PkBackend *backend, PkBackendJob *job) sqlite3_close(job_data->db); g_free(job_data); - pk_backend_job_set_user_data(job, NULL); + pk_backend_job_set_user_data(job, nullptr); } void -pk_backend_search_names(PkBackend *backend, PkBackendJob *job, PkBitfield filters, gchar **values) +pk_backend_search_names(PkBackend *backend, PkBackendJob *job, PkBitfield filters, char **values) { - pk_backend_job_thread_create(job, pk_backend_search_thread, (gpointer) "name", NULL); + pk_backend_job_thread_create(job, pk_backend_search_thread, (void *) "name", nullptr); } void -pk_backend_search_details(PkBackend *backend, PkBackendJob *job, PkBitfield filters, gchar **values) +pk_backend_search_details(PkBackend *backend, PkBackendJob *job, PkBitfield filters, char **values) { - pk_backend_job_thread_create(job, pk_backend_search_thread, (gpointer) "desc", NULL); + pk_backend_job_thread_create(job, pk_backend_search_thread, (void *) "desc", nullptr); } void -pk_backend_search_groups(PkBackend *backend, PkBackendJob *job, PkBitfield filters, gchar **values) +pk_backend_search_groups(PkBackend *backend, PkBackendJob *job, PkBitfield filters, char **values) { - pk_backend_job_thread_create(job, pk_backend_search_thread, (gpointer) "cat", NULL); + pk_backend_job_thread_create(job, pk_backend_search_thread, (void *) "cat", nullptr); } static void -pk_backend_search_files_thread(PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_search_files_thread(PkBackendJob *job, GVariant *params, void *user_data) { - gchar **vals, *search; - gchar *query; + char **vals, *search; + char *query; sqlite3_stmt *stmt; PkInfoEnum ret; auto job_data = static_cast (pk_backend_job_get_user_data(job)); @@ -264,30 +217,30 @@ pk_backend_search_files_thread(PkBackendJob *job, GVariant *params, gpointer use pk_backend_job_set_status(job, PK_STATUS_ENUM_QUERY); pk_backend_job_set_percentage(job, 0); - g_variant_get(params, "(t^a&s)", NULL, &vals); + g_variant_get(params, "(t^a&s)", nullptr, &vals); search = g_strjoinv("%", vals); query = sqlite3_mprintf("SELECT (p.name || ';' || p.ver || ';' || p.arch || ';' || r.repo), p.summary, " "p.full_name FROM filelist AS f NATURAL JOIN pkglist AS p NATURAL JOIN repos AS r " "WHERE f.filename LIKE '%%%q%%' GROUP BY f.full_name", search); - if ((sqlite3_prepare_v2(job_data->db, query, -1, &stmt, NULL) == SQLITE_OK)) + if ((sqlite3_prepare_v2(job_data->db, query, -1, &stmt, nullptr) == SQLITE_OK)) { /* Now we're ready to output all packages */ while (sqlite3_step(stmt) == SQLITE_ROW) { - ret = is_installed((gchar*) sqlite3_column_text(stmt, 2)); + ret = is_installed((char*) sqlite3_column_text(stmt, 2)); if ((ret == PK_INFO_ENUM_INSTALLED) || (ret == PK_INFO_ENUM_UPDATING)) { pk_backend_job_package(job, PK_INFO_ENUM_INSTALLED, - (gchar*) sqlite3_column_text(stmt, 0), - (gchar*) sqlite3_column_text(stmt, 1)); + (char*) sqlite3_column_text(stmt, 0), + (char*) sqlite3_column_text(stmt, 1)); } else if (ret == PK_INFO_ENUM_INSTALLING) { pk_backend_job_package(job, PK_INFO_ENUM_AVAILABLE, - (gchar*) sqlite3_column_text(stmt, 0), - (gchar*) sqlite3_column_text(stmt, 1)); + (char*) sqlite3_column_text(stmt, 0), + (char*) sqlite3_column_text(stmt, 1)); } } sqlite3_finalize(stmt); @@ -303,21 +256,21 @@ pk_backend_search_files_thread(PkBackendJob *job, GVariant *params, gpointer use } void -pk_backend_search_files(PkBackend *backend, PkBackendJob *job, PkBitfield filters, gchar **values) +pk_backend_search_files(PkBackend *backend, PkBackendJob *job, PkBitfield filters, char **values) { - pk_backend_job_thread_create(job, pk_backend_search_files_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_search_files_thread, nullptr, nullptr); } static void -pk_backend_get_details_thread(PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_get_details_thread(PkBackendJob *job, GVariant *params, void *user_data) { - gchar **pkg_ids, *homepage = NULL; - gchar** tokens; + char **pkg_ids, *homepage = nullptr; + char** tokens; gsize i; GString *desc; GRegex *expr; GMatchInfo *match_info; - GError *err = NULL; + GError *err = nullptr; sqlite3_stmt *stmt; auto job_data = static_cast (pk_backend_job_get_user_data(job)); @@ -330,7 +283,7 @@ pk_backend_get_details_thread(PkBackendJob *job, GVariant *params, gpointer user "WHERE name LIKE @name AND r.repo LIKE @repo AND ext NOT LIKE 'obsolete'", -1, &stmt, - NULL) != SQLITE_OK)) { + nullptr) != SQLITE_OK)) { pk_backend_job_error_code(job, PK_ERROR_ENUM_CANNOT_GET_FILELIST, "%s", sqlite3_errmsg(job_data->db)); goto out; } @@ -343,7 +296,7 @@ pk_backend_get_details_thread(PkBackendJob *job, GVariant *params, gpointer user if (sqlite3_step(stmt) != SQLITE_ROW) goto out; - desc = g_string_new((gchar *) sqlite3_column_text(stmt, 0)); + desc = g_string_new((char *) sqlite3_column_text(stmt, 0)); /* Regular expression for searching a homepage */ expr = g_regex_new("(?:http|ftp):\\/\\/[[:word:]\\/\\-\\.]+[[:word:]\\/](?=\\.?$)", @@ -375,9 +328,9 @@ pk_backend_get_details_thread(PkBackendJob *job, GVariant *params, gpointer user /* Ready */ pk_backend_job_details(job, pkg_ids[0], - NULL, - NULL, - pk_group_enum_from_string((gchar *) sqlite3_column_text(stmt, 1)), + nullptr, + nullptr, + pk_group_enum_from_string((char *) sqlite3_column_text(stmt, 1)), desc->str, homepage, sqlite3_column_int(stmt, 2), @@ -386,7 +339,7 @@ pk_backend_get_details_thread(PkBackendJob *job, GVariant *params, gpointer user g_free(homepage); if (desc) { - g_string_free(desc, TRUE); + g_string_free(desc, true); } out: @@ -394,15 +347,15 @@ out: } void -pk_backend_get_details(PkBackend *backend, PkBackendJob *job, gchar **package_ids) +pk_backend_get_details(PkBackend *backend, PkBackendJob *job, char **package_ids) { - pk_backend_job_thread_create(job, pk_backend_get_details_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_get_details_thread, nullptr, nullptr); } static void -pk_backend_resolve_thread(PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_resolve_thread(PkBackendJob *job, GVariant *params, void *user_data) { - gchar **vals, **val; + char **vals, **val; sqlite3_stmt *stmt; PkInfoEnum ret; auto job_data = static_cast (pk_backend_job_get_user_data(job)); @@ -410,7 +363,7 @@ pk_backend_resolve_thread(PkBackendJob *job, GVariant *params, gpointer user_dat pk_backend_job_set_status(job, PK_STATUS_ENUM_QUERY); pk_backend_job_set_percentage(job, 0); - g_variant_get(params, "(t^a&s)", NULL, &vals); + g_variant_get(params, "(t^a&s)", nullptr, &vals); if ((sqlite3_prepare_v2(job_data->db, "SELECT (p1.name || ';' || p1.ver || ';' || p1.arch || ';' || r.repo), p1.summary, " @@ -419,7 +372,7 @@ pk_backend_resolve_thread(PkBackendJob *job, GVariant *params, gpointer user_dat "(SELECT MIN(p2.repo_order) FROM pkglist AS p2 WHERE p2.name = p1.name GROUP BY p2.name)", -1, &stmt, - NULL) == SQLITE_OK)) { + nullptr) == SQLITE_OK)) { /* Output packages matching each pattern */ for (val = vals; *val; val++) { @@ -427,18 +380,18 @@ pk_backend_resolve_thread(PkBackendJob *job, GVariant *params, gpointer user_dat while (sqlite3_step(stmt) == SQLITE_ROW) { - ret = is_installed((gchar*) sqlite3_column_text(stmt, 2)); + ret = is_installed((char*) sqlite3_column_text(stmt, 2)); if ((ret == PK_INFO_ENUM_INSTALLED) || (ret == PK_INFO_ENUM_UPDATING)) { pk_backend_job_package(job, PK_INFO_ENUM_INSTALLED, - (gchar*) sqlite3_column_text(stmt, 0), - (gchar*) sqlite3_column_text(stmt, 1)); + (char*) sqlite3_column_text(stmt, 0), + (char*) sqlite3_column_text(stmt, 1)); } else if (ret == PK_INFO_ENUM_INSTALLING) { pk_backend_job_package(job, PK_INFO_ENUM_AVAILABLE, - (gchar*) sqlite3_column_text(stmt, 0), - (gchar*) sqlite3_column_text(stmt, 1)); + (char*) sqlite3_column_text(stmt, 0), + (char*) sqlite3_column_text(stmt, 1)); } } @@ -454,16 +407,16 @@ pk_backend_resolve_thread(PkBackendJob *job, GVariant *params, gpointer user_dat } void -pk_backend_resolve(PkBackend *backend, PkBackendJob *job, PkBitfield filters, gchar **packages) +pk_backend_resolve(PkBackend *backend, PkBackendJob *job, PkBitfield filters, char **packages) { - pk_backend_job_thread_create(job, pk_backend_resolve_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_resolve_thread, nullptr, nullptr); } static void -pk_backend_download_packages_thread(PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_download_packages_thread(PkBackendJob *job, GVariant *params, void *user_data) { - gchar *dir_path, *path, **pkg_ids, *to_strv[] = {NULL, NULL}; - guint i; + char *dir_path, *path, **pkg_ids, *to_strv[] = {nullptr, nullptr}; + unsigned i; sqlite3_stmt *stmt; auto job_data = static_cast (pk_backend_job_get_user_data(job)); @@ -475,7 +428,7 @@ pk_backend_download_packages_thread(PkBackendJob *job, GVariant *params, gpointe "WHERE name LIKE @name AND ver LIKE @ver AND arch LIKE @arch AND repo LIKE @repo", -1, &stmt, - NULL) != SQLITE_OK)) + nullptr) != SQLITE_OK)) { pk_backend_job_error_code(job, PK_ERROR_ENUM_CANNOT_GET_FILELIST, "%s", sqlite3_errmsg(job_data->db)); goto out; @@ -483,7 +436,7 @@ pk_backend_download_packages_thread(PkBackendJob *job, GVariant *params, gpointe for (i = 0; pkg_ids[i]; ++i) { - gchar **tokens = pk_package_id_split(pkg_ids[i]); + char **tokens = pk_package_id_split(pkg_ids[i]); sqlite3_bind_text(stmt, 1, tokens[PK_PACKAGE_ID_NAME], -1, SQLITE_TRANSIENT); sqlite3_bind_text(stmt, 2, tokens[PK_PACKAGE_ID_VERSION], -1, SQLITE_TRANSIENT); @@ -496,12 +449,12 @@ pk_backend_download_packages_thread(PkBackendJob *job, GVariant *params, gpointe { pk_backend_job_package(job, PK_INFO_ENUM_DOWNLOADING, pkg_ids[i], - (gchar *) sqlite3_column_text(stmt, 0)); + (char *) sqlite3_column_text(stmt, 0)); static_cast (repo->data)->download (job, dir_path, tokens[PK_PACKAGE_ID_NAME]); - path = g_build_filename(dir_path, (gchar *) sqlite3_column_text(stmt, 1), NULL); + path = g_build_filename(dir_path, (char *) sqlite3_column_text(stmt, 1), nullptr); to_strv[0] = path; - pk_backend_job_files(job, NULL, to_strv); + pk_backend_job_files(job, nullptr, to_strv); g_free(path); } } @@ -515,20 +468,20 @@ out: } void -pk_backend_download_packages(PkBackend *backend, PkBackendJob *job, gchar **package_ids, const gchar *directory) +pk_backend_download_packages(PkBackend *backend, PkBackendJob *job, char **package_ids, const char *directory) { - pk_backend_job_thread_create(job, pk_backend_download_packages_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_download_packages_thread, nullptr, nullptr); } static void -pk_backend_install_packages_thread(PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_install_packages_thread(PkBackendJob *job, GVariant *params, void *user_data) { - gchar *dest_dir_name; - gchar **pkg_ids; - guint i; + char *dest_dir_name; + char **pkg_ids; + unsigned i; gdouble percent_step; - GSList *install_list = NULL, *l; - sqlite3_stmt *pkglist_stmt = NULL, *collection_stmt = NULL; + GSList *install_list = nullptr, *l; + sqlite3_stmt *pkglist_stmt = nullptr, *collection_stmt = nullptr; PkBitfield transaction_flags = 0; PkInfoEnum ret; auto job_data = static_cast (pk_backend_job_get_user_data(job)); @@ -541,7 +494,7 @@ pk_backend_install_packages_thread(PkBackendJob *job, GVariant *params, gpointer "WHERE name LIKE @name AND ver LIKE @ver AND arch LIKE @arch AND repo LIKE @repo", -1, &pkglist_stmt, - NULL) != SQLITE_OK) || + nullptr) != SQLITE_OK) || (sqlite3_prepare_v2(job_data->db, "SELECT (c.collection_pkg || ';' || p.ver || ';' || p.arch || ';' || r.repo), p.summary, " "p.full_name, p.ext FROM collections AS c " @@ -550,7 +503,7 @@ pk_backend_install_packages_thread(PkBackendJob *job, GVariant *params, gpointer "WHERE c.name LIKE @name AND r.repo LIKE @repo", -1, &collection_stmt, - NULL) != SQLITE_OK)) + nullptr) != SQLITE_OK)) { pk_backend_job_error_code(job, PK_ERROR_ENUM_CANNOT_GET_FILELIST, "%s", sqlite3_errmsg(job_data->db)); goto out; @@ -558,7 +511,7 @@ pk_backend_install_packages_thread(PkBackendJob *job, GVariant *params, gpointer for (i = 0; pkg_ids[i]; i++) { - gchar **tokens = pk_package_id_split(pkg_ids[i]); + char **tokens = pk_package_id_split(pkg_ids[i]); sqlite3_bind_text(pkglist_stmt, 1, tokens[PK_PACKAGE_ID_NAME], -1, SQLITE_TRANSIENT); sqlite3_bind_text(pkglist_stmt, 2, tokens[PK_PACKAGE_ID_VERSION], -1, SQLITE_TRANSIENT); sqlite3_bind_text(pkglist_stmt, 3, tokens[PK_PACKAGE_ID_ARCH], -1, SQLITE_TRANSIENT); @@ -567,13 +520,13 @@ pk_backend_install_packages_thread(PkBackendJob *job, GVariant *params, gpointer if (sqlite3_step(pkglist_stmt) == SQLITE_ROW) { /* If it isn't a collection */ - if (g_strcmp0((gchar *) sqlite3_column_text(pkglist_stmt, 1), "collections")) + if (g_strcmp0((char *) sqlite3_column_text(pkglist_stmt, 1), "collections")) { if (pk_bitfield_contain(transaction_flags, PK_TRANSACTION_FLAG_ENUM_SIMULATE)) { pk_backend_job_package(job, PK_INFO_ENUM_INSTALLING, pkg_ids[i], - (gchar *) sqlite3_column_text(pkglist_stmt, 0)); + (char *) sqlite3_column_text(pkglist_stmt, 0)); } else { @@ -587,24 +540,24 @@ pk_backend_install_packages_thread(PkBackendJob *job, GVariant *params, gpointer while (sqlite3_step(collection_stmt) == SQLITE_ROW) { - ret = is_installed((gchar*) sqlite3_column_text(collection_stmt, 2)); + ret = is_installed((char*) sqlite3_column_text(collection_stmt, 2)); if ((ret == PK_INFO_ENUM_INSTALLING) || (ret == PK_INFO_ENUM_UPDATING)) { if ((pk_bitfield_contain(transaction_flags, PK_TRANSACTION_FLAG_ENUM_SIMULATE)) && - !g_strcmp0((gchar *) sqlite3_column_text(collection_stmt, 3), "obsolete")) + !g_strcmp0((char *) sqlite3_column_text(collection_stmt, 3), "obsolete")) { /* TODO: Don't just skip obsolete packages but remove them */ } else if (pk_bitfield_contain(transaction_flags, PK_TRANSACTION_FLAG_ENUM_SIMULATE)) { pk_backend_job_package(job, ret, - (gchar *) sqlite3_column_text(collection_stmt, 0), - (gchar *) sqlite3_column_text(collection_stmt, 1)); + (char *) sqlite3_column_text(collection_stmt, 0), + (char *) sqlite3_column_text(collection_stmt, 1)); } else { install_list = g_slist_append(install_list, - g_strdup((gchar *) sqlite3_column_text(collection_stmt, 0))); + g_strdup((char *) sqlite3_column_text(collection_stmt, 0))); } } } @@ -625,14 +578,14 @@ pk_backend_install_packages_thread(PkBackendJob *job, GVariant *params, gpointer /* Download the packages */ pk_backend_job_set_status(job, PK_STATUS_ENUM_DOWNLOAD); - dest_dir_name = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "downloads", NULL); + dest_dir_name = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "downloads", nullptr); for (l = install_list, i = 0; l; l = g_slist_next(l), i++) { - gchar **tokens; + char **tokens; GSList *repo; pk_backend_job_set_percentage(job, percent_step * i); - tokens = pk_package_id_split((gchar *)(l->data)); + tokens = pk_package_id_split((char *)(l->data)); repo = g_slist_find_custom(repos, tokens[PK_PACKAGE_ID_DATA], cmp_repo); if (repo) @@ -648,11 +601,11 @@ pk_backend_install_packages_thread(PkBackendJob *job, GVariant *params, gpointer pk_backend_job_set_status(job, PK_STATUS_ENUM_INSTALL); for (l = install_list; l; l = g_slist_next(l), i++) { - gchar **tokens; + char **tokens; GSList *repo; pk_backend_job_set_percentage(job, percent_step * i); - tokens = pk_package_id_split((gchar *)(l->data)); + tokens = pk_package_id_split((char *)(l->data)); repo = g_slist_find_custom(repos, tokens[PK_PACKAGE_ID_DATA], cmp_repo); if (repo) @@ -673,19 +626,19 @@ void pk_backend_install_packages(PkBackend *backend, PkBackendJob *job, PkBitfield transaction_flags, - gchar **package_ids) + char **package_ids) { - pk_backend_job_thread_create(job, pk_backend_install_packages_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_install_packages_thread, nullptr, nullptr); } static void -pk_backend_remove_packages_thread(PkBackendJob* job, GVariant* params, gpointer user_data) +pk_backend_remove_packages_thread(PkBackendJob* job, GVariant* params, void *user_data) { - gchar **pkg_ids, *cmd_line; - guint i; + char **pkg_ids, *cmd_line; + unsigned i; gdouble percent_step; - gboolean allow_deps, autoremove; - GError *err = NULL; + bool allow_deps, autoremove; + GError *err = nullptr; PkBitfield transaction_flags = 0; g_variant_get(params, "(t^a&sbb)", &transaction_flags, &pkg_ids, &allow_deps, &autoremove); @@ -702,14 +655,14 @@ pk_backend_remove_packages_thread(PkBackendJob* job, GVariant* params, gpointer percent_step = 100.0 / g_strv_length(pkg_ids); for (i = 0; pkg_ids[i]; i++) { - gchar **tokens; + char **tokens; pk_backend_job_set_percentage(job, percent_step * i); tokens = pk_package_id_split(pkg_ids[i]); - cmd_line = g_strconcat("/sbin/removepkg ", tokens[PK_PACKAGE_ID_NAME], NULL); + cmd_line = g_strconcat("/sbin/removepkg ", tokens[PK_PACKAGE_ID_NAME], nullptr); /* Pkgtools return always 0 */ - g_spawn_command_line_sync(cmd_line, NULL, NULL, NULL, &err); + g_spawn_command_line_sync(cmd_line, nullptr, nullptr, nullptr, &err); g_free(cmd_line); g_strfreev(tokens); @@ -731,22 +684,22 @@ void pk_backend_remove_packages(PkBackend *backend, PkBackendJob *job, PkBitfield transaction_flags, - gchar **package_ids, - gboolean allow_deps, - gboolean autoremove) + char **package_ids, + bool allow_deps, + bool autoremove) { - pk_backend_job_thread_create(job, pk_backend_remove_packages_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_remove_packages_thread, nullptr, nullptr); } static void -pk_backend_get_updates_thread(PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_get_updates_thread(PkBackendJob *job, GVariant *params, void *user_data) { - gchar *pkg_id, *full_name, *desc; - const gchar *pkg_metadata_filename; + char *pkg_id, *full_name, *desc; + const char *pkg_metadata_filename; GFile *pkg_metadata_dir; GFileEnumerator *pkg_metadata_enumerator; GFileInfo *pkg_metadata_file_info; - GError *err = NULL; + GError *err = nullptr; sqlite3_stmt *stmt; auto job_data = static_cast (pk_backend_job_get_user_data(job)); @@ -759,7 +712,7 @@ pk_backend_get_updates_thread(PkBackendJob *job, GVariant *params, gpointer user "(SELECT MIN(p2.repo_order) FROM pkglist AS p2 WHERE p2.name = p1.name GROUP BY p2.name)", -1, &stmt, - NULL) != SQLITE_OK)) + nullptr) != SQLITE_OK)) { pk_backend_job_error_code(job, PK_ERROR_ENUM_CANNOT_GET_FILELIST, "%s", sqlite3_errmsg(job_data->db)); goto out; @@ -769,7 +722,7 @@ pk_backend_get_updates_thread(PkBackendJob *job, GVariant *params, gpointer user pkg_metadata_dir = g_file_new_for_path("/var/log/packages"); pkg_metadata_enumerator = g_file_enumerate_children(pkg_metadata_dir, "standard::name", G_FILE_QUERY_INFO_NONE, - NULL, + nullptr, &err); g_object_unref(pkg_metadata_dir); if (err) @@ -779,9 +732,9 @@ pk_backend_get_updates_thread(PkBackendJob *job, GVariant *params, gpointer user goto out; } - while ((pkg_metadata_file_info = g_file_enumerator_next_file(pkg_metadata_enumerator, NULL, NULL))) + while ((pkg_metadata_file_info = g_file_enumerator_next_file(pkg_metadata_enumerator, nullptr, nullptr))) { - gchar **tokens; + char **tokens; pkg_metadata_filename = g_file_info_get_name(pkg_metadata_file_info); tokens = split_package_name(pkg_metadata_filename); @@ -792,12 +745,12 @@ pk_backend_get_updates_thread(PkBackendJob *job, GVariant *params, gpointer user /* If there are more packages with the same name, remember the one from the * repository with the lowest order. */ if ((sqlite3_step(stmt) == SQLITE_ROW) - || g_slist_find_custom(repos, ((gchar *) sqlite3_column_text(stmt, 4)), cmp_repo)) + || g_slist_find_custom(repos, ((char *) sqlite3_column_text(stmt, 4)), cmp_repo)) { - full_name = g_strdup((gchar *) sqlite3_column_text(stmt, 0)); + full_name = g_strdup((char *) sqlite3_column_text(stmt, 0)); - if (!g_strcmp0((gchar *) sqlite3_column_text(stmt, 6), "obsolete")) + if (!g_strcmp0((char *) sqlite3_column_text(stmt, 6), "obsolete")) { /* Remove if obsolete */ pkg_id = pk_package_id_build(tokens[PK_PACKAGE_ID_NAME], tokens[PK_PACKAGE_ID_VERSION], @@ -807,7 +760,7 @@ pk_backend_get_updates_thread(PkBackendJob *job, GVariant *params, gpointer user * 1: Use the repository name instead of "obsolete" above and check in pk_backend_update_packages() if the package is obsolete or not * 2: Get description from /var/log/packages, not from the database */ - desc = g_strdup((gchar *) sqlite3_column_text(stmt, 5)); + desc = g_strdup((char *) sqlite3_column_text(stmt, 5)); pk_backend_job_package(job, PK_INFO_ENUM_REMOVING, pkg_id, desc); @@ -816,11 +769,11 @@ pk_backend_get_updates_thread(PkBackendJob *job, GVariant *params, gpointer user } else if (g_strcmp0(pkg_metadata_filename, full_name)) { /* Update available */ - pkg_id = pk_package_id_build((gchar *) sqlite3_column_text(stmt, 1), - (gchar *) sqlite3_column_text(stmt, 2), - (gchar *) sqlite3_column_text(stmt, 3), - (gchar *) sqlite3_column_text(stmt, 4)); - desc = g_strdup((gchar *) sqlite3_column_text(stmt, 5)); + pkg_id = pk_package_id_build((char *) sqlite3_column_text(stmt, 1), + (char *) sqlite3_column_text(stmt, 2), + (char *) sqlite3_column_text(stmt, 3), + (char *) sqlite3_column_text(stmt, 4)); + desc = g_strdup((char *) sqlite3_column_text(stmt, 5)); pk_backend_job_package(job, PK_INFO_ENUM_NORMAL, pkg_id, desc); @@ -845,14 +798,14 @@ out: void pk_backend_get_updates(PkBackend *backend, PkBackendJob *job, PkBitfield filters) { - pk_backend_job_thread_create(job, pk_backend_get_updates_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_get_updates_thread, nullptr, nullptr); } static void -pk_backend_update_packages_thread(PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_update_packages_thread(PkBackendJob *job, GVariant *params, void *user_data) { - gchar *dest_dir_name, *cmd_line, **pkg_ids; - guint i; + char *dest_dir_name, *cmd_line, **pkg_ids; + unsigned i; PkBitfield transaction_flags = 0; g_variant_get(params, "(t^a&s)", &transaction_flags, &pkg_ids); @@ -861,10 +814,10 @@ pk_backend_update_packages_thread(PkBackendJob *job, GVariant *params, gpointer pk_backend_job_set_status(job, PK_STATUS_ENUM_DOWNLOAD); /* Download the packages */ - dest_dir_name = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "downloads", NULL); + dest_dir_name = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "downloads", nullptr); for (i = 0; pkg_ids[i]; i++) { - gchar **tokens = pk_package_id_split(pkg_ids[i]); + char **tokens = pk_package_id_split(pkg_ids[i]); if (g_strcmp0(tokens[PK_PACKAGE_ID_DATA], "obsolete")) { @@ -885,7 +838,7 @@ pk_backend_update_packages_thread(PkBackendJob *job, GVariant *params, gpointer pk_backend_job_set_status(job, PK_STATUS_ENUM_UPDATE); for (i = 0; pkg_ids[i]; i++) { - gchar **tokens = pk_package_id_split(pkg_ids[i]); + char **tokens = pk_package_id_split(pkg_ids[i]); if (g_strcmp0(tokens[PK_PACKAGE_ID_DATA], "obsolete")) { @@ -901,8 +854,8 @@ pk_backend_update_packages_thread(PkBackendJob *job, GVariant *params, gpointer { /* Remove obsolete package * TODO: Removing should be an independent operation (not during installing updates) */ - cmd_line = g_strconcat("/sbin/removepkg ", tokens[PK_PACKAGE_ID_NAME], NULL); - g_spawn_command_line_sync(cmd_line, NULL, NULL, NULL, NULL); + cmd_line = g_strconcat("/sbin/removepkg ", tokens[PK_PACKAGE_ID_NAME], nullptr); + g_spawn_command_line_sync(cmd_line, nullptr, nullptr, nullptr, nullptr); g_free(cmd_line); } g_strfreev(tokens); @@ -914,22 +867,22 @@ void pk_backend_update_packages(PkBackend *backend, PkBackendJob *job, PkBitfield transaction_flags, - gchar **package_ids) + char **package_ids) { - pk_backend_job_thread_create(job, pk_backend_update_packages_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_update_packages_thread, nullptr, nullptr); } static void -pk_backend_refresh_cache_thread(PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_refresh_cache_thread(PkBackendJob *job, GVariant *params, void *user_data) { - gchar *tmp_dir_name, *db_err, *path = NULL; - gint ret; - gboolean force; - GSList *file_list = NULL; - GFile *db_file = NULL; - GFileInfo *file_info = NULL; - GError *err = NULL; - sqlite3_stmt *stmt = NULL; + char *tmp_dir_name, *db_err, *path = nullptr; + int ret; + bool force; + GSList *file_list = nullptr; + GFile *db_file = nullptr; + GFileInfo *file_info = nullptr; + GError *err = nullptr; + sqlite3_stmt *stmt = nullptr; auto job_data = static_cast (pk_backend_job_get_user_data(job)); pk_backend_job_set_status(job, PK_STATUS_ENUM_DOWNLOAD_CHANGELOG); @@ -948,9 +901,9 @@ pk_backend_refresh_cache_thread(PkBackendJob *job, GVariant *params, gpointer us /* Force the complete cache refresh if the read configuration file is newer than the metadata cache */ if (!force) { - path = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "metadata", "metadata.db", NULL); + path = g_build_filename(LOCALSTATEDIR, "cache", "PackageKit", "metadata", "metadata.db", nullptr); db_file = g_file_new_for_path(path); - file_info = g_file_query_info(db_file, "time::modified-usec", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, NULL, &err); + file_info = g_file_query_info(db_file, "time::modified-usec", G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, nullptr, &err); if (err) { pk_backend_job_error_code(job, PK_ERROR_ENUM_NO_CACHE, "%s: %s", path, err->message); @@ -961,7 +914,7 @@ pk_backend_refresh_cache_thread(PkBackendJob *job, GVariant *params, gpointer us "SELECT value FROM cache_info WHERE key LIKE 'last_modification'", -1, &stmt, - NULL); + nullptr); if ((ret != SQLITE_OK) || ((ret = sqlite3_step(stmt)) != SQLITE_ROW)) { pk_backend_job_error_code(job, @@ -971,14 +924,14 @@ pk_backend_refresh_cache_thread(PkBackendJob *job, GVariant *params, gpointer us sqlite3_errstr(ret)); goto out; } - if ((guint32) sqlite3_column_int(stmt, 0) > g_file_info_get_attribute_uint32(file_info, "time::modified-usec")) + if ((std::uint32_t) sqlite3_column_int(stmt, 0) > g_file_info_get_attribute_uint32(file_info, "time::modified-usec")) { - force = TRUE; + force = true; } } if (force) /* It should empty all tables */ { - if (sqlite3_exec(job_data->db, "DELETE FROM repos", NULL, 0, &db_err) != SQLITE_OK) + if (sqlite3_exec(job_data->db, "DELETE FROM repos", nullptr, 0, &db_err) != SQLITE_OK) { pk_backend_job_error_code(job, PK_ERROR_ENUM_INTERNAL_ERROR, "%s", db_err); sqlite3_free(db_err); @@ -998,8 +951,8 @@ pk_backend_refresh_cache_thread(PkBackendJob *job, GVariant *params, gpointer us for (GSList *l = file_list; l; l = g_slist_next(l)) { - get_file(&job_data->curl, static_cast (l->data)[0], - static_cast (l->data)[1]); + get_file(&job_data->curl, static_cast (l->data)[0], + static_cast (l->data)[1]); } g_slist_free_full(file_list, (GDestroyNotify)g_strfreev); @@ -1029,43 +982,43 @@ out: } void -pk_backend_refresh_cache(PkBackend *backend, PkBackendJob *job, gboolean force) +pk_backend_refresh_cache(PkBackend *backend, PkBackendJob *job, bool force) { - pk_backend_job_thread_create(job, pk_backend_refresh_cache_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_refresh_cache_thread, nullptr, nullptr); } static void -pk_backend_get_update_detail_thread(PkBackendJob *job, GVariant *params, gpointer user_data) +pk_backend_get_update_detail_thread(PkBackendJob *job, GVariant *params, void *user_data) { - guint i; - gchar **pkg_ids; + unsigned i; + char **pkg_ids; pk_backend_job_set_status(job, PK_STATUS_ENUM_QUERY); g_variant_get(params, "(^a&s)", &pkg_ids); - for (i = 0; pkg_ids[i] != NULL; i++) + for (i = 0; pkg_ids[i] != nullptr; i++) { pk_backend_job_update_detail (job, pkg_ids[i], - NULL, - NULL, - NULL, - NULL, - NULL, + nullptr, + nullptr, + nullptr, + nullptr, + nullptr, PK_RESTART_ENUM_NONE, - NULL, - NULL, + nullptr, + nullptr, PK_UPDATE_STATE_ENUM_STABLE, - NULL, - NULL); + nullptr, + nullptr); } } void -pk_backend_get_update_detail(PkBackend *backend, PkBackendJob *job, gchar **package_ids) +pk_backend_get_update_detail(PkBackend *backend, PkBackendJob *job, char **package_ids) { - pk_backend_job_thread_create(job, pk_backend_get_update_detail_thread, NULL, NULL); + pk_backend_job_thread_create(job, pk_backend_get_update_detail_thread, nullptr, nullptr); } PkBitfield diff --git a/backend/pkgtools.cc b/backend/pkgtools.cc index 083036a..6ffbaff 100644 --- a/backend/pkgtools.cc +++ b/backend/pkgtools.cc @@ -1,7 +1,11 @@ +/* + * 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 #include #include "pkgtools.h" -#include "utils.h" namespace slack { @@ -15,46 +19,45 @@ namespace slack { * * Returns: %TRUE on success, %FALSE otherwise. **/ -gboolean -Pkgtools::download (PkBackendJob *job, - gchar *dest_dir_name, gchar *pkg_name) noexcept +bool +Pkgtools::download (JobData *job_data, + char *dest_dir_name, char *pkg_name) noexcept { - gchar *dest_filename, *source_url; - gboolean ret = FALSE; - sqlite3_stmt *statement = NULL; - CURL *curl = NULL; - auto job_data = static_cast (pk_backend_job_get_user_data(job)); + 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, - NULL) != SQLITE_OK)) - return FALSE; + 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), NULL); + 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), - NULL); + nullptr); if (!g_file_test(dest_filename, G_FILE_TEST_EXISTS)) { if (get_file(&curl, source_url, dest_filename) == CURLE_OK) { - ret = TRUE; + ret = true; } } else { - ret = TRUE; + ret = true; } if (curl) @@ -71,24 +74,23 @@ Pkgtools::download (PkBackendJob *job, /** * slack::Pkgtools::install: - * @job: A #PkBackendJob. + * @job_data: A #JobData. * @pkg_name: Package name. * * Install a package. **/ void -Pkgtools::install (PkBackendJob *job, gchar *pkg_name) noexcept +Pkgtools::install (JobData *job_data, char *pkg_name) noexcept { - gchar *pkg_filename, *cmd_line; - sqlite3_stmt *statement = NULL; - auto job_data = static_cast (pk_backend_job_get_user_data(job)); + 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, - NULL) != SQLITE_OK)) + nullptr) != SQLITE_OK)) { return; } @@ -103,9 +105,9 @@ Pkgtools::install (PkBackendJob *job, gchar *pkg_name) noexcept "PackageKit", "downloads", sqlite3_column_text(statement, 0), - NULL); - cmd_line = g_strconcat("/sbin/upgradepkg --install-new ", pkg_filename, NULL); - g_spawn_command_line_sync(cmd_line, NULL, NULL, NULL, NULL); + 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); @@ -124,7 +126,7 @@ Pkgtools::~Pkgtools () noexcept * * Returns: Repository name. **/ -const gchar * +const char * Pkgtools::get_name () const noexcept { return this->name; @@ -137,7 +139,7 @@ Pkgtools::get_name () const noexcept * * Returns: Repository mirror. **/ -const gchar * +const char * Pkgtools::get_mirror () const noexcept { return this->mirror; @@ -164,12 +166,12 @@ Pkgtools::get_order () const noexcept * * Returns: %TRUE if the package is blacklisted, %FALSE otherwise. **/ -gboolean -Pkgtools::is_blacklisted (const gchar *pkg) const noexcept +bool +Pkgtools::is_blacklisted (const char *pkg) const noexcept { return this->blacklist && g_regex_match (this->blacklist, - pkg, static_cast (0), NULL); + pkg, static_cast (0), nullptr); } } diff --git a/backend/pkgtools.h b/backend/pkgtools.h index cedf315..b590232 100644 --- a/backend/pkgtools.h +++ b/backend/pkgtools.h @@ -1,36 +1,40 @@ -#ifndef __SLACK_PKGTOOLS_H -#define __SLACK_PKGTOOLS_H +/* + * 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/. + */ +#pragma once +#include #include #include +#include "utils.h" namespace slack { class Pkgtools { public: - const gchar *get_name () const noexcept; - const gchar *get_mirror () const noexcept; - guint8 get_order () const noexcept; - gboolean is_blacklisted (const gchar *pkg) const noexcept; + const char *get_name () const noexcept; + const char *get_mirror () const noexcept; + std::uint8_t get_order () const noexcept; + bool is_blacklisted (const char *pkg) const noexcept; virtual ~Pkgtools () noexcept; - gboolean download (PkBackendJob *job, - gchar *dest_dir_name, gchar *pkg_name) noexcept; - void install (PkBackendJob *job, gchar *pkg_name) noexcept; + bool download (JobData *job_data, + char *dest_dir_name, char *pkg_name) noexcept; + void install (JobData *job_data, char *pkg_name) noexcept; - virtual GSList *collect_cache_info (const gchar *tmpl) noexcept = 0; - virtual void generate_cache (PkBackendJob *job, - const gchar *tmpl) noexcept = 0; + virtual GSList *collect_cache_info (const char *tmpl) noexcept = 0; + virtual void generate_cache (JobData *job_data, + const char *tmpl) noexcept = 0; protected: - gchar *name = NULL; - gchar *mirror = NULL; - guint8 order; - GRegex *blacklist = NULL; + char *name = nullptr; + char *mirror = nullptr; + std::uint8_t order; + GRegex *blacklist = nullptr; }; } - -#endif /* __SLACK_PKGTOOLS_H */ diff --git a/backend/slackpkg.cc b/backend/slackpkg.cc index d10fac2..9e99535 100644 --- a/backend/slackpkg.cc +++ b/backend/slackpkg.cc @@ -7,7 +7,7 @@ namespace slack { -GHashTable *Slackpkg::cat_map = NULL; +GHashTable *Slackpkg::cat_map = nullptr; /* * slack::Slackpkg::manifest: @@ -19,24 +19,24 @@ GHashTable *Slackpkg::cat_map = NULL; */ void Slackpkg::manifest (PkBackendJob *job, - const gchar *tmpl, gchar *filename) noexcept + const char *tmpl, char *filename) noexcept { FILE *manifest; - gint err, read_len; - guint pos; - gchar buf[max_buf_size], *path, *pkg_filename, *rest = NULL, *start; - gchar *full_name = NULL; - gchar **line, **lines; + int err, read_len; + unsigned pos; + char buf[max_buf_size], *path, *pkg_filename, *rest = nullptr, *start; + char *full_name = nullptr; + char **line, **lines; BZFILE *manifest_bz2; - GRegex *pkg_expr = NULL, *file_expr = NULL; + GRegex *pkg_expr = nullptr, *file_expr = nullptr; GMatchInfo *match_info; - sqlite3_stmt *statement = NULL; + sqlite3_stmt *statement = nullptr; auto job_data = static_cast (pk_backend_job_get_user_data(job)); path = g_build_filename(tmpl, this->get_name (), filename, - NULL); + nullptr); manifest = fopen(path, "rb"); g_free(path); @@ -44,7 +44,7 @@ Slackpkg::manifest (PkBackendJob *job, { return; } - if (!(manifest_bz2 = BZ2_bzReadOpen(&err, manifest, 0, 0, NULL, 0))) + if (!(manifest_bz2 = BZ2_bzReadOpen(&err, manifest, 0, 0, nullptr, 0))) { goto out; } @@ -53,14 +53,14 @@ Slackpkg::manifest (PkBackendJob *job, pkg_expr = g_regex_new("^\\|\\|[[:blank:]]+Package:[[:blank:]]+.+\\/(.+)\\.(t[blxg]z$)?", static_cast (G_REGEX_OPTIMIZE | G_REGEX_DUPNAMES), static_cast (0), - NULL); + nullptr); file_expr = g_regex_new("^[-bcdlps][-r][-w][-xsS][-r][-w][-xsS][-r][-w]" "[-xtT][[:space:]][^[:space:]]+[[:space:]]+" "[[:digit:]]+[[:space:]][[:digit:]-]+[[:space:]]" "[[:digit:]:]+[[:space:]](?!install\\/|\\.)(.*)", static_cast (G_REGEX_OPTIMIZE | G_REGEX_DUPNAMES), static_cast (0), - NULL); + nullptr); if (!(file_expr) || !(pkg_expr)) { goto out; @@ -71,12 +71,12 @@ Slackpkg::manifest (PkBackendJob *job, "INSERT INTO filelist (full_name, filename) VALUES (@full_name, @filename)", -1, &statement, - NULL) != SQLITE_OK) + nullptr) != SQLITE_OK) { goto out; } - sqlite3_exec(job_data->db, "BEGIN TRANSACTION", NULL, NULL, NULL); + sqlite3_exec(job_data->db, "BEGIN TRANSACTION", nullptr, nullptr, nullptr); while ((read_len = BZ2_bzRead(&err, manifest_bz2, buf, max_buf_size - 1))) { if ((err != BZ_OK) && (err != BZ_STREAM_END)) @@ -90,7 +90,7 @@ Slackpkg::manifest (PkBackendJob *job, if (rest) { /* Add to the first line rest characters from the previous read operation */ start = lines[0]; - lines[0] = g_strconcat(rest, lines[0], NULL); + lines[0] = g_strconcat(rest, lines[0], nullptr); g_free(start); g_free(rest); } @@ -98,7 +98,7 @@ Slackpkg::manifest (PkBackendJob *job, { pos = g_strv_length(lines) - 1; rest = lines[pos]; - lines[pos] = NULL; + lines[pos] = nullptr; } for (line = lines; *line; line++) { @@ -111,12 +111,12 @@ Slackpkg::manifest (PkBackendJob *job, } else { - full_name = NULL; + full_name = nullptr; } } g_match_info_free(match_info); - match_info = NULL; + match_info = nullptr; if (full_name && g_regex_match(file_expr, *line, static_cast (0), &match_info)) { pkg_filename = g_match_info_fetch(match_info, 1); @@ -132,7 +132,7 @@ Slackpkg::manifest (PkBackendJob *job, g_strfreev(lines); } - sqlite3_exec(job_data->db, "END TRANSACTION", NULL, NULL, NULL); + sqlite3_exec(job_data->db, "END TRANSACTION", nullptr, nullptr, nullptr); g_free(full_name); BZ2_bzReadClose(&err, manifest_bz2); @@ -159,33 +159,33 @@ out: * Returns: List of files needed for building the cache. **/ GSList * -Slackpkg::collect_cache_info (const gchar *tmpl) noexcept +Slackpkg::collect_cache_info (const char *tmpl) noexcept { - CURL *curl = NULL; - gchar **source_dest; - GSList *file_list = NULL; + CURL *curl = nullptr; + char **source_dest; + GSList *file_list = nullptr; GFile *tmp_dir, *repo_tmp_dir; /* Create the temporary directory for the repository */ tmp_dir = g_file_new_for_path(tmpl); repo_tmp_dir = g_file_get_child(tmp_dir, this->get_name ()); - g_file_make_directory(repo_tmp_dir, NULL, NULL); + g_file_make_directory(repo_tmp_dir, nullptr, nullptr); /* Download PACKAGES.TXT. These files are most important, break if some of them couldn't be found */ - for (gchar **cur_priority = this->priority; *cur_priority; cur_priority++) + for (char **cur_priority = this->priority; *cur_priority; cur_priority++) { - source_dest = static_cast (g_malloc_n(3, sizeof(gchar *))); + source_dest = static_cast (g_malloc_n(3, sizeof(char *))); source_dest[0] = g_strconcat(this->get_mirror (), *cur_priority, "/PACKAGES.TXT", - NULL); + nullptr); source_dest[1] = g_build_filename(tmpl, this->get_name (), "PACKAGES.TXT", - NULL); - source_dest[2] = NULL; + nullptr); + source_dest[2] = nullptr; - if (get_file(&curl, source_dest[0], NULL) == CURLE_OK) + if (get_file(&curl, source_dest[0], nullptr) == CURLE_OK) { file_list = g_slist_prepend(file_list, source_dest); } @@ -197,17 +197,17 @@ Slackpkg::collect_cache_info (const gchar *tmpl) noexcept } /* Download file lists if available */ - source_dest = static_cast (g_malloc_n(3, sizeof(gchar *))); + source_dest = static_cast (g_malloc_n(3, sizeof(char *))); source_dest[0] = g_strconcat(this->get_mirror (), *cur_priority, "/MANIFEST.bz2", - NULL); + nullptr); source_dest[1] = g_strconcat(tmpl, "/", this->get_name (), "/", *cur_priority, "-MANIFEST.bz2", - NULL); - source_dest[2] = NULL; - if (get_file(&curl, source_dest[0], NULL) == CURLE_OK) + nullptr); + source_dest[2] = nullptr; + if (get_file(&curl, source_dest[0], nullptr) == CURLE_OK) { file_list = g_slist_prepend(file_list, source_dest); } @@ -229,7 +229,7 @@ out: /** * slack::Slackpkg::generate_cache: - * @job: A #PkBackendJob. + * @job_data: A #JobData. * @tmpl: temporary directory for downloading the files. * * Download files needed to get the information like the list of packages @@ -238,26 +238,25 @@ out: * Returns: List of files needed for building the cache. **/ void -Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept +Slackpkg::generate_cache (JobData *job_data, const char *tmpl) noexcept { - gchar **pkg_tokens = NULL; - gchar *query = NULL, *filename = NULL, *location = NULL, *summary = NULL, *line, *packages_txt; - guint pkg_compressed = 0, pkg_uncompressed = 0; + char **pkg_tokens = nullptr; + char *query = nullptr, *filename = nullptr, *location = nullptr, *summary = nullptr, *line, *packages_txt; + unsigned pkg_compressed = 0, pkg_uncompressed = 0; gushort pkg_name_len; GString *desc; GFile *list_file; - GFileInputStream *fin = NULL; - GDataInputStream *data_in = NULL; - sqlite3_stmt *insert_statement = NULL, *update_statement = NULL, *insert_default_statement = NULL, *statement; - auto job_data = static_cast (pk_backend_job_get_user_data(job)); + GFileInputStream *fin = nullptr; + GDataInputStream *data_in = nullptr; + sqlite3_stmt *insert_statement = nullptr, *update_statement = nullptr, *insert_default_statement = nullptr, *statement; /* Check if the temporary directory for this repository exists, then the file metadata have to be generated */ packages_txt = g_build_filename(tmpl, this->get_name (), "PACKAGES.TXT", - NULL); + nullptr); list_file = g_file_new_for_path(packages_txt); - fin = g_file_read(list_file, NULL, NULL); + fin = g_file_read(list_file, nullptr, nullptr); g_object_unref(list_file); g_free(packages_txt); if (!fin) @@ -269,7 +268,7 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept "DELETE FROM repos WHERE repo LIKE @repo", -1, &statement, - NULL) == SQLITE_OK) + nullptr) == SQLITE_OK) { sqlite3_bind_text(statement, 1, @@ -283,7 +282,7 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept "INSERT INTO repos (repo_order, repo) VALUES (@repo_order, @repo)", -1, &statement, - NULL) != SQLITE_OK) + nullptr) != SQLITE_OK) { goto out; } @@ -304,7 +303,7 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept "@desc, @compressed, @uncompressed, @name, @repo_order, @cat)", -1, &insert_statement, - NULL) != SQLITE_OK) + nullptr) != SQLITE_OK) || (sqlite3_prepare_v2(job_data->db, "INSERT OR REPLACE INTO pkglist (full_name, ver, arch, ext, location, " "summary, desc, compressed, uncompressed, name, repo_order) " @@ -312,7 +311,7 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept "@desc, @compressed, @uncompressed, @name, @repo_order)", -1, &insert_default_statement, - NULL) != SQLITE_OK)) + nullptr) != SQLITE_OK)) { goto out; } @@ -321,7 +320,7 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept "desc = @desc, compressed = @compressed, uncompressed = @uncompressed " "WHERE name LIKE @name AND repo_order = %u", this->get_order ()); - if (sqlite3_prepare_v2(job_data->db, query, -1, &update_statement, NULL) != SQLITE_OK) + if (sqlite3_prepare_v2(job_data->db, query, -1, &update_statement, nullptr) != SQLITE_OK) { goto out; } @@ -329,9 +328,9 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept data_in = g_data_input_stream_new(G_INPUT_STREAM(fin)); desc = g_string_new(""); - sqlite3_exec(job_data->db, "BEGIN TRANSACTION", NULL, NULL, NULL); + sqlite3_exec(job_data->db, "BEGIN TRANSACTION", nullptr, nullptr, nullptr); - while ((line = g_data_input_stream_read_line(data_in, NULL, NULL, NULL))) + while ((line = g_data_input_stream_read_line(data_in, nullptr, nullptr, nullptr))) { if (!strncmp(line, "PACKAGE NAME: ", 15)) { @@ -339,7 +338,7 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept if (this->is_blacklisted (filename)) { g_free(filename); - filename = NULL; + filename = nullptr; } } else if (filename && !strncmp(line, "PACKAGE LOCATION: ", 19)) @@ -359,10 +358,10 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept else if (filename && !g_strcmp0(line, "PACKAGE DESCRIPTION:")) { g_free(line); - line = g_data_input_stream_read_line(data_in, NULL, NULL, NULL); /* Short description */ + line = g_data_input_stream_read_line(data_in, nullptr, nullptr, nullptr); /* Short description */ summary = g_strstr_len(line, -1, "("); - if (summary) /* Else summary = NULL */ + if (summary) /* Else summary = nullptr */ { summary = g_strndup(summary + 1, strlen(summary) - 2); /* Without ( ) */ } @@ -379,7 +378,7 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept { /* Get the package group based on its location */ const char *cat = g_strrstr(location, "/"); - if (cat) /* Else cat = NULL */ + if (cat) /* Else cat = nullptr */ { cat = static_cast (g_hash_table_lookup(cat_map, cat + 1)); } @@ -418,21 +417,21 @@ Slackpkg::generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept g_free(filename); g_free(location); g_free(summary); - filename = location = summary = NULL; + filename = location = summary = nullptr; g_string_assign(desc, ""); pkg_compressed = pkg_uncompressed = 0; } g_free(line); } - sqlite3_exec(job_data->db, "END TRANSACTION", NULL, NULL, NULL); + sqlite3_exec(job_data->db, "END TRANSACTION", nullptr, nullptr, nullptr); - g_string_free(desc, TRUE); + g_string_free(desc, true); g_object_unref(data_in); /* Parse MANIFEST.bz2 */ - for (gchar **p = this->priority; *p; p++) + for (char **p = this->priority; *p; p++) { - filename = g_strconcat(*p, "-MANIFEST.bz2", NULL); + filename = g_strconcat(*p, "-MANIFEST.bz2", nullptr); manifest (job, tmpl, filename); g_free(filename); } @@ -475,19 +474,19 @@ Slackpkg::~Slackpkg () noexcept * * Returns: New #slack::Slackpkg. **/ -Slackpkg::Slackpkg (const gchar *name, const gchar *mirror, - guint8 order, const gchar *blacklist, gchar **priority) noexcept +Slackpkg::Slackpkg (const char *name, const char *mirror, + std::uint8_t order, const char *blacklist, char **priority) noexcept { GRegex *regex; if (blacklist) { regex = static_cast (g_regex_new (blacklist, - G_REGEX_OPTIMIZE, static_cast (0), NULL)); + G_REGEX_OPTIMIZE, static_cast (0), nullptr)); } else { - regex = NULL; + regex = nullptr; } this->name = g_strdup (name); @@ -500,25 +499,25 @@ Slackpkg::Slackpkg (const gchar *name, const gchar *mirror, this->priority = priority; // Initialize category map - if (cat_map == NULL) + if (cat_map == nullptr) { cat_map = g_hash_table_new(g_str_hash, g_str_equal); - g_hash_table_insert (cat_map, (gpointer) "a", (gpointer) "system"); - g_hash_table_insert (cat_map, (gpointer) "ap", (gpointer) "admin-tools"); - g_hash_table_insert (cat_map, (gpointer) "d", (gpointer) "programming"); - g_hash_table_insert (cat_map, (gpointer) "e", (gpointer) "programming"); - g_hash_table_insert (cat_map, (gpointer) "f", (gpointer) "documentation"); - g_hash_table_insert (cat_map, (gpointer) "k", (gpointer) "system"); - g_hash_table_insert (cat_map, (gpointer) "kde", (gpointer) "desktop-kde"); - g_hash_table_insert (cat_map, (gpointer) "kdei", (gpointer) "localization"); - g_hash_table_insert (cat_map, (gpointer) "l", (gpointer) "system"); - g_hash_table_insert (cat_map, (gpointer) "n", (gpointer) "network"); - g_hash_table_insert (cat_map, (gpointer) "t", (gpointer) "publishing"); - g_hash_table_insert (cat_map, (gpointer) "tcl", (gpointer) "system"); - g_hash_table_insert (cat_map, (gpointer) "x", (gpointer) "desktop-other"); - g_hash_table_insert (cat_map, (gpointer) "xap", (gpointer) "accessories"); - g_hash_table_insert (cat_map, (gpointer) "xfce", (gpointer) "desktop-xfce"); - g_hash_table_insert (cat_map, (gpointer) "y", (gpointer) "games"); + g_hash_table_insert (cat_map, (void *) "a", (void *) "system"); + g_hash_table_insert (cat_map, (void *) "ap", (void *) "admin-tools"); + g_hash_table_insert (cat_map, (void *) "d", (void *) "programming"); + g_hash_table_insert (cat_map, (void *) "e", (void *) "programming"); + g_hash_table_insert (cat_map, (void *) "f", (void *) "documentation"); + g_hash_table_insert (cat_map, (void *) "k", (void *) "system"); + g_hash_table_insert (cat_map, (void *) "kde", (void *) "desktop-kde"); + g_hash_table_insert (cat_map, (void *) "kdei", (void *) "localization"); + g_hash_table_insert (cat_map, (void *) "l", (void *) "system"); + g_hash_table_insert (cat_map, (void *) "n", (void *) "network"); + g_hash_table_insert (cat_map, (void *) "t", (void *) "publishing"); + g_hash_table_insert (cat_map, (void *) "tcl", (void *) "system"); + g_hash_table_insert (cat_map, (void *) "x", (void *) "desktop-other"); + g_hash_table_insert (cat_map, (void *) "xap", (void *) "accessories"); + g_hash_table_insert (cat_map, (void *) "xfce", (void *) "desktop-xfce"); + g_hash_table_insert (cat_map, (void *) "y", (void *) "games"); } } diff --git a/backend/slackpkg.h b/backend/slackpkg.h index 3ba60d6..bb45a46 100644 --- a/backend/slackpkg.h +++ b/backend/slackpkg.h @@ -1,30 +1,34 @@ -#ifndef __SLACK_SLACKPKG_H -#define __SLACK_SLACKPKG_H +/* + * 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/. + */ +#pragma once +#include #include #include "pkgtools.h" +#include "utils.h" namespace slack { class Slackpkg final : public Pkgtools { public: - Slackpkg (const gchar *name, const gchar *mirror, - guint8 order, const gchar *blacklist, gchar **priority) noexcept; + Slackpkg (const char *name, const char *mirror, + std::uint8_t order, const char *blacklist, char **priority) noexcept; ~Slackpkg () noexcept; - GSList *collect_cache_info (const gchar *tmpl) noexcept; - void generate_cache (PkBackendJob *job, const gchar *tmpl) noexcept; + GSList *collect_cache_info (const char *tmpl) noexcept; + void generate_cache (JobData *job_data, const char *tmpl) noexcept; private: static GHashTable *cat_map; static const std::size_t max_buf_size = 8192; - gchar **priority = NULL; + char **priority = nullptr; void manifest (PkBackendJob *job, - const gchar *tmpl, gchar *filename) noexcept; + const char *tmpl, char *filename) noexcept; }; } - -#endif /* __SLACK_SLACKPKG_H */ diff --git a/backend/tests/definitions.cc b/backend/tests/definitions.cc index 7906dd8..37f6134 100644 --- a/backend/tests/definitions.cc +++ b/backend/tests/definitions.cc @@ -1,27 +1,33 @@ +/* + * 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 #include "pk-backend.h" #include -gpointer +void * pk_backend_job_get_user_data (PkBackendJob *job) { - return NULL; + return nullptr; } void -pk_backend_job_set_user_data (PkBackendJob *job, gpointer user_data) +pk_backend_job_set_user_data (PkBackendJob *job, void *user_data) { } void -pk_backend_job_set_allow_cancel (PkBackendJob *job, gboolean allow_cancel) +pk_backend_job_set_allow_cancel (PkBackendJob *job, bool allow_cancel) { } void pk_backend_job_package (PkBackendJob *job, PkInfoEnum info, - const gchar *package_id, - const gchar *summary) + const char *package_id, + const char *summary) { } @@ -31,62 +37,62 @@ pk_backend_job_set_status (PkBackendJob *job, PkStatusEnum status) } void -pk_backend_job_set_percentage (PkBackendJob *job, guint percentage) +pk_backend_job_set_percentage (PkBackendJob *job, unsigned percentage) { } void pk_backend_job_error_code (PkBackendJob *job, - PkErrorEnum error_code, const gchar *format, ...) + PkErrorEnum error_code, const char *format, ...) { } void pk_backend_job_files (PkBackendJob *job, - const gchar *package_id, gchar **files) + const char *package_id, char **files) { } void pk_backend_job_details (PkBackendJob *job, - const gchar *package_id, - const gchar *summary, - const gchar *license, + const char *package_id, + const char *summary, + const char *license, PkGroupEnum group, - const gchar *description, - const gchar *url, - gulong size, - guint64 download_size) + const char *description, + const char *url, + unsigned long size, + std::uint64_t download_size) { } void pk_backend_job_update_detail (PkBackendJob *job, - const gchar *package_id, - gchar **updates, - gchar **obsoletes, - gchar **vendor_urls, - gchar **bugzilla_urls, - gchar **cve_urls, + const char *package_id, + char **updates, + char **obsoletes, + char **vendor_urls, + char **bugzilla_urls, + char **cve_urls, PkRestartEnum restart, - const gchar *update_text, - const gchar *changelog, + const char *update_text, + const char *changelog, PkUpdateStateEnum state, - const gchar *issued, - const gchar *updated) + const char *issued, + const char *updated) { } -gboolean +bool pk_backend_job_thread_create (PkBackendJob *job, PkBackendJobThreadFunc func, - gpointer user_data, + void *user_data, GDestroyNotify destroy_func) { - return FALSE; + return false; } -gboolean pk_directory_remove_contents (const gchar *directory) +bool pk_directory_remove_contents (const char *directory) { - return TRUE; + return true; } diff --git a/backend/tests/dl-test.cc b/backend/tests/dl-test.cc index f4959fe..d04b2b5 100644 --- a/backend/tests/dl-test.cc +++ b/backend/tests/dl-test.cc @@ -1,3 +1,8 @@ +/* + * 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 "dl.h" using namespace slack; @@ -5,7 +10,7 @@ using namespace slack; static void slack_test_dl_construct() { - auto dl = new Dl ("some", "mirror", 1, NULL, NULL); + auto dl = new Dl ("some", "mirror", 1, nullptr, nullptr); g_assert_cmpstr (dl->get_name (), ==, "some"); g_assert_cmpstr (dl->get_mirror (), ==, "mirror"); @@ -17,7 +22,7 @@ slack_test_dl_construct() int main(int argc, char *argv[]) { - g_test_init(&argc, &argv, NULL); + g_test_init(&argc, &argv, nullptr); g_test_add_func("/slack/dl/construct", slack_test_dl_construct); diff --git a/backend/tests/slackpkg-test.cc b/backend/tests/slackpkg-test.cc index 09c4142..bc2e227 100644 --- a/backend/tests/slackpkg-test.cc +++ b/backend/tests/slackpkg-test.cc @@ -1,3 +1,8 @@ +/* + * 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 "slackpkg.h" using namespace slack; @@ -5,7 +10,7 @@ using namespace slack; static void slack_test_slackpkg_construct() { - auto slackpkg = new Slackpkg ("some", "mirror", 1, NULL, NULL); + auto slackpkg = new Slackpkg ("some", "mirror", 1, nullptr, nullptr); g_assert_cmpstr(slackpkg->get_name (), ==, "some"); g_assert_cmpstr(slackpkg->get_mirror (), ==, "mirror"); @@ -17,7 +22,7 @@ slack_test_slackpkg_construct() int main(int argc, char *argv[]) { - g_test_init(&argc, &argv, NULL); + g_test_init(&argc, &argv, nullptr); g_test_add_func("/slack/slackpkg/construct", slack_test_slackpkg_construct); diff --git a/backend/utils.cc b/backend/utils.cc index 78778d0..30e257a 100644 --- a/backend/utils.cc +++ b/backend/utils.cc @@ -1,3 +1,9 @@ +/* + * 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 #include #include #include "utils.h" @@ -16,14 +22,14 @@ namespace slack { * Returns: CURLE_OK (zero) on success, non-zero otherwise. **/ CURLcode -get_file (CURL **curl, gchar *source_url, gchar *dest) +get_file (CURL **curl, char *source_url, char *dest) { - gchar *dest_dir_name; - FILE *fout = NULL; + char *dest_dir_name; + FILE *fout = nullptr; CURLcode ret; glong response_code; - if ((*curl == NULL) && (!(*curl = curl_easy_init()))) + if ((*curl == nullptr) && (!(*curl = curl_easy_init()))) { return CURLE_BAD_FUNCTION_ARGUMENT; } @@ -31,7 +37,7 @@ get_file (CURL **curl, gchar *source_url, gchar *dest) curl_easy_setopt(*curl, CURLOPT_FOLLOWLOCATION, 1L); curl_easy_setopt(*curl, CURLOPT_URL, source_url); - if (dest == NULL) + if (dest == nullptr) { curl_easy_setopt(*curl, CURLOPT_NOBODY, 1L); curl_easy_setopt(*curl, CURLOPT_HEADER, 1L); @@ -48,10 +54,10 @@ get_file (CURL **curl, gchar *source_url, gchar *dest) if (g_file_test(dest, G_FILE_TEST_IS_DIR)) { dest_dir_name = dest; - dest = g_strconcat(dest_dir_name, g_strrstr(source_url, "/"), NULL); + dest = g_strconcat(dest_dir_name, g_strrstr(source_url, "/"), nullptr); g_free(dest_dir_name); } - if ((fout = fopen(dest, "ab")) == NULL) + if ((fout = fopen(dest, "ab")) == nullptr) { return CURLE_WRITE_ERROR; } @@ -59,7 +65,7 @@ get_file (CURL **curl, gchar *source_url, gchar *dest) ret = curl_easy_perform(*curl); } curl_easy_reset(*curl); - if (fout != NULL) + if (fout != nullptr) { fclose(fout); } @@ -70,23 +76,23 @@ get_file (CURL **curl, gchar *source_url, gchar *dest) * slack::split_package_name: * Got the name of a package, without version-arch-release data. **/ -gchar ** -split_package_name (const gchar *pkg_filename) +char ** +split_package_name (const char *pkg_filename) { - gchar *pkg_full_name; - gchar **pkg_tokens; + char *pkg_full_name; + char **pkg_tokens; - g_return_val_if_fail(pkg_filename != NULL, NULL); + g_return_val_if_fail(pkg_filename != nullptr, nullptr); - gint len = strlen(pkg_filename); + int len = strlen(pkg_filename); if (len < 4) { - return NULL; + return nullptr; } if (pkg_filename[len - 4] == '.') { - pkg_tokens = static_cast (g_malloc_n (6, sizeof (gchar *))); + pkg_tokens = static_cast (g_malloc_n (6, sizeof (char *))); /* Full name without extension */ len -= 4; @@ -95,18 +101,18 @@ split_package_name (const gchar *pkg_filename) /* The last 3 characters should be the file extension */ pkg_tokens[4] = g_strdup (pkg_filename + len + 1); - pkg_tokens[5] = NULL; + pkg_tokens[5] = nullptr; } else { - pkg_tokens = static_cast (g_malloc_n (4, sizeof (gchar *))); + pkg_tokens = static_cast (g_malloc_n (4, sizeof (char *))); pkg_full_name = g_strdup (pkg_filename); - pkg_tokens[3] = NULL; + pkg_tokens[3] = nullptr; } /* Reverse all of the bytes in the package filename to get the name, version and the architecture */ g_strreverse (pkg_full_name); - gchar **reversed_tokens = g_strsplit (pkg_full_name, "-", 4); + char **reversed_tokens = g_strsplit (pkg_full_name, "-", 4); pkg_tokens[0] = g_strreverse (reversed_tokens[3]); /* Name */ pkg_tokens[1] = g_strreverse (reversed_tokens[2]); /* Version */ pkg_tokens[2] = g_strreverse (reversed_tokens[1]); /* Architecture */ @@ -130,17 +136,17 @@ split_package_name (const gchar *pkg_filename) * installed, PK_INFO_ENUM_UNKNOWN if pkg_fullname is malformed. **/ PkInfoEnum -is_installed (const gchar *pkg_fullname) +is_installed (const char *pkg_fullname) { GFileEnumerator *pkg_metadata_enumerator; GFileInfo *pkg_metadata_file_info; GFile *pkg_metadata_dir; PkInfoEnum ret = PK_INFO_ENUM_INSTALLING; - const gchar *it; - guint8 dashes = 0; + const char *it; + std::uint8_t dashes = 0; ptrdiff_t pkg_name; - g_return_val_if_fail(pkg_fullname != NULL, PK_INFO_ENUM_UNKNOWN); + g_return_val_if_fail(pkg_fullname != nullptr, PK_INFO_ENUM_UNKNOWN); // We want to find the package name without version for the package we're // looking for. @@ -169,16 +175,16 @@ is_installed (const gchar *pkg_fullname) if (!(pkg_metadata_enumerator = g_file_enumerate_children(pkg_metadata_dir, "standard::name", G_FILE_QUERY_INFO_NONE, - NULL, - NULL))) + nullptr, + nullptr))) { g_object_unref(pkg_metadata_dir); return PK_INFO_ENUM_UNKNOWN; } - while ((pkg_metadata_file_info = g_file_enumerator_next_file(pkg_metadata_enumerator, NULL, NULL))) + while ((pkg_metadata_file_info = g_file_enumerator_next_file(pkg_metadata_enumerator, nullptr, nullptr))) { - const gchar *dir = g_file_info_get_name(pkg_metadata_file_info); + const char *dir = g_file_info_get_name(pkg_metadata_file_info); dashes = 0; if (strcmp(dir, pkg_fullname) == 0) @@ -220,12 +226,12 @@ is_installed (const gchar *pkg_fullname) /** * slack::cmp_repo: **/ -gint -cmp_repo (gconstpointer a, gconstpointer b) +int +cmp_repo (const void *a, const void *b) { auto repo = static_cast (a); - return g_strcmp0 (repo->get_name (), (gchar *) b); + return g_strcmp0 (repo->get_name (), (char *) b); } } diff --git a/backend/utils.h b/backend/utils.h index b982429..88e9073 100644 --- a/backend/utils.h +++ b/backend/utils.h @@ -1,5 +1,9 @@ -#ifndef __SLACK_UTILS_H -#define __SLACK_UTILS_H +/* + * 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/. + */ +#pragma once #include #include @@ -9,24 +13,20 @@ namespace slack { struct JobData { - GObjectClass parent_class; - sqlite3 *db; CURL *curl; }; -CURLcode get_file (CURL **curl, gchar *source_url, gchar *dest); +CURLcode get_file (CURL **curl, char *source_url, char *dest); -gchar **split_package_name (const gchar *pkg_filename); +char **split_package_name (const char *pkg_filename); -PkInfoEnum is_installed (const gchar *pkg_fullname); +PkInfoEnum is_installed (const char *pkg_fullname); extern "C" { -gint cmp_repo (gconstpointer a, gconstpointer b); +int cmp_repo (const void *a, const void *b); } } - -#endif /* __SLACK_UTILS_H */ diff --git a/katja.toml.dist b/katja.toml.dist index 560e898..89b7120 100644 --- a/katja.toml.dist +++ b/katja.toml.dist @@ -1,2 +1,10 @@ +# It is a sample configuration. + [sbo] path = "/home/path/to/local/repository" + + +[slackware] +Mirror=http://mirrors.slackware.com/slackware/slackware64-15.0/ +Priority=patches;@pkgmain@;extra;pasture;testing +#Blacklist=