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