mirror of
https://gitlab.com/gnuwget/wget2.git
synced 2026-02-01 14:41:08 +00:00
replace logger vsprintf, Solaris *printf can't handle NULL arguments
This commit is contained in:
@ -88,10 +88,25 @@ static void _logger_write_func(const mget_logger_t *logger, const char *buf, siz
|
||||
logger->func(buf, len);
|
||||
}
|
||||
|
||||
static void G_GNUC_MGET_PRINTF_FORMAT(2,0) G_GNUC_MGET_NONNULL((1,2))
|
||||
_logger_vfprintf(FILE *fp, const char *fmt, va_list args)
|
||||
{
|
||||
char sbuf[4096];
|
||||
mget_buffer_t buf;
|
||||
int err = errno;
|
||||
|
||||
mget_buffer_init(&buf, sbuf, sizeof(sbuf));
|
||||
mget_buffer_vprintf2(&buf, fmt, args);
|
||||
fwrite(buf.data, 1, buf.length, fp);
|
||||
mget_buffer_deinit(&buf);
|
||||
|
||||
errno = err;
|
||||
}
|
||||
|
||||
static void G_GNUC_MGET_PRINTF_FORMAT(2,0) G_GNUC_MGET_NONNULL((1,2))
|
||||
_logger_vprintf_file(const mget_logger_t *logger, const char *fmt, va_list args)
|
||||
{
|
||||
vfprintf(logger->fp, fmt, args);
|
||||
_logger_vfprintf(logger->fp, fmt, args);
|
||||
}
|
||||
|
||||
static void _logger_write_file(const mget_logger_t *logger, const char *buf, size_t len)
|
||||
@ -105,7 +120,7 @@ _logger_vprintf_fname(const mget_logger_t *logger, const char *fmt, va_list args
|
||||
FILE *fp = fopen(logger->fname, "a");
|
||||
|
||||
if (fp) {
|
||||
vfprintf(fp, fmt, args);
|
||||
_logger_vfprintf(fp, fmt, args);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
|
||||
18
src/log.c
18
src/log.c
@ -40,13 +40,13 @@
|
||||
#include "options.h"
|
||||
#include "log.h"
|
||||
|
||||
static void _write_debug(const char *buf, size_t len)
|
||||
static void _write_debug(const char *data, size_t len)
|
||||
{
|
||||
FILE *fp;
|
||||
struct timeval tv;
|
||||
struct tm *tp, tbuf;
|
||||
|
||||
if (!buf || (ssize_t)len <= 0)
|
||||
if (!data || (ssize_t)len <= 0)
|
||||
return;
|
||||
|
||||
gettimeofday(&tv, NULL); // obsoleted by POSIX.1-2008, maybe use clock_gettime() ? needs -lrt
|
||||
@ -60,9 +60,17 @@ static void _write_debug(const char *buf, size_t len)
|
||||
fp = fopen(config.logfile, "a");
|
||||
|
||||
if (fp) {
|
||||
fprintf(fp, "%02d.%02d%02d%02d.%03ld %s%s",
|
||||
tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec, tv.tv_usec / 1000,
|
||||
buf, buf[len - 1] == '\n' ? "" : "\n");
|
||||
char sbuf[4096];
|
||||
mget_buffer_t buf;
|
||||
|
||||
mget_buffer_init(&buf, sbuf, sizeof(sbuf));
|
||||
mget_buffer_printf2(&buf, "%02d.%02d%02d%02d.%03ld ",
|
||||
tp->tm_mday, tp->tm_hour, tp->tm_min, tp->tm_sec, tv.tv_usec / 1000);
|
||||
mget_buffer_memcat(&buf, data, len);
|
||||
if (data[len -1] != '\n')
|
||||
mget_buffer_memcat(&buf, "\n", 1);
|
||||
fwrite(buf.data, 1, buf.length, fp);
|
||||
mget_buffer_deinit(&buf);
|
||||
|
||||
if (fp != stderr && fp != stdout)
|
||||
fclose(fp);
|
||||
|
||||
Reference in New Issue
Block a user