From 4c2677100744cfa66d55d5f551523231799a781b Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Thu, 14 Apr 2022 10:08:52 +0800
Subject: [PATCH] Merge branch 'master' of ssh://master.iot-yun.club:2280/framwork

---
 booster/logger.h       |   20 +---
 booster/test/makefile  |    4 +
 booster/util_proc.c    |    8 +-
 booster/makefile       |    3 
 booster/logger.c       |   85 ++++++--------------
 booster/test/comport.c |    8 +-
 booster/comport.c      |   58 ++++---------
 booster/test/logger.c  |   42 ++++++++++
 8 files changed, 108 insertions(+), 120 deletions(-)

diff --git a/booster/comport.c b/booster/comport.c
index c044f9f..8f45e45 100644
--- a/booster/comport.c
+++ b/booster/comport.c
@@ -322,7 +322,7 @@
 int comport_send(comport_t *comport, char *buf, int send_bytes)
 {
     int                         rv = 0;
-    char                       *ptr, *end;
+    char                       *ptr, left_bytes;
     int                         send = 0;
 
     if ( !comport || !buf || send_bytes<=0 )
@@ -341,48 +341,28 @@
 
     //printf("Send %s with %d bytes.\n", buf, send_bytes);
 
-    // Large data, then slice them and send
-    if (comport->frag_size < send_bytes)
-    {
-        ptr = buf;
-        end = buf + send_bytes;
 
-        do
-        {
-            // Large than frag_size
-            if (comport->frag_size < (end - ptr))
-            {
-                send = write(comport->fd, ptr, comport->frag_size);
-                if (0 >= send || comport->frag_size != send)
-                {
-                    rv = -4;
-                    goto CleanUp;
-                }
-                ptr += comport->frag_size;
-            }
-            else   // Less than frag_size, maybe last fragmention.
-            {
-                send = write(comport->fd, ptr, (end - ptr));
-                if (0 >= send || (end - ptr) != send)
-                {
-                    rv = -4;
-                    goto CleanUp;
-                }
-                ptr += (end - ptr);
-            }
-        }
-        while (ptr < end);
-    }
-    else                        // The send data is not large than a fragmention.
+    left_bytes = send_bytes;
+    ptr = buf;
+
+    while( left_bytes > 0 )
     {
-        send = write(comport->fd, buf, send_bytes);
-        if (0 >= send || send_bytes != send)
-        {
-            rv = -5;
-            goto CleanUp;
-        }
+        /* Large data, then slice them to frag and send */
+	send = left_bytes>comport->frag_size ? comport->frag_size : left_bytes;
+	
+	rv = write(comport->fd, ptr, send);
+       	if( rv<0 )
+       	{
+	       	rv = -4;
+	       	goto CleanUp;
+       	} 
+	
+	left_bytes -= rv; 
+	ptr += rv; 
     }
 
+    rv = 0;
+
 CleanUp:
     return rv;
 }
diff --git a/booster/logger.c b/booster/logger.c
index d8f0e92..692635f 100644
--- a/booster/logger.c
+++ b/booster/logger.c
@@ -20,7 +20,7 @@
 /* This library is not thread safe */
 static logger_t *logger = NULL;
 
-char *log_str[LOG_LEVEL_MAX + 1] = { "", "F", "E", "W", "N", "D", "I", "T", "M" };
+char *log_str[LOG_LEVEL_MAX + 1] = { "", "E", "W", "N", "D", "I", "M" };
 
 #define LOG_TIME_FMT       "%Y-%m-%d %H:%M:%S"
 
@@ -32,8 +32,8 @@
     if (sig == SIGHUP)
     {
         signal(SIGHUP, log_signal_handler);
-        log_fatal("SIGHUP received - reopenning log file [%s]", logger->file);
-        logger_reopen();
+        log_err("SIGHUP received - reopenning log file [%s]", logger->file);
+        log_reopen();
     }
 }
 
@@ -81,65 +81,44 @@
 
 
 /* log_size unit is KB */
-int logger_init(logger_t *log, char *log_file, int level, int log_size)
+int log_open(logger_t *log, char *log_file, int level, int log_size)
 {
-    if( !log )
+    struct sigaction              act;
+    char                         *filemode;
+
+    if(!log)
     {
         printf("ERROR: Invalid input arguments\n");
         return -1;
     }
 
-    if( log_file ) 
-    {
-        strncpy(log->file, log_file, FILENAME_LEN); 
-        log->flag |= FLAG_LOGGER_FILE;
-    }
-    else
-    {
-        strncpy(log->file, DBG_LOG_FILE, FILENAME_LEN); 
-        log->flag |= FLAG_LOGGER_CONSOLE;
-    }
-
-    log->level = level;
-    log->size = log_size; 
-
     /* set static global $logger point to argument $log  */
     logger = log;
 
-    return 0;
-}
 
-int logger_open(void)
-{
-    struct sigaction act;
-    char *filemode;
-
-    if(!logger)
+    /* use standard error as output */
+    if( !log_file || log_file[0]=='\0' || !strcmp(log_file, LOG_STDERR)) 
     {
-        printf("ERROR: logger not initialise\n");
-        return -1;
-    }
-
-    log_rollback_size = logger->size <= 0 ? LOG_ROLLBACK_NONE : logger->size*1024;    /* Unit KiB */
-        
-    if ('\0' == logger->file[0])
-    {
-        printf("ERROR: Logger filename not set\n");
-        return -1;
-    }
-
-    if (!strcmp(logger->file, DBG_LOG_FILE))
-    {
-        logger->fp = stderr;
-        log_rollback_size = LOG_ROLLBACK_NONE;
+        strncpy(logger->file, LOG_STDERR, FILENAME_LEN); 
         logger->flag |= FLAG_LOGGER_CONSOLE;
+        logger->level = level;
+        logger->fp = stderr;
+
+        log_rollback_size = LOG_ROLLBACK_NONE;
         goto OUT;
     }
 
+    strncpy(logger->file, log_file, FILENAME_LEN); 
+    logger->flag |= FLAG_LOGGER_FILE;
+    logger->level = level;
+    logger->size = log_size; 
+
+    log_rollback_size = log_size <= 0 ? LOG_ROLLBACK_NONE : log_size*1024;    /* Unit KiB */
+        
     filemode = (log_rollback_size==LOG_ROLLBACK_NONE) ? "a+" : "w+";
 
     logger->fp = fopen(logger->file, filemode);
-    if (NULL == logger->fp)
+    if ( !logger->fp )
     {
         fprintf(stderr, "Open log file \"%s\" in %s failure: %s\n", logger->file, filemode, strerror(errno));
         return -2;
@@ -152,11 +131,10 @@
 
   OUT:
     logger_banner("Initialize");
-
     return 0;
 }
 
-void logger_close(void)
+void log_close(void)
 {
     if (!logger || !logger->fp )
         return;
@@ -172,15 +150,13 @@
     return ;
 }
 
-int logger_reopen(void)
+int log_reopen(void)
 {
     int rc = 0;
     char *filemode;
 
     if( !logger )
         return -1;
-
-    log_rollback_size = logger->size <= 0 ? LOG_ROLLBACK_NONE : logger->size*1024;    /* Unit KiB */
 
     if (logger->flag & FLAG_LOGGER_CONSOLE )
     {
@@ -191,7 +167,7 @@
 
     if (logger->fp)
     {
-        logger_close();
+        log_close();
         filemode = log_rollback_size==LOG_ROLLBACK_NONE ? "a+" : "w+";
         logger->fp = fopen(logger->file, filemode); 
         
@@ -210,15 +186,6 @@
     return rc;
 }
 
-void logger_term(void)
-{
-    if(!logger)
-        return ;
-
-    logger_close();
-
-    logger = NULL;
-}
 
 void logger_raw(const char *fmt, ...)
 {
diff --git a/booster/logger.h b/booster/logger.h
index 7031761..786bdf8 100644
--- a/booster/logger.h
+++ b/booster/logger.h
@@ -32,7 +32,7 @@
 #define FILENAME_LEN                64
 #endif
 
-#define DBG_LOG_FILE                "stderr"  /*  Debug mode log file is console */ 
+#define LOG_STDERR                 "stderr"  /*  Debug mode log file is console */ 
 
 #define LOG_ROLLBACK_SIZE           512    /* Default rollback log size  */
 #define LOG_ROLLBACK_NONE           0      /* Set rollback size to 0 will not rollback  */
@@ -45,13 +45,11 @@
 enum
 {
     LOG_LEVEL_DISB = 0,               /*  Disable "Debug" */
-    LOG_LEVEL_FATAL,                  /*  Debug Level "Fatal" */
     LOG_LEVEL_ERROR,                  /*  Debug Level "ERROR" */
     LOG_LEVEL_WARN,                   /*  Debug Level "warnning" */
     LOG_LEVEL_NRML,                   /*  Debug Level "Normal" */
     LOG_LEVEL_DEBUG,                  /*  Debug Level "Debug" */
     LOG_LEVEL_INFO,                   /*  Debug Level "Information" */
-    LOG_LEVEL_TRACE,                  /*  Debug Level "Trace" */
     LOG_LEVEL_MAX,
 };
 
@@ -76,14 +74,12 @@
 extern char *log_str[];
 
 /* log_size unit is KB */
-extern int  logger_init(logger_t *logger, char *filename, int level, int log_size);
-extern int  logger_open(void);
-extern void logger_set_time_format(char *time_format);
-extern int  logger_reopen(void);
-extern void logger_close(void);
-extern void logger_term(void);
-extern void logger_raw(const char *fmt, ...);
+extern int  log_open(logger_t *logger, char *filename, int level, int log_size);
+extern int  log_reopen(void);
+extern void log_close(void);
 
+/* lowlvel API */
+extern void logger_raw(const char *fmt, ...);
 extern void logger_min(int level, char *fmt, ...);
 extern void logger_line(int level, char *file, int line, char *fmt, ...);
 extern void logger_str(int level, const char *msg);
@@ -92,21 +88,17 @@
 #define LOG_FILE_LINE      /* Log the file and line */
 
 #ifdef LOG_FILE_LINE
-#define log_trace(fmt, ...) logger_line(LOG_LEVEL_TRACE, __FILE__, __LINE__, fmt, ##__VA_ARGS__)
 #define log_info(fmt, ...)  logger_line(LOG_LEVEL_INFO,  __FILE__, __LINE__, fmt, ##__VA_ARGS__)
 #define log_dbg(fmt, ...)   logger_line(LOG_LEVEL_DEBUG, __FILE__, __LINE__, fmt, ##__VA_ARGS__)
 #define log_nrml(fmt, ...)  logger_line(LOG_LEVEL_NRML,  __FILE__, __LINE__, fmt, ##__VA_ARGS__)
 #define log_warn(fmt, ...)  logger_line(LOG_LEVEL_WARN,  __FILE__, __LINE__, fmt, ##__VA_ARGS__)
 #define log_err(fmt, ...)   logger_line(LOG_LEVEL_ERROR, __FILE__, __LINE__, fmt, ##__VA_ARGS__)
-#define log_fatal(fmt, ...) logger_line(LOG_LEVEL_FATAL, __FILE__, __LINE__, fmt, ##__VA_ARGS__)
 #else
-#define log_trace(fmt, ...) logger_min(LOG_LEVEL_TRACE, fmt, ##__VA_ARGS__)
 #define log_info(fmt, ...)  logger_min(LOG_LEVEL_INFO, fmt, ##__VA_ARGS__)
 #define log_dbg(fmt, ...)   logger_min(LOG_LEVEL_DEBUG, fmt, ##__VA_ARGS__)
 #define log_nrml(fmt, ...)  logger_min(LOG_LEVEL_NRML, fmt, ##__VA_ARGS__)
 #define log_warn(fmt, ...)  logger_min(LOG_LEVEL_WARN, fmt, ##__VA_ARGS__)
 #define log_err(fmt, ...)   logger_min(LOG_LEVEL_ERROR, fmt, ##__VA_ARGS__)
-#define log_fatal(fmt, ...) logger_min(LOG_LEVEL_FATAL, fmt, ##__VA_ARGS__)
 #endif
 
 #endif   /* ----- #ifndef _LOGGER_H_  ----- */
diff --git a/booster/makefile b/booster/makefile
index 608137a..745ae81 100644
--- a/booster/makefile
+++ b/booster/makefile
@@ -13,3 +13,6 @@
 	@rm -f *.o
 	@rm -f *.a
 
+distclean:
+	@make clean
+	@rm -f cscope.* tags
diff --git a/booster/test/comport.c b/booster/test/comport.c
index 80be4e4..267a94c 100644
--- a/booster/test/comport.c
+++ b/booster/test/comport.c
@@ -53,7 +53,7 @@
         {NULL, 0, NULL, 0}
     };
 
-    while ((opt = getopt_long(argc, argv, "d:b:s:vh", long_options, NULL)) != -1)
+    while ((opt = getopt_long(argc, argv, "d:b:s:xvh", long_options, NULL)) != -1)
     {
         switch (opt)
         {
@@ -175,10 +175,10 @@
 
     ptr = strdup(name);
     progname = basename(ptr);
-    printf("Usage1: comport -d <device> [-b <baudrate>][-s <settings>] [-x]\n");
-    printf(" -d[device  ]  device name\n");
+    printf("Usage: comport -d <device> [-b <baudrate>][-s <settings>] [-x]\n");
+    printf(" -d[device  ]  device name, such as /dev/ttyUSB0\n");
     printf(" -b[baudrate]  device baudrate (115200, 57600, 19200, 9600), default is 115200\n");
-    printf(" -s[settings]  device settings as like 8N1N(default setting)\n");
+    printf(" -s[settings]  device settings as like 8N1N(defalt setting)\n");
     printf("                 - data bits: 8, 7\n");
     printf("                 - parity: N=None, O=Odd, E=Even, S=Space\n");
     printf("                 - stop bits: 1, 0\n");
diff --git a/booster/test/logger.c b/booster/test/logger.c
new file mode 100644
index 0000000..bed33cb
--- /dev/null
+++ b/booster/test/logger.c
@@ -0,0 +1,42 @@
+/*********************************************************************************
+ *      Copyright:  (C) 2021 LingYun IoT System Studio
+ *                  All rights reserved.
+ *
+ *       Filename:  logger.c
+ *    Description:  This file is logger system sample code.
+ *                 
+ *        Version:  1.0.0(17/07/21)
+ *         Author:  Guo Wenxue <guowenxue@gmail.com>
+ *      ChangeLog:  1, Release initial version on "17/07/21 15:51:04"
+ *                 
+ ********************************************************************************/
+#include "logger.h"
+
+#define LOG_FILE      "test.log"
+
+int main (int argc, char **argv)
+{
+    int             rv;
+    logger_t        log;
+
+#ifdef LOG_FILE
+    if( log_open(&log, "test.log", LOG_LEVEL_NRML, 512) < 0 )
+#else
+    if( log_open(&log, LOG_STDERR, LOG_LEVEL_DEBUG, LOG_ROLLBACK_NONE) < 0 )
+#endif
+    {
+        fprintf(stderr, "initialise logger system failure, rv=%d\n", rv);
+        return -1;
+    }
+
+    log_info("logger level [information] message\n");
+    log_dbg ("logger level [   debug   ] message\n");
+    log_nrml("logger level [   normal  ] message\n");
+    log_warn("logger level [  warnning ] message\n");
+    log_err ("logger level [    error  ] message\n");
+
+    log_close();
+
+    return 0;
+} 
+
diff --git a/booster/test/makefile b/booster/test/makefile
index 05bcfa7..1a3718f 100644
--- a/booster/test/makefile
+++ b/booster/test/makefile
@@ -23,4 +23,8 @@
 
 clean:
 	@rm -f ${BINARIES} 
+	@rm -f *.log
 
+distclean:
+	@make clean
+	@rm -f cscope.* tags
diff --git a/booster/util_proc.c b/booster/util_proc.c
index 700bb65..9474851 100644
--- a/booster/util_proc.c
+++ b/booster/util_proc.c
@@ -209,7 +209,7 @@
     { 
         if (mkdir(ipc_dir, mode) < 0) 
         { 
-            log_fatal("cannot create %s: %s\n", ipc_dir, strerror(errno)); 
+            log_err("cannot create %s: %s\n", ipc_dir, strerror(errno)); 
             return -1; 
         } 
         
@@ -229,7 +229,7 @@
     } 
     else 
     {
-        log_fatal("cannot create %s: %s\n", pid_file, strerror(errno));
+        log_err("cannot create %s: %s\n", pid_file, strerror(errno));
         return -1;
     }
 
@@ -257,7 +257,7 @@
     } 
     else
     {
-        log_fatal("Can't open PID record file %s: %s\n", pid_file, strerror(errno));
+        log_err("Can't open PID record file %s: %s\n", pid_file, strerror(errno));
         return -1;
     } 
     return pid;
@@ -360,7 +360,7 @@
     
     if (record_daemon_pid(pid_file) < 0) 
     { 
-        log_fatal("Record PID to file \"%s\" failure.\n", pid_file); 
+        log_err("Record PID to file \"%s\" failure.\n", pid_file); 
         return -2;
     }
 

--
Gitblit v1.9.1