diff --git a/daemon/src/Makefile.am b/daemon/src/Makefile.am index cc610fdf19de8326d7250dafe1bfd4ce729f6ba1..e0cc364b6f5563c38a299d35c362529158b78315 100644 --- a/daemon/src/Makefile.am +++ b/daemon/src/Makefile.am @@ -63,7 +63,6 @@ libsflphone_la_LDFLAGS = \ libsflphone_la_CFLAGS = \ @CCGNU2_CFLAGS@ \ - @CCEXT2_CFLAGS@ \ @ZRTPCPP_CFLAGS@ \ $(PJSIP_CFLAGS) \ @CCRTP_CFLAGS@ \ @@ -82,7 +81,7 @@ libsflphone_la_SOURCES = conference.cpp \ eventthread.cpp \ call.cpp \ account.cpp \ - logger.cpp \ + logger.c \ numbercleaner.cpp \ fileutils.cpp \ threadloop.cpp \ diff --git a/daemon/src/history/history.cpp b/daemon/src/history/history.cpp index eb634ad3fdf5ceae35ead6068f5935b5d7b68c10..d944abd06c64cd84ee1167938e68dba45928fd64 100644 --- a/daemon/src/history/history.cpp +++ b/daemon/src/history/history.cpp @@ -109,7 +109,7 @@ void History::ensurePath() // If directory creation failed if (errno != EEXIST) { DEBUG("Cannot create directory: %s", userdata.c_str()); - Logger::strErr(); + strErr(); return; } } diff --git a/daemon/src/logger.cpp b/daemon/src/logger.c similarity index 84% rename from daemon/src/logger.cpp rename to daemon/src/logger.c index 3281a74b6520cff12b5b9b6313bbc806d0ebeaa9..f7751918369ecb6c8bf3d60dd749b5e086915c86 100644 --- a/daemon/src/logger.cpp +++ b/daemon/src/logger.c @@ -28,17 +28,16 @@ * as that of the covered work. */ -#include "logger.h" -#include <cstdarg> -#include <string> -#include <cstdio> +#include <stdio.h> +#include <stdarg.h> +#include <string.h> -namespace Logger { +#include "logger.h" -bool consoleLog = false; -bool debugMode = false; +static int consoleLog; +static int debugMode; -void log(const int level, const char* format, ...) +void logger(const int level, const char* format, ...) { if (!debugMode && level == LOG_DEBUG) return; @@ -71,28 +70,25 @@ void log(const int level, const char* format, ...) } } -void setConsoleLog(bool c) +void setConsoleLog(int c) { consoleLog = c; } -void setDebugMode(bool d) +void setDebugMode(int d) { debugMode = d; } -bool getDebugMode() +int getDebugMode(void) { return debugMode; } -void strErr(const char *msg) +void strErr(void) { #ifdef __GLIBC__ - if (strlen(msg)) - ERROR("%s: %m", msg); - else - ERROR("%m"); + ERROR("%m"); #else char buf[1000]; const char *errstr; @@ -109,10 +105,6 @@ void strErr(const char *msg) break; } - if (strlen(msg)) - ERROR("%s: %s", msg, errstr); - else - ERROR("%s", errstr); + ERROR("%s", errstr); #endif } -} diff --git a/daemon/src/logger.h b/daemon/src/logger.h index 0ae6e32fefd97ba888c9796f12799e8fe9e9a8e0..a1059e8624ce2a379dddce664bd0891b7ba30df8 100644 --- a/daemon/src/logger.h +++ b/daemon/src/logger.h @@ -28,32 +28,50 @@ * as that of the covered work. */ -#ifndef LOGGER_H_ -#define LOGGER_H_ +#ifndef H_LOGGER +#define H_LOGGER +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> #include <pthread.h> + #ifdef __ANDROID__ -#include <cstring> #include <android/log.h> #else #include <syslog.h> #endif -#include <cstring> +/** + * Print something, coloring it depending on the level + */ +void logger(const int level, const char *format, ...); + +/** + * Allow writing on the console + */ +void setConsoleLog(int c); + +/** + * When debug mode is not set, logging will not print anything + */ +void setDebugMode(int d); -namespace Logger { -void log(const int, const char*, ...); +/** + * Return the current mode + */ +int getDebugMode(void); -void setConsoleLog(bool); -void setDebugMode(bool); -bool getDebugMode(); /** - * Thread-safe function to print the stringified contents of errno appended to a - * user defined message */ -void strErr(const char *message = ""); -}; + * Thread-safe function to print the stringified contents of errno + */ +void strErr(); -#define LOG_FORMAT(M, ...) "%s:%d:0x%x: " M, FILE_NAME, __LINE__, (unsigned long) pthread_self() & 0xffff, ##__VA_ARGS__ +#define LOG_FORMAT(M, ...) "%s:%d:0x%x: " M, FILE_NAME, __LINE__, \ + (unsigned long) pthread_self() & 0xffff, \ + ##__VA_ARGS__ #ifndef __ANDROID__ @@ -62,23 +80,24 @@ void strErr(const char *message = ""); #define WARN(M, ...) LOGGER(M, LOG_WARNING, ##__VA_ARGS__) #define INFO(M, ...) LOGGER(M, LOG_INFO, ##__VA_ARGS__) #define DEBUG(M, ...) LOGGER(M, LOG_DEBUG, ##__VA_ARGS__) -#define LOGGER(M, LEVEL, ...) Logger::log(LEVEL, LOG_FORMAT(M, ##__VA_ARGS__)) +#define LOGGER(M, LEVEL, ...) logger(LEVEL, LOG_FORMAT(M, ##__VA_ARGS__)) -#else /* ANDROID */ +#else /* __ANDROID__ */ #ifndef APP_NAME #define APP_NAME "libsflphone" -#endif +#endif /* APP_NAME */ // Avoid printing whole path on android -#define FILE_NAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__) +#define FILE_NAME (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 \ + : __FILE__) #define ERROR(M, ...) LOGGER(M, ANDROID_LOG_ERROR, ##__VA_ARGS__) #define WARN(M, ...) LOGGER(M, ANDROID_LOG_WARN, ##__VA_ARGS__) #define INFO(M, ...) LOGGER(M, ANDROID_LOG_INFO, ##__VA_ARGS__) #define DEBUG(M, ...) LOGGER(M, ANDROID_LOG_DEBUG, ##__VA_ARGS__) #define LOGGER(M, LEVEL, ...) __android_log_print(LEVEL, APP_NAME, LOG_FORMAT(M, ##__VA_ARGS__)) -#endif /* ANDROID */ +#endif /* __ANDROID__ */ #define BLACK "\033[22;30m" #define RED "\033[22;31m" @@ -98,5 +117,8 @@ void strErr(const char *message = ""); #define WHITE "\033[01;37m" #define END_COLOR "\033[0m" -#endif // LOGGER_H_ +#ifdef __cplusplus +} +#endif +#endif // H_LOGGER diff --git a/daemon/src/main.cpp b/daemon/src/main.cpp index 2c0d5acad7ff92967d293e10b6751b11ccd9f73c..3faac0941476bc1c14e7da8a1be7e1cbf4f3e23c 100644 --- a/daemon/src/main.cpp +++ b/daemon/src/main.cpp @@ -116,8 +116,8 @@ namespace { // We've always print the title/version, so we can just exit quit = true; } else { - Logger::setConsoleLog(consoleFlag); - Logger::setDebugMode(debugFlag); + setConsoleLog(consoleFlag); + setDebugMode(debugFlag); } return quit; } diff --git a/daemon/src/video/libav_utils.cpp b/daemon/src/video/libav_utils.cpp index 512199da7692abca29c852947948c8af87fa65b7..d461e900640ffbe781eaed5b7ac49679c854569a 100644 --- a/daemon/src/video/libav_utils.cpp +++ b/daemon/src/video/libav_utils.cpp @@ -118,7 +118,7 @@ void init_once() av_lockmgr_register(avcodecManageMutex); - if (Logger::getDebugMode()) + if (getDebugMode()) av_log_set_level(AV_LOG_VERBOSE); /* list of codecs tested and confirmed to work */ diff --git a/daemon/src/video/shm_sink.cpp b/daemon/src/video/shm_sink.cpp index 510a6d010ce8eb842e4b0216d1ebb9cb9041f168..d539c1cda565b28efed4c002f9cd92a7d9210796 100644 --- a/daemon/src/video/shm_sink.cpp +++ b/daemon/src/video/shm_sink.cpp @@ -84,7 +84,7 @@ bool SHMSink::start() fd_ = shm_open(shm_name_.c_str(), flags, perms); if (fd_ < 0) { ERROR("could not open shm area \"%s\"", shm_name_.c_str()); - Logger::strErr(); + strErr(); return false; } } else { @@ -94,7 +94,7 @@ bool SHMSink::start() shm_name_ = name.str(); fd_ = shm_open(shm_name_.c_str(), flags, perms); if (fd_ < 0 and errno != EEXIST) { - Logger::strErr(); + strErr(); return false; } } @@ -107,7 +107,7 @@ bool SHMSink::start() if (ftruncate(fd_, shm_area_len_)) { ERROR("Could not make shm area large enough for header"); - Logger::strErr(); + strErr(); return false; } @@ -133,7 +133,7 @@ bool SHMSink::start() bool SHMSink::stop() { if (fd_ >= 0 and close(fd_) == -1) - Logger::strErr(); + strErr(); fd_ = -1; @@ -159,13 +159,13 @@ bool SHMSink::resize_area(size_t desired_length) if (munmap(shm_area_, shm_area_len_)) { ERROR("Could not unmap shared area"); - Logger::strErr(); + strErr(); return false; } if (ftruncate(fd_, desired_length)) { ERROR("Could not resize shared area"); - Logger::strErr(); + strErr(); return false; } diff --git a/daemon/src/video/socket_pair.cpp b/daemon/src/video/socket_pair.cpp index a9fb9a15882edd9fed3d93cf16a412335a73389b..f5426527233c435e5dae4aac8a042a199983a550 100644 --- a/daemon/src/video/socket_pair.cpp +++ b/daemon/src/video/socket_pair.cpp @@ -124,7 +124,7 @@ int udp_socket_create(sockaddr_storage *addr, socklen_t *addr_len, // on local port if (bind(udp_fd, reinterpret_cast<sockaddr*>(addr), *addr_len) < 0) { ERROR("Bind failed"); - Logger::strErr(); + strErr(); close(udp_fd); udp_fd = -1; } @@ -168,9 +168,9 @@ void SocketPair::interrupt() void SocketPair::closeSockets() { if (rtcpHandle_ > 0 and close(rtcpHandle_)) - Logger::strErr(); + strErr(); if (rtpHandle_ > 0 and close(rtpHandle_)) - Logger::strErr(); + strErr(); } void SocketPair::openSockets(const char *uri, int local_rtp_port) diff --git a/daemon/src/video/v4l2/video_preferences.cpp b/daemon/src/video/v4l2/video_preferences.cpp index 6dc9e28f0969ab3f6cfb731737e8091ba92fe701..244acdd74cdfebe80acea0be3cb7eb96e28a49f3 100644 --- a/daemon/src/video/v4l2/video_preferences.cpp +++ b/daemon/src/video/v4l2/video_preferences.cpp @@ -326,7 +326,7 @@ bool VideoDeviceMonitorImpl::addDevice(const string &dev) int fd = open(dev.c_str(), O_RDWR); if (fd == -1) { ERROR("Problem opening device"); - Logger::strErr(); + strErr(); return false; } diff --git a/daemon/test/main.cpp b/daemon/test/main.cpp index 80528e56732857ee2af11a6b50c956a1394ff3cc..401b23132b6c0e1111174fcc82a1cf9426c9a324 100644 --- a/daemon/test/main.cpp +++ b/daemon/test/main.cpp @@ -63,8 +63,8 @@ int main(int argc, char* argv[]) { atexit(cleanup); printf("\nSFLphone Daemon Test Suite, by Savoir-Faire Linux 2004-2014\n\n"); - Logger::setConsoleLog(true); - Logger::setDebugMode(true); + setConsoleLog(true); + setDebugMode(true); fileutils::FileHandle f(fileutils::create_pidfile()); if (f.fd == -1) { fprintf(stderr, "An sflphoned instance is already running, quitting...\n"); @@ -96,7 +96,7 @@ int main(int argc, char* argv[]) } else if (strcmp("--debug", argv[1]) == 0) { argvIndex++; - Logger::setDebugMode(true); + setDebugMode(true); INFO("Debug mode activated"); } else if (strcmp("--xml", argv[1]) == 0) {