-rw-r--r-- | src/eyekinfig.cc | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/eyekinfig.cc b/src/eyekinfig.cc new file mode 100644 index 0000000..27a5a56 --- a/dev/null +++ b/src/eyekinfig.cc @@ -0,0 +1,67 @@ +#include <cassert> +#include <stdexcept> +#include <autosprintf.h> +#include "eyekinfig.h" + +#include "config.h" + +eyekinfig_t::eyekinfig_t(const std::string& ma) + : macaddress(ma) { + static cfg_opt_t opts[] = { + CFG_STR((char*)"targetdir",(char*)"/var/lib/" PACKAGE "/%s",CFGF_NONE), + CFG_STR((char*)"uploadkey",(char*)"",CFGF_NONE), + CFG_STR((char*)"on-start-session",(char*)"",CFGF_NONE), + CFG_STR((char*)"on-upload-photo",(char*)"",CFGF_NONE), + CFG_STR((char*)"on-mark-last-photo-in-roll",(char*)"",CFGF_NONE), + CFG_INT((char*)"umask",022,CFGF_NONE), + CFG_END() + }; + cfg = cfg_init(opts,CFGF_NONE); + if(!cfg) + throw std::runtime_error("failed to cfg_init()"); + std::string::size_type ls = macaddress.rfind('/'); + if(cfg_parse(cfg,gnu::autosprintf( + EYEKIN_CONF_DIR "/%s.conf", + (ls==std::string::npos) + ? macaddress.c_str() + : macaddress.substr(ls+1).c_str() + )) ==CFG_PARSE_ERROR) { + if(cfg) cfg_free(cfg); + cfg=0; + throw std::runtime_error("failed to cfg_parse()"); + } + } + +eyekinfig_t::~eyekinfig_t() { + if(cfg) cfg_free(cfg); +} + +std::string eyekinfig_t::get_targetdir() { + assert(cfg); + return gnu::autosprintf(cfg_getstr(cfg,"targetdir"),macaddress.c_str()); +} + +std::string eyekinfig_t::get_upload_key() { + assert(cfg); + return cfg_getstr(cfg,"uploadkey"); +} + +std::string eyekinfig_t::get_on_start_session() { + assert(cfg); + return cfg_getstr(cfg,"on-start-session"); +} +std::string eyekinfig_t::get_on_upload_photo() { + assert(cfg); + return cfg_getstr(cfg,"on-upload-photo"); +} + +std::string eyekinfig_t::get_on_mark_last_photo_in_roll() { + assert(cfg); + return cfg_getstr(cfg,"on-mark-last-photo-in-roll"); +} + + +int eyekinfig_t::get_umask() { + assert(cfg); + return cfg_getint(cfg,"umask"); +} |