summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;