X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-pq;a=blobdiff_plain;f=src%2Fphp_pqlob.c;h=0cb44a896875669ca4b4f5e42359117252b9a7a8;hp=5d1f6ba7e00b5328a1504beeb01a7bcae7ce1754;hb=HEAD;hpb=8897b5a581a86279a2ee371784b6b7670c8b8cc1 diff --git a/src/php_pqlob.c b/src/php_pqlob.c index 5d1f6ba..a419390 100644 --- a/src/php_pqlob.c +++ b/src/php_pqlob.c @@ -61,14 +61,14 @@ static zend_object *php_pqlob_create_object(zend_class_entry *class_type) return &php_pqlob_create_object_ex(class_type, NULL)->zo; } -static void php_pqlob_object_read_transaction(zval *object, void *o, zval *return_value) +static void php_pqlob_object_read_transaction(void *o, zval *return_value) { php_pqlob_object_t *obj = o; php_pq_object_to_zval(obj->intern->txn, return_value); } -static void php_pqlob_object_gc_transaction(zval *object, void *o, zval *return_value) +static void php_pqlob_object_gc_transaction(void *o, zval *return_value) { php_pqlob_object_t *obj = o; zval ztxn; @@ -77,22 +77,22 @@ static void php_pqlob_object_gc_transaction(zval *object, void *o, zval *return_ add_next_index_zval(return_value, &ztxn); } -static void php_pqlob_object_read_oid(zval *object, void *o, zval *return_value) +static void php_pqlob_object_read_oid(void *o, zval *return_value) { php_pqlob_object_t *obj = o; RETVAL_LONG(obj->intern->loid); } -static void php_pqlob_object_update_stream(zval *this_ptr, php_pqlob_object_t *obj, zval *zstream); +static void php_pqlob_object_update_stream(php_pqlob_object_t *obj, zval *zstream); -static void php_pqlob_object_read_stream(zval *object, void *o, zval *return_value) +static void php_pqlob_object_read_stream(void *o, zval *return_value) { php_pqlob_object_t *obj = o; zval zstream; if (!obj->intern->stream) { - php_pqlob_object_update_stream(object, obj, &zstream); + php_pqlob_object_update_stream(obj, &zstream); } else { php_stream_to_zval(obj->intern->stream, &zstream); } @@ -100,10 +100,14 @@ static void php_pqlob_object_read_stream(zval *object, void *o, zval *return_val RETVAL_ZVAL(&zstream, 1, 0); } +#if PHP_VERSION_ID < 70400 static size_t php_pqlob_stream_write(php_stream *stream, const char *buffer, size_t length) +#else +static ssize_t php_pqlob_stream_write(php_stream *stream, const char *buffer, size_t length) +#endif { php_pqlob_object_t *obj = stream->abstract; - int written = 0; + ssize_t written = 0; if (obj) { written = lo_write(obj->intern->txn->intern->conn->intern->conn, obj->intern->lofd, buffer, length); @@ -115,13 +119,21 @@ static size_t php_pqlob_stream_write(php_stream *stream, const char *buffer, siz php_pqconn_notify_listeners(obj->intern->txn->intern->conn); } +#if PHP_VERSION_ID < 70400 + return (written < 0 ? 0 : written); +#else return written; +#endif } +#if PHP_VERSION_ID < 70400 static size_t php_pqlob_stream_read(php_stream *stream, char *buffer, size_t length) +#else +static ssize_t php_pqlob_stream_read(php_stream *stream, char *buffer, size_t length) +#endif { php_pqlob_object_t *obj = stream->abstract; - int read = 0; + ssize_t read = 0; if (obj) { @@ -140,7 +152,11 @@ static size_t php_pqlob_stream_read(php_stream *stream, char *buffer, size_t len php_pqconn_notify_listeners(obj->intern->txn->intern->conn); } +#if PHP_VERSION_ID < 70400 + return (read < 0 ? 0 : read); +#else return read; +#endif } static ZEND_RESULT_CODE php_pqlob_stream_close(php_stream *stream, int close_handle) @@ -153,7 +169,7 @@ static int php_pqlob_stream_flush(php_stream *stream) return SUCCESS; } -static ZEND_RESULT_CODE php_pqlob_stream_seek(php_stream *stream, off_t offset, int whence, off_t *newoffset) +static ZEND_RESULT_CODE php_pqlob_stream_seek(php_stream *stream, zend_off_t offset, int whence, zend_off_t *newoffset) { ZEND_RESULT_CODE rv = FAILURE; php_pqlob_object_t *obj = stream->abstract; @@ -191,20 +207,22 @@ static php_stream_ops php_pqlob_stream_ops = { NULL, /* set_option */ }; -static void php_pqlob_object_update_stream(zval *zpqlob, php_pqlob_object_t *obj, zval *zstream) +static void php_pqlob_object_update_stream(php_pqlob_object_t *obj, zval *zstream) { - zval zmember; + zval zobj, zmember; ZVAL_STRINGL(&zmember, "stream", sizeof("stream")-1); - if (!obj) { - obj = PHP_PQ_OBJ(zpqlob, NULL); - } obj->intern->stream = php_stream_alloc(&php_pqlob_stream_ops, obj, NULL, "r+b"); obj->intern->stream->flags |= PHP_STREAM_FLAG_NO_FCLOSE; php_stream_to_zval(obj->intern->stream, zstream); - zend_get_std_object_handlers()->write_property(zpqlob, &zmember, zstream, NULL); +#if PHP_VERSION_ID >= 80000 + zend_std_write_property(&obj->zo, Z_STR(zmember), zstream, NULL); +#else + ZVAL_OBJ(&zobj, &obj->zo); + zend_std_write_property(&zobj, &zmember, zstream, NULL); +#endif zval_ptr_dtor(&zmember); } @@ -453,7 +471,7 @@ PHP_MINIT_FUNCTION(pqlob) php_pqlob_object_handlers.read_property = php_pq_object_read_prop; php_pqlob_object_handlers.write_property = php_pq_object_write_prop; php_pqlob_object_handlers.clone_obj = NULL; - php_pqlob_object_handlers.get_property_ptr_ptr = NULL; + php_pqlob_object_handlers.get_property_ptr_ptr = php_pq_object_get_prop_ptr_null; php_pqlob_object_handlers.get_gc = php_pq_object_get_gc; php_pqlob_object_handlers.get_properties = php_pq_object_properties; php_pqlob_object_handlers.get_debug_info = php_pq_object_debug_info;