aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Krahl <me@robin-krahl.de>2019-01-14 19:03:53 +0100
committerRobin Krahl <me@robin-krahl.de>2019-01-14 19:03:53 +0100
commitbe6fd465ded13b4dd5b8ea10834a296efb8f1424 (patch)
tree886f7cff72ce1d13c4ce1a598bbc1b259d313ff3
parent1f3da5c76acb20b2183ac52373ed3b0b63e1151e (diff)
downloadlibnitrokey-fix/progress-bar-error.tar.gz
libnitrokey-fix/progress-bar-error.tar.bz2
Return -2 if an error occured in NK_get_progress_bar_valuefix/progress-bar-error
NK_get_progress_bar_value returns the progress value from 0 to 100 or -1 if there is no pending operation. In the previous implementation, it also returned zero if an error occurred, making it impossible to distinguish progress zero and an error. Therefore, we change the return value to -2 if an error occured.
-rw-r--r--NK_C_API.cc4
-rw-r--r--NK_C_API.h3
2 files changed, 4 insertions, 3 deletions
diff --git a/NK_C_API.cc b/NK_C_API.cc
index 7d0a10e..aa2d452 100644
--- a/NK_C_API.cc
+++ b/NK_C_API.cc
@@ -697,9 +697,9 @@ NK_C_API char* NK_get_SD_usage_data_as_string() {
NK_C_API int NK_get_progress_bar_value() {
auto m = NitrokeyManager::instance();
- return get_with_result([&]() {
+ return std::get<1>(get_with_status([&]() {
return m->get_progress_bar_value();
- });
+ }, -2));
}
NK_C_API int NK_get_major_firmware_version() {
diff --git a/NK_C_API.h b/NK_C_API.h
index b1bdf1e..43e5631 100644
--- a/NK_C_API.h
+++ b/NK_C_API.h
@@ -747,7 +747,8 @@ extern "C" {
/**
* Get progress value of current long operation.
* Storage only
- * @return int in range 0-100 or -1 if device is not busy
+ * @return int in range 0-100 or -1 if device is not busy or -2 if an
+ * error occured
*/
NK_C_API int NK_get_progress_bar_value();