60 lines
1.5 KiB
C
60 lines
1.5 KiB
C
#include "config.h"
|
|
|
|
#define SAT_CONFIG_LOCK_TIMEOUT (10)
|
|
#define SAT_CONFIG_CACHE_LIFETIME (900)
|
|
|
|
sat_config_ptr sat_config_alloc(int type) {
|
|
if(type == SAT_CONFIG_TYPE_STREAM)
|
|
return sat_config_alloc_stream();
|
|
if(type == SAT_CONFIG_TYPE_SCOPED)
|
|
return sat_config_alloc_scoped();
|
|
return NULL;
|
|
}
|
|
|
|
void sat_config_free(sat_config_ptr ctx) {
|
|
if(!ctx || !ctx->info) return;
|
|
|
|
if(ctx->type == SAT_CONFIG_TYPE_STREAM)
|
|
sat_config_free_stream(ctx);
|
|
else if(ctx->type == SAT_CONFIG_TYPE_SCOPED)
|
|
sat_config_free_scoped(ctx);
|
|
}
|
|
|
|
sat_config_ptr sat_config_scope_to(sat_config_ptr ctx, char *prefix) {
|
|
return ctx->scopeTo(ctx, prefix);
|
|
}
|
|
|
|
char* sat_config_read_value(sat_config_ptr ctx, char *name, char *fallback) {
|
|
return ctx->readValue(ctx, name, fallback);
|
|
}
|
|
|
|
bool sat_config_read_bool(sat_config_ptr ctx, char *name, bool fallback) {
|
|
char *raw = sat_config_read_value(ctx, name, NULL);
|
|
if(raw == NULL)
|
|
return fallback;
|
|
|
|
for(char *p = raw; *p; ++p)
|
|
*p = tolower(*p);
|
|
|
|
bool value = strcmp(raw, "0") != 0
|
|
&& strcmp(raw, "no") != 0
|
|
&& strcmp(raw, "false") != 0;
|
|
|
|
free(raw);
|
|
|
|
return value;
|
|
}
|
|
|
|
uint64_t sat_config_read_u64(sat_config_ptr ctx, char *name, uint64_t fallback) {
|
|
char *raw = sat_config_read_value(ctx, name, NULL);
|
|
if(raw == NULL)
|
|
return fallback;
|
|
|
|
char *end = NULL;
|
|
uint64_t value = strtoull(raw, &end, 10);
|
|
|
|
free(raw);
|
|
|
|
return value;
|
|
}
|