summaryrefslogtreecommitdiff
path: root/src/ejabberd_zlib/ejabberd_zlib_drv.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/ejabberd_zlib/ejabberd_zlib_drv.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/ejabberd_zlib/ejabberd_zlib_drv.c b/src/ejabberd_zlib/ejabberd_zlib_drv.c
index ca3e7938..bcd9ad30 100644
--- a/src/ejabberd_zlib/ejabberd_zlib_drv.c
+++ b/src/ejabberd_zlib/ejabberd_zlib_drv.c
@@ -23,6 +23,15 @@
#include <erl_driver.h>
#include <zlib.h>
+/*
+ * R15B changed several driver callbacks to use ErlDrvSizeT and
+ * ErlDrvSSizeT typedefs instead of int.
+ * This provides missing typedefs on older OTP versions.
+ */
+#if ERL_DRV_EXTENDED_MAJOR_VERSION < 2
+typedef int ErlDrvSizeT;
+typedef int ErlDrvSSizeT;
+#endif
#define BUF_SIZE 1024
@@ -98,10 +107,10 @@ static void ejabberd_zlib_drv_stop(ErlDrvData handle)
}
-static int ejabberd_zlib_drv_control(ErlDrvData handle,
+static ErlDrvSSizeT ejabberd_zlib_drv_control(ErlDrvData handle,
unsigned int command,
- char *buf, int len,
- char **rbuf, int rlen)
+ char *buf, ErlDrvSizeT len,
+ char **rbuf, ErlDrvSizeT rlen)
{
ejabberd_zlib_data *d = (ejabberd_zlib_data *)handle;
int err;
@@ -187,7 +196,19 @@ ErlDrvEntry ejabberd_zlib_driver_entry = {
NULL, /* handle */
ejabberd_zlib_drv_control, /* F_PTR control, port_command callback */
NULL, /* F_PTR timeout, reserved */
- NULL /* F_PTR outputv, reserved */
+ NULL, /* F_PTR outputv, reserved */
+ /* Added in Erlang/OTP R15B: */
+ NULL, /* ready_async */
+ NULL, /* flush */
+ NULL, /* call */
+ NULL, /* event */
+ ERL_DRV_EXTENDED_MARKER, /* extended_marker */
+ ERL_DRV_EXTENDED_MAJOR_VERSION, /* major_version */
+ ERL_DRV_EXTENDED_MINOR_VERSION, /* minor_version */
+ 0, /* driver_flags */
+ NULL, /* handle2 */
+ NULL, /* process_exit */
+ NULL /* stop_select */
};
DRIVER_INIT(ejabberd_zlib_drv) /* must match name in driver_entry */