util/Error: new error passing library

Replaces GLib's GError.
This commit is contained in:
Max Kellermann
2013-08-10 18:02:44 +02:00
parent c9fcc7f148
commit 29030b54c9
256 changed files with 3269 additions and 3371 deletions

View File

@@ -21,6 +21,8 @@
#include "StickerDatabase.hxx"
#include "fs/Path.hxx"
#include "Idle.hxx"
#include "util/Error.hxx"
#include "util/Domain.hxx"
#include <string>
#include <map>
@@ -81,23 +83,19 @@ static const char sticker_sql_create[] =
static sqlite3 *sticker_db;
static sqlite3_stmt *sticker_stmt[G_N_ELEMENTS(sticker_sql)];
static GQuark
sticker_quark(void)
{
return g_quark_from_static_string("sticker");
}
static constexpr Domain sticker_domain("sticker");
static sqlite3_stmt *
sticker_prepare(const char *sql, GError **error_r)
sticker_prepare(const char *sql, Error &error)
{
int ret;
sqlite3_stmt *stmt;
ret = sqlite3_prepare_v2(sticker_db, sql, -1, &stmt, NULL);
if (ret != SQLITE_OK) {
g_set_error(error_r, sticker_quark(), ret,
"sqlite3_prepare_v2() failed: %s",
sqlite3_errmsg(sticker_db));
error.Format(sticker_domain, ret,
"sqlite3_prepare_v2() failed: %s",
sqlite3_errmsg(sticker_db));
return NULL;
}
@@ -105,7 +103,7 @@ sticker_prepare(const char *sql, GError **error_r)
}
bool
sticker_global_init(Path &&path, GError **error_r)
sticker_global_init(Path &&path, Error &error)
{
int ret;
@@ -118,7 +116,7 @@ sticker_global_init(Path &&path, GError **error_r)
ret = sqlite3_open(path.c_str(), &sticker_db);
if (ret != SQLITE_OK) {
const std::string utf8 = path.ToUTF8();
g_set_error(error_r, sticker_quark(), ret,
error.Format(sticker_domain, ret,
"Failed to open sqlite database '%s': %s",
utf8.c_str(), sqlite3_errmsg(sticker_db));
return false;
@@ -128,9 +126,9 @@ sticker_global_init(Path &&path, GError **error_r)
ret = sqlite3_exec(sticker_db, sticker_sql_create, NULL, NULL, NULL);
if (ret != SQLITE_OK) {
g_set_error(error_r, sticker_quark(), ret,
"Failed to create sticker table: %s",
sqlite3_errmsg(sticker_db));
error.Format(sticker_domain, ret,
"Failed to create sticker table: %s",
sqlite3_errmsg(sticker_db));
return false;
}
@@ -139,7 +137,7 @@ sticker_global_init(Path &&path, GError **error_r)
for (unsigned i = 0; i < G_N_ELEMENTS(sticker_sql); ++i) {
assert(sticker_sql[i] != NULL);
sticker_stmt[i] = sticker_prepare(sticker_sql[i], error_r);
sticker_stmt[i] = sticker_prepare(sticker_sql[i], error);
if (sticker_stmt[i] == NULL)
return false;
}