settings.h revision 837f363f04402adf2f8081e6a6cb734e77a0520d
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen#ifndef __SETTINGS_H
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen#define __SETTINGS_H
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainenenum setting_type {
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen SET_STR,
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen SET_INT,
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen SET_BOOL
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen};
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainenstruct setting_def {
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen enum setting_type type;
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen const char *name;
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen size_t offset;
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen};
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen
837f363f04402adf2f8081e6a6cb734e77a0520dTimo Sirainentypedef const char *settings_callback_t(const char *key, const char *value,
837f363f04402adf2f8081e6a6cb734e77a0520dTimo Sirainen void *context);
837f363f04402adf2f8081e6a6cb734e77a0520dTimo Sirainen
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainenconst char *
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainenparse_setting_from_defs(pool_t pool, struct setting_def *defs, void *base,
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen const char *key, const char *value);
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen
837f363f04402adf2f8081e6a6cb734e77a0520dTimo Sirainenvoid settings_read(const char *path, settings_callback_t *callback,
837f363f04402adf2f8081e6a6cb734e77a0520dTimo Sirainen void *context);
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen
9e49712b9cddbf47568ea4f3676e59b151489356Timo Sirainen#endif