summaryrefslogtreecommitdiff
path: root/backend/pkgtools.cc
diff options
context:
space:
mode:
Diffstat (limited to 'backend/pkgtools.cc')
-rw-r--r--backend/pkgtools.cc182
1 files changed, 83 insertions, 99 deletions
diff --git a/backend/pkgtools.cc b/backend/pkgtools.cc
index ebbd838..940ce19 100644
--- a/backend/pkgtools.cc
+++ b/backend/pkgtools.cc
@@ -12,7 +12,7 @@ namespace katja
{
/**
* katja::Pkgtools::download:
- * @job: A #PkBackendJob.
+ * @job_data: A #JobData.
* @dest_dir_name: Destination directory.
* @pkg_name: Package name.
*
@@ -20,57 +20,47 @@ namespace katja
*
* Returns: %TRUE on success, %FALSE otherwise.
**/
-bool
-Pkgtools::download (JobData *job_data,
- char *dest_dir_name, char *pkg_name) noexcept
+bool Pkgtools::download(JobData *job_data, 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);
-
- if (!g_file_test(dest_filename, G_FILE_TEST_EXISTS))
- {
- if (get_file(&curl, source_url, dest_filename) == CURLE_OK)
- {
- ret = true;
- }
- }
- else
- {
- ret = true;
- }
-
- if (curl)
- {
- curl_easy_cleanup(curl);
- }
- g_free(source_url);
- g_free(dest_filename);
- }
- sqlite3_finalize(statement);
-
- return ret;
+ 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;
}
/**
@@ -80,43 +70,42 @@ Pkgtools::download (JobData *job_data,
*
* Install a package.
**/
-void
-Pkgtools::install (JobData *job_data, char *pkg_name) noexcept
+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);
+ 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
+Pkgtools::~Pkgtools() noexcept
{
}
@@ -127,10 +116,9 @@ Pkgtools::~Pkgtools () noexcept
*
* Returns: Repository name.
**/
-const char *
-Pkgtools::get_name () const noexcept
+const char *Pkgtools::get_name() const noexcept
{
- return this->name;
+ return this->name;
}
/**
@@ -140,10 +128,9 @@ Pkgtools::get_name () const noexcept
*
* Returns: Repository mirror.
**/
-const char *
-Pkgtools::get_mirror () const noexcept
+const char *Pkgtools::get_mirror() const noexcept
{
- return this->mirror;
+ return this->mirror;
}
/**
@@ -153,10 +140,9 @@ Pkgtools::get_mirror () const noexcept
*
* Returns: Repository order.
**/
-guint8
-Pkgtools::get_order () const noexcept
+guint8 Pkgtools::get_order() const noexcept
{
- return this->order;
+ return this->order;
}
/**
@@ -167,12 +153,10 @@ Pkgtools::get_order () const noexcept
*
* Returns: %TRUE if the package is blacklisted, %FALSE otherwise.
**/
-bool
-Pkgtools::is_blacklisted (const char *pkg) const noexcept
+bool Pkgtools::is_blacklisted(const char *pkg) const noexcept
{
- return this->blacklist
- && g_regex_match (this->blacklist,
- pkg, static_cast<GRegexMatchFlags> (0), nullptr);
+ return this->blacklist
+ && g_regex_match (this->blacklist, pkg, static_cast<GRegexMatchFlags>(0), nullptr);
}
}