修复mbtk_logd进程 read log_radio buffer 节点大小,新增日志落盘功能

Change-Id: I3f1a1d148be26bad19b2e66b0ca7536df1e9c483
diff --git a/mbtk/mbtk_logd/syslog_read.c b/mbtk/mbtk_logd/syslog_read.c
index bfc70ba..36df306 100755
--- a/mbtk/mbtk_logd/syslog_read.c
+++ b/mbtk/mbtk_logd/syslog_read.c
@@ -67,6 +67,8 @@
 #define    SYSLOG_BUFF_SIZE (4*1024)
 #define    MAX_BUFFER_SIZE (8*1024)
 
+extern int tmp_syslog_fd;
+extern char syslog_buff[MAX_BUFFER_SIZE];
 
 static const struct blobmsg_policy log_policy[] = {
 	[LOG_MSG] = { .name = "msg", .type = BLOBMSG_TYPE_STRING },
@@ -195,7 +197,8 @@
 
 
     snprintf(tmp_buf,sizeof(tmp_buf), "%s", log_file);
-    if(access(tmp_buf, W_OK) != 0)
+    
+    if(fcntl(sender.fd, F_GETFL) == -1 || access(tmp_buf, W_OK) != 0)
     {
         sender.fd = open(tmp_buf, O_CREAT | O_WRONLY | O_APPEND, 0600);
         if(sender.fd < 0)
@@ -203,6 +206,7 @@
             perror("Failed to open file ");
             return -1;
         }
+        tmp_syslog_fd = sender.fd;
     }
 
 
@@ -211,14 +215,15 @@
 	if (!tb[LOG_ID] || !tb[LOG_PRIO] || !tb[LOG_SOURCE] || !tb[LOG_TIME] || !tb[LOG_MSG])
 		return 1;
 
-    if ((log_type == LOG_FILE) && log_size && (!stat(tmp_log, &s)) && (s.st_size > log_size))
+    if ((log_type == LOG_FILE) && log_size && (!stat(log_file, &s)) && (s.st_size > log_size))
     {
             sender.fd = get_rotate_file(sender.fd, log_file, &file_list);
             if (sender.fd < 0)
             {
-                fprintf(stderr, "failed to open %s: %s\n", tmp_log, strerror(errno));
+                fprintf(stderr, "failed to open %s: %s\n", log_file, strerror(errno));
                 exit(-1);
             }
+            tmp_syslog_fd = sender.fd;
     }
 
 	m = blobmsg_get_string(tb[LOG_MSG]);
@@ -279,29 +284,24 @@
                         buf[index] ^= 1;
                     }
                 }
-
-
-
-        if (buffer_index >= SYSLOG_BUFF_SIZE)
+        
+        if(buffer_index + len >= SYSLOG_BUFF_SIZE && buffer_index < SYSLOG_BUFF_SIZE)
         {
-            // Flush the buffer if it's full
-            if (write(sender.fd, buffer, buffer_index) < 0)
-            {
-                perror("write error");
-                return -1;
-            }
-            buffer_index = 0; // Reset buffer index after flushing
-        }
-
-        if(len < SYSLOG_BUFF_SIZE)
-        {
-            //copy buf to buffer
             memcpy(buffer + buffer_index, buf, len);
             buffer_index += len;
+            if (write(sender.fd, buffer, buffer_index) < 0) 
+            {
+                perror("write error");
+                close(sender.fd);
+                return -1;
+            }
+            buffer_index = 0;
         }
         else
         {
-            mbtk_write(sender.fd, buf, len);
+            memcpy(buffer + buffer_index, buf, len);
+            buffer_index += len;
+            memcpy(syslog_buff,buffer,buffer_index);
         }
 
 
@@ -619,6 +619,7 @@
 				fprintf(stderr, "failed to open %s: %s\n", tmp_log, strerror(errno));
 				exit(-1);
 			}
+            tmp_syslog_fd = sender.fd;
 		} else {
 			sender.fd = STDOUT_FILENO;
 		}