aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzczepan Zalega <szczepan@nitrokey.com>2016-10-22 18:59:12 +0200
committerSzczepan Zalega <szczepan@nitrokey.com>2016-11-26 15:54:12 +0100
commitb0e14aeb25e8d5d799b685bdc844b87617d97c80 (patch)
treea17b313438407b847fb48f338b4662cec74c6dd5
parent3601f5f97fb64357d9d9221acbd356eec4dbc67a (diff)
downloadlibnitrokey-b0e14aeb25e8d5d799b685bdc844b87617d97c80.tar.gz
libnitrokey-b0e14aeb25e8d5d799b685bdc844b87617d97c80.tar.bz2
Add strcpyT to misc.h
Signed-off-by: Szczepan Zalega <szczepan@nitrokey.com>
-rw-r--r--include/misc.h23
1 files changed, 22 insertions, 1 deletions
diff --git a/include/misc.h b/include/misc.h
index 5fcd16d..48d6a83 100644
--- a/include/misc.h
+++ b/include/misc.h
@@ -3,11 +3,32 @@
#include <stdio.h>
#include <string>
#include <vector>
+#include <string.h>
+#include "log.h"
+#include "LibraryException.h"
namespace nitrokey {
namespace misc {
-template <typename T>
+ template <typename T>
+ void strcpyT(T& dest, const char* src){
+
+ if (src == nullptr)
+// throw EmptySourceStringException(slot_number);
+ return;
+ const size_t s_dest = sizeof dest;
+ nitrokey::log::Log::instance()(std::string("strcpyT sizes dest src ")
+ +std::to_string(s_dest)+ " "
+ +std::to_string(strlen(src))+ " "
+ ,nitrokey::log::Loglevel::DEBUG);
+ if (strlen(src) > s_dest){
+ throw TooLongStringException(strlen(src), s_dest, src);
+ }
+ strncpy((char*) &dest, src, s_dest);
+ }
+
+
+ template <typename T>
typename T::CommandPayload get_payload(){
//Create, initialize and return by value command payload
typename T::CommandPayload st;