[Feature][ZXW-292]merge P56U06 version

Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No

Change-Id: I922cf7b03b256d7dd5b0a6b73c3eac813f9512eb
diff --git a/ap/app/zte_mdl/zte_mdl.c b/ap/app/zte_mdl/zte_mdl.c
index d93283c..38bb203 100755
--- a/ap/app/zte_mdl/zte_mdl.c
+++ b/ap/app/zte_mdl/zte_mdl.c
@@ -28,6 +28,11 @@
 #include <pthread.h>
 #include <zte_mdl.h>
 
+#define	PROC_CMDLINE_NO_CONSOLE (0)
+#define	PROC_CMDLINE_CONSOLE    (1)
+#define	STDOUT_BUFFER_SIZE      (256)
+#define	STDOUT_PATH_DEVNULL     "/dev/null"
+
 void nvserver_entry(void)
 {
 	nvserver_main(0,NULL);
@@ -99,12 +104,48 @@
 	//return; //kw 3
 }
 
+void rediect_stdout(void) 
+{
+	int     fd      = 0;
+	FILE    *file   = NULL;
+	int     console = PROC_CMDLINE_NO_CONSOLE;
+	char    buffer[STDOUT_BUFFER_SIZE] = {0};
+
+	file = fopen("/proc/cmdline", "r");
+	if (file == NULL) {
+		printf("rediect_stdout: cmdline file read error\n");
+		return;
+	}
+
+	while (fgets(buffer, sizeof(buffer), file) != NULL) 
+	{
+		if(strstr(buffer, "console"))
+		{
+			console = PROC_CMDLINE_CONSOLE;
+			break;
+		}
+	}
+
+	if((console == PROC_CMDLINE_NO_CONSOLE)
+		&& ((fd = open(STDOUT_PATH_DEVNULL, O_RDWR, 0)) > 0))
+	{
+		(void)dup2(fd, STDIN_FILENO);
+		(void)dup2(fd, STDOUT_FILENO);
+		(void)dup2(fd, STDERR_FILENO);
+	
+		setvbuf(stdout, NULL, _IOLBF, 0);
+		if (fd > STDERR_FILENO)
+			(void)close(fd);
+	}
+	fclose(file);
+}
+
 int main(int argc, char *argv[])
 {
 	/* nvserver */
 	pthread_t nvserver_thread_tid;
 
-	//daemon(0, 0);
+	rediect_stdout();
 	pthread_create(&nvserver_thread_tid, NULL, (void *)nvserver_entry, NULL);
 
 	/* zte_drv_serial_ctrl */