From c85af12d45928aecb20a087a009e1f5f19f980e2 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 17 Oct 2013 19:37:51 +0200 Subject: StickerDatabase: return std::string --- src/StickerDatabase.cxx | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) (limited to 'src/StickerDatabase.cxx') diff --git a/src/StickerDatabase.cxx b/src/StickerDatabase.cxx index 21bf7706f..84aa4c1e0 100644 --- a/src/StickerDatabase.cxx +++ b/src/StickerDatabase.cxx @@ -29,7 +29,6 @@ #include #include -#include #include #include @@ -172,12 +171,11 @@ sticker_enabled(void) return sticker_db != NULL; } -char * +std::string sticker_load_value(const char *type, const char *uri, const char *name) { sqlite3_stmt *const stmt = sticker_stmt[STICKER_SQL_GET]; int ret; - char *value; assert(sticker_enabled()); assert(type != NULL); @@ -185,42 +183,41 @@ sticker_load_value(const char *type, const char *uri, const char *name) assert(name != NULL); if (*name == 0) - return NULL; + return std::string(); sqlite3_reset(stmt); ret = sqlite3_bind_text(stmt, 1, type, -1, NULL); if (ret != SQLITE_OK) { LogError(sticker_db, "sqlite3_bind_text() failed"); - return NULL; + return std::string(); } ret = sqlite3_bind_text(stmt, 2, uri, -1, NULL); if (ret != SQLITE_OK) { LogError(sticker_db, "sqlite3_bind_text() failed"); - return NULL; + return std::string(); } ret = sqlite3_bind_text(stmt, 3, name, -1, NULL); if (ret != SQLITE_OK) { LogError(sticker_db, "sqlite3_bind_text() failed"); - return NULL; + return std::string(); } do { ret = sqlite3_step(stmt); } while (ret == SQLITE_BUSY); + std::string value; if (ret == SQLITE_ROW) { /* record found */ - value = g_strdup((const char*)sqlite3_column_text(stmt, 0)); + value = (const char*)sqlite3_column_text(stmt, 0); } else if (ret == SQLITE_DONE) { /* no record found */ - value = NULL; } else { /* error */ LogError(sticker_db, "sqlite3_step() failed"); - return NULL; } sqlite3_reset(stmt); @@ -523,8 +520,8 @@ sticker_get_value(const struct sticker *sticker, const char *name) void sticker_foreach(const struct sticker *sticker, void (*func)(const char *name, const char *value, - gpointer user_data), - gpointer user_data) + void *user_data), + void *user_data) { for (const auto &i : sticker->table) func(i.first.c_str(), i.second.c_str(), user_data); @@ -548,8 +545,8 @@ sticker_load(const char *type, const char *uri) bool sticker_find(const char *type, const char *base_uri, const char *name, void (*func)(const char *uri, const char *value, - gpointer user_data), - gpointer user_data) + void *user_data), + void *user_data) { sqlite3_stmt *const stmt = sticker_stmt[STICKER_SQL_FIND]; int ret; -- cgit v1.2.3