diff options
-rw-r--r-- | include/misc.h | 23 |
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; |