Пример #1
0
static int arch_bfdFPrintF(void *buf, const char *fmt, ...)
{
    va_list args;
    va_start(args, fmt);
    int ret = util_vssnprintf(buf, _HF_INSTR_SZ, fmt, args);
    va_end(args);

    return ret;
}
Пример #2
0
void log_msg(log_level_t dl, bool perr, const char *file, const char *func, int line,
             const char *fmt, ...)
{
    char msg[8192] = { "\0" };

    if (dl > log_minLevel) {
        if (dl == l_FATAL) {
            exit(EXIT_FAILURE);
        }
        return;
    }

    char strerr[512];
    if (perr) {
        snprintf(strerr, sizeof(strerr), "%s", strerror(errno));
    }

    struct tm tm;
    struct timeval tv;

    gettimeofday(&tv, NULL);
    localtime_r((const time_t *)&tv.tv_sec, &tm);

    if (log_isStdioTTY == true) {
        util_ssnprintf(msg, sizeof(msg), "%s", logLevels[dl].prefix);
    }
#if defined(_HF_ARCH_LINUX)
#include <unistd.h>
#include <sys/syscall.h>
    pid_t pid = (pid_t) syscall(__NR_gettid);
#else                           /* defined(_HF_ARCH_LINUX) */
    pid_t pid = getpid();
#endif                          /* defined(_HF_ARCH_LINUX) */

    if (log_minLevel != l_INFO || !log_isStdioTTY) {
        util_ssnprintf(msg, sizeof(msg), "%s [%d] %d/%02d/%02d %02d:%02d:%02d (%s:%s %d) ",
                       logLevels[dl].descr, pid, tm.tm_year + 1900,
                       tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec, file, func,
                       line);
    } else {
        util_ssnprintf(msg, sizeof(msg), "%s ", logLevels[dl].descr);
    }

    va_list args;
    va_start(args, fmt);
    util_vssnprintf(msg, sizeof(msg), fmt, args);
    va_end(args);

    if (perr) {
        util_ssnprintf(msg, sizeof(msg), ": %s", strerr);
    }

    if (log_isStdioTTY == true) {
        util_ssnprintf(msg, sizeof(msg), "\033[0m");
    }

    util_ssnprintf(msg, sizeof(msg), "\n");

    log_mutexLock();
    if (write(STDOUT_FILENO, msg, strlen(msg)) == -1) {
    }
    log_mutexUnLock();

    if (dl == l_FATAL) {
        exit(EXIT_FAILURE);
    }
}