This removes tslog-related functions from internal.{cpp,h}.
Needed functionality is moved to tslog, the rest is eliminated,
as obsolete.
Additionally, RAII object LogLock is provided to make it look
prettier in places where transaction_guard for __internal_enter and
__internal_exit was used.
Change-Id: I48e5b9c5bf352eb03c50b2a4b4c109c2df0c11bc
auto ok = policy_checker(bus_type).initDb(config_name, serialized_filename);
if (tslog::enabled())
- memory_dump(bus_type);
+ policy_checker(bus_type).printContent();
return ok ? 0 : -1;
}
{
return __internal_init_serialized(bus_type, config_name, std::string(config_name).append(".serialized").c_str());
}
-
-pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER;
-
-void memory_dump(BusType bus_type)
-{
- policy_checker(bus_type).printContent();
-}
-
-void __internal_init_once()
-{
- tslog::init();
-}
-
-void __internal_init_flush_logs()
-{
- if (tslog::enabled()) {
- pthread_mutex_lock(&g_mutex);
- std::cout << std::flush;
- pthread_mutex_unlock(&g_mutex);
- }
-}
-
-void __internal_enter()
-{
- if (tslog::enabled())
- pthread_mutex_lock(&g_mutex);
-}
-void __internal_exit()
-{
- if (tslog::enabled())
- pthread_mutex_unlock(&g_mutex);
-}
*/
int __internal_init_auto_serialized(BusType bus_type, const char* const config_name);
-/** Inits tslog. */
-void __internal_init_once(void);
-
-/** Dumps memory */
-void memory_dump(BusType bus_type);
-
-/** Flushes logs. */
-void __internal_init_flush_logs(void);
-
-/** Enables logger mutex */
-void __internal_enter(void);
-
-/** Disables logger mutex */
-void __internal_exit(void);
-
#endif
#include "internal.h"
#include "naive_policy_checker.hpp"
#include "serializer.hpp"
-#include <fstream>
+#include "tslog.hpp"
#include <iostream>
#include <string>
uint8_t* Serializer::serialize(const std::string config_path, size_t &size) {
// SYSTEM_BUS here because something had to be choosen
- __internal_init_once();
+ tslog::init();
ldp_xml::StorageBackendXML xmlStorage;
if (!xmlStorage.init(config_path.c_str())) {
#include <cstring>
namespace tslog {
-int8_t g_verbosity;
-}
-bool tslog::get_log_env(char const *name) {
+int8_t g_verbosity{-1};
+pthread_mutex_t g_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+bool get_log_env(char const *name) {
char const *ldp_log_mode = getenv(name);
return ldp_log_mode && '0' != *ldp_log_mode;
}
-void tslog::init() {
+void init() {
g_verbosity = get_log_env("LDP_LOG") ? get_log_env("LDP_VERBOSE") : -1;
}
-bool tslog::enabled() { return g_verbosity >= 0; }
-bool tslog::verbose() { return g_verbosity > 0; }
+bool enabled() { return g_verbosity >= 0; }
+bool verbose() { return g_verbosity > 0; }
+
+void flush() {
+ if (tslog::enabled()) {
+ pthread_mutex_lock(&g_mutex);
+ std::cout << std::flush;
+ pthread_mutex_unlock(&g_mutex);
+ }
+}
-void tslog::logError(const std::string &error)
+void logError(const std::string &error)
{
log(error, "\n");
LOGE("%s", error.c_str());
}
-void tslog::logWarning(const std::string &warning)
+void logWarning(const std::string &warning)
{
log(warning, "\n");
LOGW("%s", warning.c_str());
}
-namespace tslog {
- std::ostream &operator<<(std::ostream &stream, const print_errno &p) {
- char buf[256];
- return stream << strerror_r(p.err, buf, sizeof(buf));
- }
+std::ostream &operator<<(std::ostream &stream, const print_errno &p) {
+ char buf[256];
+ return stream << strerror_r(p.err, buf, sizeof(buf));
+}
+
+LogLock::LogLock() {
+ locked = tslog::enabled();
+ if (locked)
+ pthread_mutex_lock(&g_mutex);
}
+
+LogLock::~LogLock() {
+ if (locked)
+ pthread_mutex_unlock(&g_mutex);
+}
+
+} // namespace tslog
/** Checks if verbosity is enabled */
bool verbose();
+ void flush();
+
void logError(const std::string &error);
void logWarning(const std::string &warning);
};
std::ostream &operator<<(std::ostream &stream, const print_errno &p);
+
+ /* Use this class to ensure that logs from a given function are not interlaced
+ * with logs from another function
+ */
+ class LogLock {
+ bool locked;
+ public:
+ LogLock();
+ ~LogLock();
+ };
}
#endif
#include "internal/internal.h"
-#include "internal/transaction_guard.hpp"
#include "internal/naive_policy_checker.hpp"
+#include "internal/tslog.hpp"
#include "kdbus.h"
#include "libdbuspolicy1-private.h"
g_udesc.gid = getgid();
snprintf(g_udesc.label, r + 1 /* additional byte for \0 */, "%s", buf);
- __internal_init_once();
+ tslog::init();
}
static std::shared_ptr<const char> bus_type_from_path(const char *bus_path, BusType &bus_type)
}
}
- __internal_init_flush_logs();
+ tslog::flush();
return result;
}
if (message_type == DBUSPOLICY_MESSAGE_TYPE_SIGNAL && !destination)
return 1;
- __internal_enter();
- auto internal_enter_guard = transaction_guard::makeGuard([] () { __internal_exit(); });
-
+ tslog::LogLock log_lock;
auto kconn = KCONN(configuration);
KdbusConnectionInfo destinationInfo(kconn->conn);
int r;
int /*reply_serial*/,
int /*requested_reply*/)
{
- __internal_enter();
- auto internal_enter_guard = transaction_guard::makeGuard([] () { __internal_exit(); });
-
+ tslog::LogLock log_lock;
auto kconn = KCONN(configuration);
KdbusConnectionInfo info(kconn->conn);
int r;
DBUSPOLICY1_EXPORT int dbuspolicy1_can_own(void* configuration, const char* const service)
{
+ tslog::LogLock log_lock;
auto kconn = KCONN(configuration);
-
- __internal_enter();
- auto internal_enter_guard = transaction_guard::makeGuard([] () { __internal_exit(); });
-
return decisionToRetCode(policy_checker(kconn->bus_type).check(g_udesc.uid,
g_udesc.gid,
g_udesc.label,
#include "internal/serializer.hpp"
#include "internal/storage_backend_serialized.hpp"
#include "internal/storage_backend_serialized.hpp"
+#include "internal/tslog.hpp"
#include "libdbuspolicy1-private.h"
#include <dbuspolicy1/libdbuspolicy1.h>
#include <getopt.h>
return 1;
}
- __internal_init_once();
+ tslog::init();
run_tests(input_filename.c_str(), binary_file.c_str(), count, choice, verify);
return 0;
#include "internal/serializer.hpp"
#include "internal/storage_backend_serialized.hpp"
#include "internal/storage_backend_serialized.hpp"
+#include "internal/tslog.hpp"
#include "libdbuspolicy1-private.h"
#include <dbuspolicy1/libdbuspolicy1.h>
#include <getopt.h>
return 1;
}
- __internal_init_once();
+ tslog::init();
run_tests(input_filename.c_str(), verify, count);
return 0;
#include "internal/serializer.hpp"
#include "internal/storage_backend_serialized.hpp"
#include "internal/storage_backend_xml.hpp"
+#include "internal/tslog.hpp"
#include <dbuspolicy1/libdbuspolicy1.h>
#include <map>
#include <string>
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!run_tests())
return -1;
return 0;
#include "internal/internal.h"
#include "internal/naive_policy_checker.hpp"
+#include "internal/tslog.hpp"
#include <dbuspolicy1/libdbuspolicy1.h>
#include <map>
#include <string>
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!run_access_tests())
return -1;
return 0;
#include "internal/serializer.hpp"
#include "internal/storage_backend_serialized.hpp"
#include "internal/storage_backend_xml.hpp"
-#include <dbuspolicy1/libdbuspolicy1.h>
-#include <iostream>
+#include "internal/tslog.hpp"
#include <map>
-#include <string>
-#include <sys/types.h>
using namespace ldp_xml_parser;
using namespace ldp_serialized;
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!run_tests())
return -1;
return 0;
#include "internal/internal.h"
#include "internal/naive_policy_checker.hpp"
#include "internal/policy.hpp"
+#include "internal/tslog.hpp"
using namespace ldp_xml_parser;
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!method_test())
return -1;
return 0;
#include "internal/serializer.hpp"
#include "internal/storage_backend_serialized.hpp"
#include "internal/storage_backend_xml.hpp"
-#include <dbuspolicy1/libdbuspolicy1.h>
+#include "internal/tslog.hpp"
#include <map>
-#include <string>
using namespace ldp_xml_parser;
using namespace ldp_serialized;
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!run_tests())
return -1;
return 0;
#include "internal/internal.h"
#include "internal/naive_policy_checker.hpp"
+#include "internal/tslog.hpp"
using ldp_xml_parser::MatchItemOwn;
using ldp_xml_parser::DecisionResult;
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!ownership_test())
return -1;
return 0;
#include "internal/serializer.hpp"
#include "internal/storage_backend_serialized.hpp"
#include "internal/storage_backend_serialized.hpp"
-#include <dbuspolicy1/libdbuspolicy1.h>
-#include <iostream>
+#include "internal/tslog.hpp"
#include <map>
-#include <string>
-#include <sys/types.h>
using namespace ldp_xml_parser;
using namespace ldp_serialized;
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!run_tests())
return -1;
-return 0;
+ return 0;
}
#include "internal/internal.h"
#include "internal/naive_policy_checker.hpp"
+#include "internal/tslog.hpp"
using ldp_xml_parser::MatchItemOwn;
using ldp_xml_parser::DecisionResult;
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!ownership_test())
return -1;
return 0;
#include "internal/serializer.hpp"
#include "internal/storage_backend_serialized.hpp"
#include "internal/storage_backend_serialized.hpp"
-#include <dbuspolicy1/libdbuspolicy1.h>
-#include <iostream>
+#include "internal/tslog.hpp"
#include <map>
-#include <string>
-#include <sys/types.h>
using namespace ldp_xml_parser;
using namespace ldp_serialized;
int main()
{
- __internal_init_once();
+ tslog::init();
if (!run_tests())
return -1;
return 0;
#include "internal/internal.h"
#include "internal/naive_policy_checker.hpp"
#include "internal/policy.hpp"
+#include "internal/tslog.hpp"
#include "libdbuspolicy1-private.h"
#include <dbuspolicy1/libdbuspolicy1.h>
#include <string>
int main()
{
- __internal_init_once();
+ tslog::init();
if (!test())
return -1;
return 0;
#include "internal/serializer.hpp"
#include "internal/storage_backend_serialized.hpp"
#include "internal/storage_backend_serialized.hpp"
-#include <dbuspolicy1/libdbuspolicy1.h>
-#include <iostream>
+#include "internal/tslog.hpp"
#include <map>
-#include <string>
-#include <sys/types.h>
using namespace ldp_xml_parser;
using namespace ldp_serialized;
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!run_tests())
return -1;
return 0;
#include "internal/internal.h"
#include "internal/naive_policy_checker.hpp"
-#include <sys/types.h>
+#include "internal/tslog.hpp"
using ldp_xml_parser::MatchItemSend;
using ldp_xml_parser::DecisionResult;
}
int main() {
- __internal_init_once();
+ tslog::init();
if (!signal_test())
return -1;
-return 0;
+ return 0;
}