Fix log init.
Change-Id: I471b8ed1aa990eac54f3cbbd0bdd0c6eaf0da5c1
diff --git a/mbtk/libmbtk_lib/common/mbtk_log.c b/mbtk/libmbtk_lib/common/mbtk_log.c
index 3ffca33..ab599b4 100755
--- a/mbtk/libmbtk_lib/common/mbtk_log.c
+++ b/mbtk/libmbtk_lib/common/mbtk_log.c
@@ -21,6 +21,8 @@
#include "mbtk_log.h"
#include "mbtk_str.h"
+// extern char *__progname;
+
typedef enum {
LOG_ID_MAIN = 0,
LOG_ID_RADIO = 1,
@@ -40,6 +42,8 @@
static bool log_level_printed = FALSE;
+static bool log_init = FALSE;
+
/**
* @brief mbtk_log_init
*
@@ -60,6 +64,12 @@
*/
void mbtk_log_init(char* path, char* tag)
{
+ if(log_init) {
+ return;
+ } else {
+ log_init = TRUE;
+ }
+
if (str_empty(path)) {
tlog_fd = STDOUT_FILENO;
} else if (0 == memcmp(path, "syslog", 6)) {
@@ -90,6 +100,30 @@
int length = 0;
int ret = 0;
+ if(!log_init) {
+ char filename[64] = {0};
+ int fd = open("/proc/self/comm", O_RDONLY);
+ if(fd > 0) {
+ if(read(fd, filename, sizeof(filename)) > 0) {
+ // Delete last '\r' / '\n' / ' '
+ char *ptr = filename + strlen(filename) - 1;
+ while(ptr >= filename && (*ptr == '\r' || *ptr == '\n' || *ptr == ' '))
+ {
+ *ptr-- = '\0';
+ }
+
+ mbtk_log_init("radio", filename);
+ } else {
+ mbtk_log_init("radio", "MBTK");
+ }
+ close(fd);
+ } else {
+ mbtk_log_init("radio", "MBTK");
+ }
+
+ //mbtk_log_init("radio", __progname);
+ }
+
va_start(ap, format);
length = vsnprintf(buf, sizeof(buf), format, ap);
if (length < 0 || 0 == length) {