1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-09 17:38:00 +00:00
putty-source/utils/conf_data.c

54 lines
1.9 KiB
C
Raw Normal View History

#include "putty.h"
2023-09-22 15:04:25 +00:00
#define CONF_ENUM(name, ...) \
static const ConfSaveEnumValue conf_enum_values_##name[] = { \
__VA_ARGS__ \
}; const ConfSaveEnumType conf_enum_##name = { \
.values = conf_enum_values_##name, \
.nvalues = lenof(conf_enum_values_##name), \
};
#define VALUE(eval, sval) { eval, sval, false }
#define VALUE_OBSOLETE(eval, sval) { eval, sval, true }
#include "conf-enums.h"
bool conf_enum_map_to_storage(const ConfSaveEnumType *etype,
int confval, int *storageval_out)
{
for (size_t i = 0; i < etype->nvalues; i++)
if (!etype->values[i].obsolete &&
etype->values[i].confval == confval) {
*storageval_out = etype->values[i].storageval;
return true;
}
return false;
}
bool conf_enum_map_from_storage(const ConfSaveEnumType *etype,
int storageval, int *confval_out)
{
for (size_t i = 0; i < etype->nvalues; i++)
if (etype->values[i].storageval == storageval) {
*confval_out = etype->values[i].confval;
return true;
}
return false;
}
#define CONF_OPTION(id, ...) { __VA_ARGS__ },
#define VALUE_TYPE(x) .value_type = CONF_TYPE_ ## x
#define SUBKEY_TYPE(x) .subkey_type = CONF_TYPE_ ## x
#define DEFAULT_INT(x) .default_value.ival = x
#define DEFAULT_STR(x) .default_value.sval = x
#define DEFAULT_BOOL(x) .default_value.bval = x
#define SAVE_KEYWORD(x) .save_keyword = x
2023-09-22 15:04:25 +00:00
#define STORAGE_ENUM(x) .storage_enum = &conf_enum_ ## x
#define SAVE_CUSTOM .save_custom = true
#define LOAD_CUSTOM .load_custom = true
#define NOT_SAVED .not_saved = true
const ConfKeyInfo conf_key_info[] = {
#include "conf.h"
};