aboutsummaryrefslogtreecommitdiff
path: root/libnitrokey-v3.6/log.cc
diff options
context:
space:
mode:
authorRobin Krahl <robin.krahl@ireas.org>2020-09-19 23:05:35 +0200
committerRobin Krahl <robin.krahl@ireas.org>2020-09-20 11:59:36 +0200
commit56eb89dcf5f7d2c3b4ea92490a3b4df6f85713c0 (patch)
treed07b62514704b71b89bd176ea438c84641bff9b1 /libnitrokey-v3.6/log.cc
parent655b823d13acbb71bb1496df29a9008e1b0ee9a2 (diff)
downloadnitrokey-sys-rs-56eb89dcf5f7d2c3b4ea92490a3b4df6f85713c0.tar.gz
nitrokey-sys-rs-56eb89dcf5f7d2c3b4ea92490a3b4df6f85713c0.tar.bz2
Update to libnitrokey v3.6
This patch updates libnitrokey from version 3.5 to version 3.6, causing these changes: - New constants: - `NK_device_model_NK_LIBREM` (`NK_device_model` enum) - New structures: - `NK_config` - New functions: - `NK_device_serial_number_as_u32` - `NK_write_config_struct` - `NK_free_config` - `NK_read_config_struct` - `NK_free_password_safe_slot_status` - Deprecated functions: - `NK_set_unencrypted_read_only` - `NK_set_unencrypted_read_write`
Diffstat (limited to 'libnitrokey-v3.6/log.cc')
-rw-r--r--libnitrokey-v3.6/log.cc103
1 files changed, 103 insertions, 0 deletions
diff --git a/libnitrokey-v3.6/log.cc b/libnitrokey-v3.6/log.cc
new file mode 100644
index 0000000..06acee7
--- /dev/null
+++ b/libnitrokey-v3.6/log.cc
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2015-2018 Nitrokey UG
+ *
+ * This file is part of libnitrokey.
+ *
+ * libnitrokey is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * libnitrokey is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with libnitrokey. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * SPDX-License-Identifier: LGPL-3.0
+ */
+
+#include "log.h"
+#include <iostream>
+#include <ctime>
+#include <iomanip>
+
+#include <sstream>
+
+namespace nitrokey {
+ namespace log {
+
+ Log *Log::mp_instance = nullptr;
+ StdlogHandler stdlog_handler;
+
+ std::string Log::prefix = "";
+
+
+ std::string LogHandler::loglevel_to_str(Loglevel lvl) {
+ switch (lvl) {
+ case Loglevel::DEBUG_L1:
+ return std::string("DEBUG_L1");
+ case Loglevel::DEBUG_L2:
+ return std::string("DEBUG_L2");
+ case Loglevel::DEBUG:
+ return std::string("DEBUG");
+ case Loglevel::INFO:
+ return std::string("INFO");
+ case Loglevel::WARNING:
+ return std::string("WARNING");
+ case Loglevel::ERROR:
+ return std::string("ERROR");
+ }
+ return std::string("");
+ }
+
+ void Log::operator()(const std::string &logstr, Loglevel lvl) {
+ if (mp_loghandler != nullptr){
+ if ((int) lvl <= (int) m_loglevel) mp_loghandler->print(prefix+logstr, lvl);
+ }
+ }
+
+ void Log::setPrefix(const std::string prefix) {
+ if (!prefix.empty()){
+ Log::prefix = "["+prefix+"]";
+ } else {
+ Log::prefix = "";
+ }
+ }
+
+ void StdlogHandler::print(const std::string &str, Loglevel lvl) {
+ std::string s = format_message_to_string(str, lvl);
+ std::clog << s;
+ }
+
+ void FunctionalLogHandler::print(const std::string &str, Loglevel lvl) {
+ std::string s = format_message_to_string(str, lvl);
+ log_function(s);
+ }
+
+ std::string LogHandler::format_message_to_string(const std::string &str, const Loglevel &lvl) {
+ static bool last_short = false;
+ if (str.length() == 1){
+ last_short = true;
+ return str;
+ }
+ time_t t = time(nullptr);
+ tm tm = *localtime(&t);
+
+ std::stringstream s;
+ s
+ << (last_short? "\n" : "")
+ << "[" << std::put_time(&tm, "%c") << "]"
+ << "[" << loglevel_to_str(lvl) << "]\t"
+ << str << std::endl;
+ last_short = false;
+ return s.str();
+ }
+
+ FunctionalLogHandler::FunctionalLogHandler(log_function_type _log_function) {
+ log_function = _log_function;
+ }
+ }
+}