diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2016-07-27 12:31:08 +0200 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2016-08-01 13:54:57 +0200 |
commit | 547c02f0c5d4195a3efe454b9e98c0d0a84d739c (patch) | |
tree | 567ba270839328cc8fe6444a8dca130bd30d20be /NK_C_API.cc | |
parent | d26f8fc73e2a15314c44688e372f9d4613dcfdd8 (diff) | |
download | libnitrokey-547c02f0c5d4195a3efe454b9e98c0d0a84d739c.tar.gz libnitrokey-547c02f0c5d4195a3efe454b9e98c0d0a84d739c.tar.bz2 |
Test read/write config
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'NK_C_API.cc')
-rw-r--r-- | NK_C_API.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/NK_C_API.cc b/NK_C_API.cc index e5febe1..d93fafc 100644 --- a/NK_C_API.cc +++ b/NK_C_API.cc @@ -5,6 +5,24 @@ using namespace nitrokey; static uint8_t NK_last_command_status = 0; template <typename T> +T* array_dup(std::vector<T>& v){ + auto d = new T[v.size()]; + std::copy(v.begin(), v.end(), d); + return d; +} + +template <typename T> +uint8_t * get_with_array_result(T func){ + try { + return func(); + } + catch (CommandFailedException & commandFailedException){ + NK_last_command_status = commandFailedException.last_command_status; + return nullptr; + } +} + +template <typename T> const char* get_with_string_result(T func){ try { return func(); @@ -114,6 +132,16 @@ extern int NK_write_config(bool numlock, bool capslock, bool scrolllock, bool en }); } + +extern uint8_t* NK_read_config(){ + auto m = NitrokeyManager::instance(); + return get_with_array_result( [&](){ + auto v = m->read_config(); + return array_dup(v); + }); +} + + extern const char * NK_status() { auto m = NitrokeyManager::instance(); try { |