예제 #1
0
파일: logger.c 프로젝트: saivert/deadbeef
void
ddb_vlog (const char *fmt, va_list ap) {
    char text[2048];
    (void) vsnprintf(text, sizeof (text), fmt, ap);

    _log_internal (NULL, 0, text);
}
예제 #2
0
파일: logger.c 프로젝트: saivert/deadbeef
void
ddb_log (const char *fmt, ...) {
    char text[2048];
    va_list ap;
    va_start(ap, fmt);
    (void) vsnprintf(text, sizeof (text), fmt, ap);
    va_end(ap);

    _log_internal (NULL, 0, text);
}
예제 #3
0
파일: logger.c 프로젝트: saivert/deadbeef
void
ddb_vlog_detailed (DB_plugin_t *plugin, uint32_t layers, const char *fmt, va_list ap) {
    if (!_is_log_visible(plugin, layers)) {
        return;
    }

    char text[2048];
    (void) vsnprintf(text, sizeof (text), fmt, ap);

    _log_internal (plugin, layers, text);
}
예제 #4
0
void _log(const char *file, const char *func, int line, const char *fmt, ...)
{
#define STRLEN 256

    struct logger *l = &logger;
    int len, size, errno_save;
    char buf[LOG_MAX_LEN] = {0}, stamp[STRLEN] = {0};
    va_list args;
    int n = 0;

    if (l->inited == 0)
    {
        _log_stderr(fmt);
        return;
    }

    if (l->fd < 0)
    {
        return;
    }

    errno_save = errno;
    len = 0;            /* length of output buffer */
    size = LOG_MAX_LEN; /* size of output buffer */

    get_timestamp(stamp, STRLEN);
    len += snprintf(buf + len, size - len, "[%s] %s:%s:%d ",
                    stamp, file, func, line);

    va_start(args, fmt);
    len += vsnprintf(buf + len, size - len, fmt, args);
    va_end(args);

    if (buf[len - 1] != '\n')
    {
        buf[len++] = '\n';
        buf[len] = '\0';
    }

    _log_internal(buf, len);

    errno = errno_save;
}
예제 #5
0
/*
 * Hexadecimal dump in the canonical hex + ascii display
 * See -C option in man hexdump
 */
void _log_hexdump(const char *file, const char *func, int line, char *data, int datalen,
                  const char *fmt, ...)
{
    struct logger *l = &logger;
    char buf[8 * LOG_MAX_LEN];
    int i, off, len, size, errno_save;
    ssize_t n;

    if (l->fd < 0 || l->inited > 0)
    {
        return;
    }

    /* log hexdump */
    errno_save = errno;
    off = 0;                  /* data offset */
    len = 0;                  /* length of output buffer */
    size = 8 * LOG_MAX_LEN;   /* size of output buffer */

    while (datalen != 0 && (len < size - 1))
    {
        char *save, *str;
        unsigned char c;
        int savelen;

        len += snprintf(buf + len, size - len, "%08x  ", off);

        save = data;
        savelen = datalen;

        for (i = 0; datalen != 0 && i < 16; data++, datalen--, i++)
        {
            c = (unsigned char)(*data);
            str = (i == 7) ? (char *)"  " : (char *)" ";
            len += snprintf(buf + len, size - len, "%02x%s", c, str);
        }
        for (; i < 16; i++)
        {
            str = (i == 7) ? (char *)"  " : (char *)" ";
            len += snprintf(buf + len, size - len, "  %s", str);
        }

        data = save;
        datalen = savelen;

        len += snprintf(buf + len, size - len, "  |");

        for (i = 0; datalen != 0 && i < 16; data++, datalen--, i++)
        {
            c = (unsigned char)(isprint(*data) ? *data : '.');
            len += snprintf(buf + len, size - len, "%c", c);
        }
        len += snprintf(buf + len, size - len, "|\n");

        off += 16;
    }

    n = _log_internal(buf, len);
    if (n < 0)
    {
        l->nerror++;
    }

    errno = errno_save;
}