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) {