From bcbd1364a5af9a60079e6ed8a18a97ed083465bf Mon Sep 17 00:00:00 2001 From: sarvsav Date: Sat, 9 Aug 2014 12:20:04 +0530 Subject: [PATCH 1/2] Added libversion() to check major, minor, revision of mosquitto library compiled with libmosquitto --- mosquitto.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/mosquitto.c b/mosquitto.c index 7bb5a51..26110c2 100644 --- a/mosquitto.c +++ b/mosquitto.c @@ -35,6 +35,12 @@ ZEND_BEGIN_ARG_INFO(Mosquitto_Client_callback_args, ZEND_SEND_BY_VAL) #endif ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_INFO(Mosquitto_Client_libVersion_args, ZEND_SEND_BY_VAL) + ZEND_ARG_INFO(0, major) + ZEND_ARG_INFO(0, minor) + ZEND_ARG_INFO(0, revision) +ZEND_END_ARG_INFO() + ZEND_BEGIN_ARG_INFO(Mosquitto_Client_setCredentials_args, ZEND_SEND_BY_VAL) ZEND_ARG_INFO(0, username) ZEND_ARG_INFO(0, password) @@ -122,6 +128,31 @@ PHP_METHOD(Mosquitto_Client, __construct) } /* }}} */ +/* {{{ Mosquitto\Client::libVersion() */ +PHP_METHOD(Mosquitto_Client, libVersion) +{ + int major = 0; + int minor = 0; + int revision = 0; + PHP_MOSQUITTO_ERROR_HANDLING(); + if (zend_parse_parameters (ZEND_NUM_ARGS() TSRMLS_CC, "|lll", &major, &minor, &revision) == FAILURE) { + PHP_MOSQUITTO_RESTORE_ERRORS(); + RETURN_NULL(); + + } + PHP_MOSQUITTO_RESTORE_ERRORS(); + if(major) { + RETURN_LONG(LIBMOSQUITTO_MAJOR); + } + if(minor) { + RETURN_LONG(LIBMOSQUITTO_MINOR); + } + if(revision) { + RETURN_LONG(LIBMOSQUITTO_REVISION); + } +} +/* }}} */ + /* {{{ Mosquitto\Client::setTlsCertificates() */ PHP_METHOD(Mosquitto_Client, setTlsCertificates) { @@ -1138,6 +1169,7 @@ static int php_mosquitto_pw_callback(char *buf, int size, int rwflag, void *user /* {{{ mosquitto_client_methods */ const zend_function_entry mosquitto_client_methods[] = { PHP_ME(Mosquitto_Client, __construct, Mosquitto_Client___construct_args, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR) + PHP_ME(Mosquitto_Client, libVersion, Mosquitto_Client_libVersion_args, ZEND_ACC_PUBLIC) PHP_ME(Mosquitto_Client, onConnect, Mosquitto_Client_callback_args, ZEND_ACC_PUBLIC) PHP_ME(Mosquitto_Client, onDisconnect, Mosquitto_Client_callback_args, ZEND_ACC_PUBLIC) PHP_ME(Mosquitto_Client, onLog, Mosquitto_Client_callback_args, ZEND_ACC_PUBLIC) From 55af0481e8581cb56719052ada7957f37be8acfe Mon Sep 17 00:00:00 2001 From: sarvsav Date: Mon, 18 Aug 2014 21:29:00 +0530 Subject: [PATCH 2/2] Changed the parameters for libVersion(), now they are passed by reference --- mosquitto.c | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/mosquitto.c b/mosquitto.c index 26110c2..babd4d9 100644 --- a/mosquitto.c +++ b/mosquitto.c @@ -35,7 +35,7 @@ ZEND_BEGIN_ARG_INFO(Mosquitto_Client_callback_args, ZEND_SEND_BY_VAL) #endif ZEND_END_ARG_INFO() -ZEND_BEGIN_ARG_INFO(Mosquitto_Client_libVersion_args, ZEND_SEND_BY_VAL) +ZEND_BEGIN_ARG_INFO(Mosquitto_Client_libVersion_args, ZEND_SEND_BY_REF) ZEND_ARG_INFO(0, major) ZEND_ARG_INFO(0, minor) ZEND_ARG_INFO(0, revision) @@ -131,24 +131,26 @@ PHP_METHOD(Mosquitto_Client, __construct) /* {{{ Mosquitto\Client::libVersion() */ PHP_METHOD(Mosquitto_Client, libVersion) { - int major = 0; - int minor = 0; - int revision = 0; + zval *major = 0; + zval *minor = 0; + zval *revision = 0; PHP_MOSQUITTO_ERROR_HANDLING(); - if (zend_parse_parameters (ZEND_NUM_ARGS() TSRMLS_CC, "|lll", &major, &minor, &revision) == FAILURE) { + if (zend_parse_parameters (ZEND_NUM_ARGS() TSRMLS_CC, "|zzz", &major, &minor, &revision) == FAILURE) { PHP_MOSQUITTO_RESTORE_ERRORS(); RETURN_NULL(); - } PHP_MOSQUITTO_RESTORE_ERRORS(); - if(major) { - RETURN_LONG(LIBMOSQUITTO_MAJOR); + if (major) { + convert_to_long(major); + ZVAL_LONG(major, LIBMOSQUITTO_MAJOR); } - if(minor) { - RETURN_LONG(LIBMOSQUITTO_MINOR); + if (minor) { + convert_to_long(minor); + ZVAL_LONG(minor, LIBMOSQUITTO_MINOR); } - if(revision) { - RETURN_LONG(LIBMOSQUITTO_REVISION); + if (revision) { + convert_to_long(revision); + ZVAL_LONG(revision, LIBMOSQUITTO_REVISION); } } /* }}} */ @@ -1169,7 +1171,7 @@ static int php_mosquitto_pw_callback(char *buf, int size, int rwflag, void *user /* {{{ mosquitto_client_methods */ const zend_function_entry mosquitto_client_methods[] = { PHP_ME(Mosquitto_Client, __construct, Mosquitto_Client___construct_args, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR) - PHP_ME(Mosquitto_Client, libVersion, Mosquitto_Client_libVersion_args, ZEND_ACC_PUBLIC) + PHP_ME(Mosquitto_Client, libVersion, Mosquitto_Client_libVersion_args, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC) PHP_ME(Mosquitto_Client, onConnect, Mosquitto_Client_callback_args, ZEND_ACC_PUBLIC) PHP_ME(Mosquitto_Client, onDisconnect, Mosquitto_Client_callback_args, ZEND_ACC_PUBLIC) PHP_ME(Mosquitto_Client, onLog, Mosquitto_Client_callback_args, ZEND_ACC_PUBLIC)