mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-13 14:26:30 -04:00
move snprintf and vsnprintf to evutil to support windows
svn:r874
This commit is contained in:
parent
fb0b274e97
commit
8f39908fd2
29
evutil.c
29
evutil.c
@ -52,6 +52,7 @@
|
|||||||
#if defined WIN32 && !defined(HAVE_GETTIMEOFDAY_H)
|
#if defined WIN32 && !defined(HAVE_GETTIMEOFDAY_H)
|
||||||
#include <sys/timeb.h>
|
#include <sys/timeb.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
#include "evutil.h"
|
#include "evutil.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
@ -214,3 +215,31 @@ evutil_gettimeofday(struct timeval *tv, struct timezone *tz)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int
|
||||||
|
evutil_snprintf(char *buf, size_t buflen, const char *format, ...)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
va_list ap;
|
||||||
|
va_start(ap, format);
|
||||||
|
r = evutil_vsnprintf(buf, buflen, format, ap);
|
||||||
|
va_end(ap);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap)
|
||||||
|
{
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
int r = _vsnprintf(buf, buflen, format, ap);
|
||||||
|
buf[buflen-1] = '\0';
|
||||||
|
if (r >= 0)
|
||||||
|
return r;
|
||||||
|
else
|
||||||
|
return _vscprintf(format, ap);
|
||||||
|
#else
|
||||||
|
int r = vsnprintf(buf, buflen, format, ap);
|
||||||
|
buf[buflen-1] = '\0';
|
||||||
|
return r;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
7
evutil.h
7
evutil.h
@ -170,6 +170,13 @@ ev_int64_t evutil_strtoll(const char *s, char **endptr, int base);
|
|||||||
int evutil_gettimeofday(struct timeval *tv, struct timezone *tz);
|
int evutil_gettimeofday(struct timeval *tv, struct timezone *tz);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
int evutil_snprintf(char *buf, size_t buflen, const char *format, ...)
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__attribute__((format(printf, 3, 4)))
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
int evutil_vsnprintf(char *buf, size_t buflen, const char *format, va_list ap);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
34
log.c
34
log.c
@ -60,42 +60,12 @@
|
|||||||
#include "event.h"
|
#include "event.h"
|
||||||
|
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
#include "evutil.h"
|
||||||
|
|
||||||
static void _warn_helper(int severity, int log_errno, const char *fmt,
|
static void _warn_helper(int severity, int log_errno, const char *fmt,
|
||||||
va_list ap);
|
va_list ap);
|
||||||
static void event_log(int severity, const char *msg);
|
static void event_log(int severity, const char *msg);
|
||||||
|
|
||||||
static int
|
|
||||||
event_vsnprintf(char *str, size_t size, const char *format, va_list args)
|
|
||||||
{
|
|
||||||
int r;
|
|
||||||
if (size == 0)
|
|
||||||
return -1;
|
|
||||||
#ifdef WIN32
|
|
||||||
r = _vsnprintf(str, size, format, args);
|
|
||||||
#else
|
|
||||||
r = vsnprintf(str, size, format, args);
|
|
||||||
#endif
|
|
||||||
str[size-1] = '\0';
|
|
||||||
if (r < 0 || ((size_t)r) >= size) {
|
|
||||||
/* different platforms behave differently on overflow;
|
|
||||||
* handle both kinds. */
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
event_snprintf(char *str, size_t size, const char *format, ...)
|
|
||||||
{
|
|
||||||
va_list ap;
|
|
||||||
int r;
|
|
||||||
va_start(ap, format);
|
|
||||||
r = event_vsnprintf(str, size, format, ap);
|
|
||||||
va_end(ap);
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
event_err(int eval, const char *fmt, ...)
|
event_err(int eval, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
@ -172,7 +142,7 @@ _warn_helper(int severity, int log_errno, const char *fmt, va_list ap)
|
|||||||
if (log_errno >= 0) {
|
if (log_errno >= 0) {
|
||||||
len = strlen(buf);
|
len = strlen(buf);
|
||||||
if (len < sizeof(buf) - 3) {
|
if (len < sizeof(buf) - 3) {
|
||||||
event_snprintf(buf + len, sizeof(buf) - len, ": %s",
|
evutil_snprintf(buf + len, sizeof(buf) - len, ": %s",
|
||||||
strerror(log_errno));
|
strerror(log_errno));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user