Annotation of mqtt/src/logmqtt.c, revision 1.3

1.2       misho       1: #include "global.h"
                      2: 
                      3: 
                      4: extern char *__progname;
                      5: 
                      6: 
                      7: /*
                      8:  * mqtt_rtlm_log() Log message
                      9:  *
                     10:  * @fmt = format string
                     11:  * @... = argument list
                     12:  * return: none
                     13:  */
                     14: static void
                     15: mqtt_rtlm_log(const char *fmt, ...)
                     16: {
                     17:        va_list lst;
                     18: 
                     19:        va_start(lst, fmt);
                     20:        vsyslog(LOG_ERR, fmt, lst);
                     21:        va_end(lst);
                     22: }
                     23: #define MQTT_RTLM_LOG()        (mqtt_rtlm_log("Error:: System #%d - %s", errno, strerror(errno)))
                     24: 
                     25: 
                     26: /*
                     27:  * mqtt_rtlm_open() Open log file
                     28:  *
                     29:  * @cfg = loaded config
                     30:  * return: NULL error or SQL handle
                     31:  */
                     32: FILE *
1.3     ! misho      33: mqtt_rtlm_open(cfg_root_t *cfg)
1.2       misho      34: {
                     35:        FILE *f = NULL;
                     36:        const char *str = NULL;
                     37: 
                     38:        if (!cfg)
                     39:                return NULL;
                     40: 
1.3     ! misho      41:        str = cfg_getAttribute(cfg, "mqtt_log", "name");
1.2       misho      42:        if (!str) {
                     43:                mqtt_rtlm_log("Error:: Unknown file name ...\n");
                     44:                return NULL;
                     45:        }
                     46: 
                     47:        if (!(f = fopen(str, "a"))) {
                     48:                MQTT_RTLM_LOG();
                     49:                return NULL;
                     50:        }
                     51: 
                     52:        return f;
                     53: }
                     54: 
                     55: /*
                     56:  * mqtt_rtlm_close() Close log file
                     57:  *
                     58:  * @f = File handle
                     59:  * return: none
                     60:  */
                     61: void
                     62: mqtt_rtlm_close(FILE *f)
                     63: {
                     64:        if (f)
                     65:                fclose(f);
                     66: }
                     67: 
                     68: /*
                     69:  * mqtt_rtlm_logger() Logger to file
                     70:  *
                     71:  * @f = File handle
                     72:  * @fmt = Message format
                     73:  * @... = argument list
                     74:  * return: -1 error or >-1 logged successful
                     75:  */
                     76: int
                     77: mqtt_rtlm_logger(FILE *f, const char *fmt, ...)
                     78: {
                     79:        va_list lst;
                     80:        int ret = 0;
                     81:        char szStr[STRSIZ] = { 0 }, szFmt[BUFSIZ] = { 0 };
                     82:        struct tm *tm;
                     83:        time_t tim;
                     84: 
                     85:        if (!f || !fmt)
                     86:                return -1;
                     87: 
                     88:        tim = time(NULL);
                     89:        tm = localtime(&tim);
                     90:        strftime(szFmt, sizeof szFmt, "[%Y-%m-%d %H:%M:%S] ", tm);
                     91:        snprintf(szStr, sizeof szStr, "%s (%d):: ", __progname, getpid());
                     92:        strlcat(szFmt, szStr, sizeof szFmt);
                     93:        strlcat(szFmt, fmt, sizeof szFmt);
                     94: 
                     95:        va_start(lst, fmt);
                     96:        ret = vfprintf(f, szFmt, lst);
                     97:        va_end(lst);
                     98: 
                     99:        fflush(f);
                    100:        return ret;
                    101: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>