| 6422 | } |
| 6423 | |
| 6424 | const char *cbm_config_get(cbm_config_t *cfg, const char *key, const char *default_val) { |
| 6425 | static CBM_TLS char result_buf[CLI_BUF_4K]; |
| 6426 | if (!cfg || !key) { |
| 6427 | return default_val; |
| 6428 | } |
| 6429 | |
| 6430 | sqlite3_stmt *stmt = NULL; |
| 6431 | if (sqlite3_prepare_v2(cfg->db, "SELECT value FROM config WHERE key = ?", SQL_NUL_TERM, &stmt, |
| 6432 | NULL) != SQLITE_OK) { |
| 6433 | return default_val; |
| 6434 | } |
| 6435 | sqlite3_bind_text(stmt, SQL_PARAM_1, key, SQL_NUL_TERM, cbm_sqlite_transient); |
| 6436 | |
| 6437 | const char *result = default_val; |
| 6438 | if (sqlite3_step(stmt) == SQLITE_ROW) { |
| 6439 | const char *val = (const char *)sqlite3_column_text(stmt, 0); |
| 6440 | if (val) { |
| 6441 | snprintf(result_buf, sizeof(result_buf), "%s", val); |
| 6442 | result = result_buf; |
| 6443 | } |
| 6444 | } |
| 6445 | sqlite3_finalize(stmt); |
| 6446 | return result; |
| 6447 | } |
| 6448 | |
| 6449 | bool cbm_config_get_bool(cbm_config_t *cfg, const char *key, bool default_val) { |
| 6450 | const char *val = cbm_config_get(cfg, key, NULL); |
no outgoing calls