Exemplo n.º 1
0
ssize_t
tapdisk_logfile_vprintf(td_logfile_t *log, const char *fmt, va_list ap)
{
    char buf[1024];
    size_t size, n;
    ssize_t len;
    struct timeval tv;

    if (!log->file)
        return -EBADF;

    gettimeofday(&tv, NULL);

    size = sizeof(buf);
    len  = 0;

    len += tapdisk_syslog_strftime(buf, size, &tv);
    len += snprintf(buf + len, size - len, ": ");
    len += tapdisk_syslog_strftv(buf + len, size - len, &tv);
    len += snprintf(buf + len, size - len, " ");
    len += vsnprintf(buf + len, size - len, fmt, ap);

    if (buf[len-1] != '\n')
        len += snprintf(buf + len, size - len, "\n");

    n = fwrite(buf, len, 1, log->file);
    if (n != len)
        len = -ferror(log->file);

    return len;
}
Exemplo n.º 2
0
static int
tapdisk_syslog_vsprintf(char *buf, size_t size,
			int prio, const struct timeval *tv, const char *ident,
			const char *fmt, va_list ap)
{
	char tsbuf[TD_SYSLOG_STRTIME_LEN+1];
	size_t len;

	/*
	 * PKT       := PRI HEADER MSG
	 * PRI       := "<" {"0" .. "9"} ">"
	 * HEADER    := TIMESTAMP HOSTNAME
	 * MSG       := <TAG> <SEP> <CONTENT>
	 * SEP       := ":" | " " | "["
	 */

	tapdisk_syslog_strftime(tsbuf, sizeof(tsbuf), tv);

	len = 0;

	/* NB. meant to work with c99 null buffers */

	len += snprintf(buf ? buf + len : NULL, buf ? size - len : 0,
			"<%d>%s %s: ", prio, tsbuf, ident);

	len += vsnprintf(buf ? buf + len : NULL, buf ? size - len : 0,
			 fmt, ap);

	return MIN(len, size);
}