diff options
author | Szczepan Zalega <szczepan@nitrokey.com> | 2016-07-26 11:36:04 +0200 |
---|---|---|
committer | Szczepan Zalega <szczepan@nitrokey.com> | 2016-08-01 13:54:57 +0200 |
commit | 39b7c99bbd00c0bc4906939ceefb724a3d9ddc35 (patch) | |
tree | 16e13a656aeeccb1b14193c33e8728462d32c8d0 /NK_C_API.cc | |
parent | 8a938be4ffa97490d89206cc1fd079a057cfc65c (diff) | |
download | libnitrokey-39b7c99bbd00c0bc4906939ceefb724a3d9ddc35.tar.gz libnitrokey-39b7c99bbd00c0bc4906939ceefb724a3d9ddc35.tar.bz2 |
Handle locking device
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
Diffstat (limited to 'NK_C_API.cc')
-rw-r--r-- | NK_C_API.cc | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/NK_C_API.cc b/NK_C_API.cc index 7de5bbd..c2e7df0 100644 --- a/NK_C_API.cc +++ b/NK_C_API.cc @@ -1,6 +1,6 @@ #include <cstring> #include "NK_C_API.h" - +#include <functional> using namespace nitrokey; static uint8_t NK_last_command_status = 0; @@ -16,6 +16,18 @@ auto get_with_result(T func){ } } +template <typename T> +uint8_t get_without_result(T func){ + try { + func(); + return 0; + } + catch (CommandFailedException & commandFailedException){ + NK_last_command_status = commandFailedException.last_command_status; + return commandFailedException.last_command_status; + } +} + extern "C" { extern uint8_t NK_get_last_command_status(){ @@ -245,6 +257,13 @@ extern uint8_t NK_get_admin_retry_count(){ }); } +extern int NK_lock_device(){ + auto m = NitrokeyManager::instance(); + return get_without_result([&](){ + return m->lock_device(); + }); +} + } |