From b2e8fd0e41d3437d7214fb4604e22476ddc94e4d Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Thu, 30 Apr 2009 23:56:53 +0000 Subject: [PATCH] Apparently MSVC lacks a ssize_t. Define an ev_ssize_t for headers, and make ssize_t work elsewhere. svn:r1261 --- WIN32-Code/event-config.h | 3 +++ configure.in | 1 + include/event2/buffer.h | 6 +++--- include/event2/bufferevent.h | 2 +- include/event2/util.h | 6 ++++++ util-internal.h | 3 +++ 6 files changed, 17 insertions(+), 4 deletions(-) diff --git a/WIN32-Code/event-config.h b/WIN32-Code/event-config.h index ffceb7d6..0cc35f3d 100644 --- a/WIN32-Code/event-config.h +++ b/WIN32-Code/event-config.h @@ -331,4 +331,7 @@ /* Define to unsigned int if you dont have it */ #define _EVENT_socklen_t unsigned int +/* Define to `int' if does not define. */ +#define _EVENT_ssize_t SSIZE_T + #endif diff --git a/configure.in b/configure.in index 3a040958..588a810b 100644 --- a/configure.in +++ b/configure.in @@ -320,6 +320,7 @@ fi AC_TYPE_PID_T AC_TYPE_SIZE_T +AC_TYPE_SSIZE_T AC_CHECK_TYPES([uint64_t, uint32_t, uint16_t, uint8_t], , , [#ifdef HAVE_STDINT_H diff --git a/include/event2/buffer.h b/include/event2/buffer.h index 4fcebc18..b458da50 100644 --- a/include/event2/buffer.h +++ b/include/event2/buffer.h @@ -80,7 +80,7 @@ struct evbuffer; modify these values except with evbuffer_ptr_set. */ struct evbuffer_ptr { - ssize_t pos; + ev_ssize_t pos; /* Do not alter the values of fields. */ struct { @@ -379,7 +379,7 @@ int evbuffer_write(struct evbuffer *buffer, evutil_socket_t fd); @see evbuffer_read() */ int evbuffer_write_atmost(struct evbuffer *buffer, evutil_socket_t fd, - ssize_t howmuch); + ev_ssize_t howmuch); /** Read from a file descriptor and store the result in an evbuffer. @@ -537,7 +537,7 @@ void evbuffer_cb_unsuspend(struct evbuffer *buffer, struct evbuffer_cb_entry *cb @return a pointer to the contigous memory areay */ -unsigned char *evbuffer_pullup(struct evbuffer *buf, ssize_t size); +unsigned char *evbuffer_pullup(struct evbuffer *buf, ev_ssize_t size); /** Prepends data to the beginning of the evbuffer diff --git a/include/event2/bufferevent.h b/include/event2/bufferevent.h index 94cebe27..0130f285 100644 --- a/include/event2/bufferevent.h +++ b/include/event2/bufferevent.h @@ -394,7 +394,7 @@ enum bufferevent_filter_result { on an error. */ typedef enum bufferevent_filter_result (*bufferevent_filter_cb)( - struct evbuffer *src, struct evbuffer *dst, ssize_t dst_limit, + struct evbuffer *src, struct evbuffer *dst, ev_ssize_t dst_limit, enum bufferevent_flush_mode mode, void *ctx); /** diff --git a/include/event2/util.h b/include/event2/util.h index eb31ec58..15ca3f31 100644 --- a/include/event2/util.h +++ b/include/event2/util.h @@ -112,6 +112,12 @@ extern "C" { #define ev_uint8_t unsigned char #endif +#ifdef _EVENT_ssize_t +#define ev_ssize_t _EVENT_ssize_t +#else +#define ev_ssize_t ssize_t +#endif + #ifdef WIN32 /** A type wide enough to hold the output of "socket()" or "accept()". On * Windows, this is an intptr_t; elsewhere, it is an int. */ diff --git a/util-internal.h b/util-internal.h index 201b349d..569cafa2 100644 --- a/util-internal.h +++ b/util-internal.h @@ -40,6 +40,9 @@ extern "C" { #ifdef _EVENT___func__ #define __func__ _EVENT___func__ #endif +#ifdef _EVENT_ssize_t +#define ssize_t _EVENT_ssize_t +#endif /* A good no-op to use in macro definitions. */ #define _EVUTIL_NIL_STMT ((void)0) -- 2.50.1