static void put_ctx(bt_log_message *const msg) { _PP_MAP(_BT_LOG_MESSAGE_FORMAT_INIT, BT_LOG_MESSAGE_CTX_FORMAT) #if !_BT_LOG_MESSAGE_FORMAT_FIELDS(BT_LOG_MESSAGE_CTX_FORMAT) VAR_UNUSED(msg); #else #if _BT_LOG_MESSAGE_FORMAT_DATETIME_USED struct tm tm; unsigned msec; g_time_cb(&tm, &msec); #endif #if _BT_LOG_MESSAGE_FORMAT_CONTAINS(PID, BT_LOG_MESSAGE_CTX_FORMAT) || \ _BT_LOG_MESSAGE_FORMAT_CONTAINS(TID, BT_LOG_MESSAGE_CTX_FORMAT) int pid, tid; g_pid_cb(&pid, &tid); #endif #if BT_LOG_OPTIMIZE_SIZE int n; n = snprintf(msg->p, nprintf_size(msg), _PP_MAP(_BT_LOG_MESSAGE_FORMAT_PRINTF_FMT, BT_LOG_MESSAGE_CTX_FORMAT) _PP_MAP(_BT_LOG_MESSAGE_FORMAT_PRINTF_VAL, BT_LOG_MESSAGE_CTX_FORMAT)); put_nprintf(msg, n); #else char buf[64]; char *const e = buf + sizeof(buf); char *p = e; _PP_RMAP(_BT_LOG_MESSAGE_FORMAT_PUT_R, BT_LOG_MESSAGE_CTX_FORMAT) msg->p = put_stringn(p, e, msg->p, msg->e); #endif #endif }
static void put_msg(zf_log_message *const msg, const char *const fmt, va_list va) { int n; msg->msg_b = msg->p; n = vsnprintf(msg->p, nprintf_size(msg), fmt, va); put_nprintf(msg, n); }
static void put_src(zf_log_message *const msg, const src_location *const src) { #if ZF_LOG_OPTIMIZE_SIZE int n; n = snprintf(msg->p, nprintf_size(msg), "%s@%s:%u ", src->func, filename(src->file), src->line); put_nprintf(msg, n); #else msg->p = put_string(src->func, msg->p, msg->e); if (msg->p < msg->e) *msg->p++ = '@'; msg->p = put_string(filename(src->file), msg->p, msg->e); if (msg->p < msg->e) *msg->p++ = ':'; msg->p = put_uint(src->line, 0, '\0', msg->p, msg->e); if (msg->p < msg->e) *msg->p++ = ' '; #endif }
static void put_ctx(zf_log_message *const msg) { struct tm tm; unsigned msec; int pid, tid; g_time_cb(&tm, &msec); g_pid_cb(&pid, &tid); #if ZF_LOG_OPTIMIZE_SIZE int n; n = snprintf(msg->p, nprintf_size(msg), "%02u-%02u %02u:%02u:%02u.%03u %5i %5i %c ", (unsigned)(tm.tm_mon + 1), (unsigned)tm.tm_mday, (unsigned)tm.tm_hour, (unsigned)tm.tm_min, (unsigned)tm.tm_sec, (unsigned)msec, pid, tid, (char)lvl_char(msg->lvl)); put_nprintf(msg, n); #else char buf[64]; char *const e = buf + sizeof(buf); char *p = e; *--p = ' '; *--p = lvl_char(msg->lvl); *--p = ' '; p = put_int_r(tid, 5, ' ', p); *--p = ' '; p = put_int_r(pid, 5, ' ', p); *--p = ' '; p = put_uint_r(msec, 3, '0', p); *--p = '.'; p = put_uint_r(tm.tm_sec, 2, '0', p); *--p = ':'; p = put_uint_r(tm.tm_min, 2, '0', p); *--p = ':'; p = put_uint_r(tm.tm_hour, 2, '0', p); *--p = ' '; p = put_uint_r(tm.tm_mday, 2, '0', p); *--p = '-'; p = put_uint_r(tm.tm_mon + 1, 2, '0', p); msg->p = put_stringn(p, e, msg->p, msg->e); #endif }
static void put_src(bt_log_message *const msg, const src_location *const src) { _PP_MAP(_BT_LOG_MESSAGE_FORMAT_INIT, BT_LOG_MESSAGE_SRC_FORMAT) #if !_BT_LOG_MESSAGE_FORMAT_CONTAINS(FUNCTION, BT_LOG_MESSAGE_SRC_FORMAT) && \ !_BT_LOG_MESSAGE_FORMAT_CONTAINS(FILENAME, BT_LOG_MESSAGE_SRC_FORMAT) && \ !_BT_LOG_MESSAGE_FORMAT_CONTAINS(FILELINE, BT_LOG_MESSAGE_SRC_FORMAT) VAR_UNUSED(src); #endif #if !_BT_LOG_MESSAGE_FORMAT_FIELDS(BT_LOG_MESSAGE_SRC_FORMAT) VAR_UNUSED(msg); #else #if BT_LOG_OPTIMIZE_SIZE int n; n = snprintf(msg->p, nprintf_size(msg), _PP_MAP(_BT_LOG_MESSAGE_FORMAT_PRINTF_FMT, BT_LOG_MESSAGE_SRC_FORMAT) _PP_MAP(_BT_LOG_MESSAGE_FORMAT_PRINTF_VAL, BT_LOG_MESSAGE_SRC_FORMAT)); put_nprintf(msg, n); #else _PP_MAP(_BT_LOG_MESSAGE_FORMAT_PUT, BT_LOG_MESSAGE_SRC_FORMAT) #endif #endif }