| 6505 | } |
| 6506 | |
| 6507 | const char *cbm_config_get(cbm_config_t *cfg, const char *key, const char *default_val) { |
| 6508 | static CBM_TLS char result_buf[CLI_BUF_4K]; |
| 6509 | if (!cfg || !key) { |
| 6510 | return default_val; |
| 6511 | } |
| 6512 | |
| 6513 | sqlite3_stmt *stmt = NULL; |
| 6514 | if (sqlite3_prepare_v2(cfg->db, "SELECT value FROM config WHERE key = ?", SQL_NUL_TERM, &stmt, |
| 6515 | NULL) != SQLITE_OK) { |
| 6516 | return default_val; |
| 6517 | } |
| 6518 | sqlite3_bind_text(stmt, SQL_PARAM_1, key, SQL_NUL_TERM, cbm_sqlite_transient); |
| 6519 | |
| 6520 | const char *result = default_val; |
| 6521 | if (sqlite3_step(stmt) == SQLITE_ROW) { |
| 6522 | const char *val = (const char *)sqlite3_column_text(stmt, 0); |
| 6523 | if (val) { |
| 6524 | snprintf(result_buf, sizeof(result_buf), "%s", val); |
| 6525 | result = result_buf; |
| 6526 | } |
| 6527 | } |
| 6528 | sqlite3_finalize(stmt); |
| 6529 | return result; |
| 6530 | } |
| 6531 | |
| 6532 | bool cbm_config_get_bool(cbm_config_t *cfg, const char *key, bool default_val) { |
| 6533 | const char *val = cbm_config_get(cfg, key, NULL); |
no outgoing calls