diff options
Diffstat (limited to '')
-rw-r--r-- | src/ejabberd_zlib/ejabberd_zlib_drv.c | 29 |
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 */ |