bool settings_parser_parse_file(section_t *root, char *name);
bool settings_parser_parse_string(section_t *root, char *settings);
+/**
+ * Buffer size for complete key name/pattern when looking up settings.
+ */
+#define KEY_FULL_BUF_LEN 2048
+
+/**
+ * Buffer size for a single part of a key name (matches the maximum length
+ * for names in VICI).
+ */
+#define KEY_PART_BUF_LEN 257
+
/**
* Private data of settings
*/
static section_t *ensure_section(private_settings_t *this, section_t *section,
const char *key, va_list args)
{
- char buf[128], keybuf[512];
+ char buf[KEY_PART_BUF_LEN], keybuf[KEY_FULL_BUF_LEN];
if (snprintf(keybuf, sizeof(keybuf), "%s", key) >= sizeof(keybuf))
{
static array_t *find_sections(private_settings_t *this, section_t *section,
char *key, va_list args, array_t **sections)
{
- char buf[128], keybuf[512];
+ char buf[KEY_PART_BUF_LEN], keybuf[KEY_FULL_BUF_LEN];
if (snprintf(keybuf, sizeof(keybuf), "%s", key) >= sizeof(keybuf))
{
void settings_remove_value(settings_t *settings, char *key, ...)
{
private_settings_t *this = (private_settings_t*)settings;
- char buf[128], keybuf[512];
+ char buf[KEY_PART_BUF_LEN], keybuf[KEY_FULL_BUF_LEN];
va_list args;
if (snprintf(keybuf, sizeof(keybuf), "%s", key) >= sizeof(keybuf))
static char *find_value(private_settings_t *this, section_t *section,
char *key, va_list args)
{
- char buf[128], keybuf[512], *value = NULL;
+ char buf[KEY_PART_BUF_LEN], keybuf[KEY_FULL_BUF_LEN], *value = NULL;
array_t *sections = NULL;
kv_t *kv;
static void set_value(private_settings_t *this, section_t *section,
char *key, va_list args, char *value)
{
- char buf[128], keybuf[512];
+ char buf[KEY_PART_BUF_LEN], keybuf[KEY_FULL_BUF_LEN];
kv_t *kv;
if (snprintf(keybuf, sizeof(keybuf), "%s", key) >= sizeof(keybuf))
{
section_t *section;
va_list args;
- char buf[512];
+ char buf[KEY_FULL_BUF_LEN];
this->lock->write_lock(this->lock);
va_start(args, fallback);