This is a heavy patched variant of the pecl dio module, which now at least compiles for php7. Patches are sent to maintainer - no response yet. Signed-off-by: Michael Heimpold <mhei@heimpold.de>lilik-openwrt-22.03
@ -0,0 +1,34 @@ | |||
# | |||
# This is free software, licensed under the GNU General Public License v2. | |||
# See /LICENSE for more information. | |||
# | |||
include $(TOPDIR)/rules.mk | |||
PECL_NAME:=dio | |||
PECL_LONGNAME:=Direct I/O functions | |||
PKG_VERSION:=0.0.7 | |||
PKG_RELEASE:=1 | |||
PKG_MD5SUM:=a1a4df428a17dbe1ab4277b492dfa052 | |||
PKG_NAME:=php7-pecl-$(PECL_NAME) | |||
PKG_SOURCE:=$(PECL_NAME)-$(PKG_VERSION).tgz | |||
PKG_SOURCE_URL:=http://pecl.php.net/get/ | |||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PECL_NAME)-$(PKG_VERSION) | |||
PKG_BUILD_PARALLEL:=1 | |||
PKG_MAINTAINER:=Michael Heimpold <mhei@heimpold.de> | |||
PKG_LICENSE:=PHPv3.01 | |||
PKG_LICENSE_FILES:= | |||
PKG_FIXUP:=autoreconf | |||
include $(INCLUDE_DIR)/package.mk | |||
include $(INCLUDE_DIR)/nls.mk | |||
include ../php7/pecl.mk | |||
$(eval $(call PECLPackage,$(PECL_NAME),$(PECL_LONGNAME))) | |||
$(eval $(call BuildPackage,$(PKG_NAME))) |
@ -0,0 +1,32 @@ | |||
From 46d3a1ff2c6e316cf0928a9fd403cb5284bfe863 Mon Sep 17 00:00:00 2001 | |||
From: remi <remi@c90b9560-bf6c-de11-be94-00142212c4b1> | |||
Date: Wed, 9 Oct 2013 12:04:16 +0000 | |||
Subject: [PATCH 01/16] fix svn prop | |||
git-svn-id: http://svn.php.net/repository/pecl/dio/trunk@331748 c90b9560-bf6c-de11-be94-00142212c4b1 | |||
--- | |||
dio_posix.c | 0 | |||
dio_win32.c | 0 | |||
php_dio_posix.h | 0 | |||
php_dio_win32.h | 0 | |||
4 files changed, 0 insertions(+), 0 deletions(-) | |||
mode change 100755 => 100644 dio_posix.c | |||
mode change 100755 => 100644 dio_win32.c | |||
mode change 100755 => 100644 php_dio_posix.h | |||
mode change 100755 => 100644 php_dio_win32.h | |||
diff --git a/dio_posix.c b/dio_posix.c | |||
old mode 100755 | |||
new mode 100644 | |||
diff --git a/dio_win32.c b/dio_win32.c | |||
old mode 100755 | |||
new mode 100644 | |||
diff --git a/php_dio_posix.h b/php_dio_posix.h | |||
old mode 100755 | |||
new mode 100644 | |||
diff --git a/php_dio_win32.h b/php_dio_win32.h | |||
old mode 100755 | |||
new mode 100644 | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,39 @@ | |||
From e9261081d447492e7eff3a22601b1de4f1ae550f Mon Sep 17 00:00:00 2001 | |||
From: remi <remi@c90b9560-bf6c-de11-be94-00142212c4b1> | |||
Date: Wed, 9 Oct 2013 12:15:51 +0000 | |||
Subject: [PATCH 02/16] fix [-Wunused-variable] | |||
git-svn-id: http://svn.php.net/repository/pecl/dio/trunk@331749 c90b9560-bf6c-de11-be94-00142212c4b1 | |||
--- | |||
dio.c | 2 +- | |||
dio_posix.c | 1 - | |||
2 files changed, 1 insertion(+), 2 deletions(-) | |||
diff --git a/dio.c b/dio.c | |||
index e400cf0..408a171 100644 | |||
--- a/dio.c | |||
+++ b/dio.c | |||
@@ -775,7 +775,7 @@ ZEND_BEGIN_ARG_INFO_EX(dio_serial_args, 0, 0, 2) | |||
ZEND_ARG_INFO(0, options) | |||
ZEND_END_ARG_INFO() | |||
-static zend_object_handlers dio_raw_object_handlers; | |||
+// not used static zend_object_handlers dio_raw_object_handlers; | |||
static zend_function_entry dio_functions[] = { | |||
/* Class functions. */ | |||
diff --git a/dio_posix.c b/dio_posix.c | |||
index 16fb3d6..01e1109 100644 | |||
--- a/dio_posix.c | |||
+++ b/dio_posix.c | |||
@@ -266,7 +266,6 @@ size_t dio_common_write(php_dio_stream_data *data, const char *buf, size_t count | |||
* earlier than early time. | |||
*/ | |||
static int dio_timeval_subtract(struct timeval *late, struct timeval *early, struct timeval *diff) { | |||
- struct timeval *tmp; | |||
/* Handle negatives */ | |||
if (late->tv_sec < early->tv_sec) { | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,39 @@ | |||
From 6cbc1651b6b6f865f9aae1e9adff73743298666f Mon Sep 17 00:00:00 2001 | |||
From: remi <remi@c90b9560-bf6c-de11-be94-00142212c4b1> | |||
Date: Wed, 9 Oct 2013 12:18:34 +0000 | |||
Subject: [PATCH 03/16] Fix [-Wmaybe-uninitialized] | |||
git-svn-id: http://svn.php.net/repository/pecl/dio/trunk@331750 c90b9560-bf6c-de11-be94-00142212c4b1 | |||
--- | |||
dio_stream_wrappers.c | 6 ++---- | |||
1 file changed, 2 insertions(+), 4 deletions(-) | |||
diff --git a/dio_stream_wrappers.c b/dio_stream_wrappers.c | |||
index 844b006..811bc07 100644 | |||
--- a/dio_stream_wrappers.c | |||
+++ b/dio_stream_wrappers.c | |||
@@ -228,9 +228,8 @@ PHP_FUNCTION(dio_raw) { | |||
efree(data); | |||
RETURN_FALSE; | |||
} | |||
+ php_stream_to_zval(stream, return_value); | |||
} | |||
- | |||
- php_stream_to_zval(stream, return_value); | |||
} | |||
/* }}} */ | |||
@@ -390,9 +389,8 @@ PHP_FUNCTION(dio_serial) { | |||
efree(data); | |||
RETURN_FALSE; | |||
} | |||
+ php_stream_to_zval(stream, return_value); | |||
} | |||
- | |||
- php_stream_to_zval(stream, return_value); | |||
} | |||
/* }}} */ | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,42 @@ | |||
From 1e6f98d9fb65b9c052e6d555eab573d7e5073dae Mon Sep 17 00:00:00 2001 | |||
From: remi <remi@c90b9560-bf6c-de11-be94-00142212c4b1> | |||
Date: Wed, 9 Oct 2013 12:24:28 +0000 | |||
Subject: [PATCH 04/16] Fix last build warning [-Wunused-but-set-variable] | |||
(sorry for legibility...) | |||
git-svn-id: http://svn.php.net/repository/pecl/dio/trunk@331751 c90b9560-bf6c-de11-be94-00142212c4b1 | |||
--- | |||
dio_posix.c | 7 ++++++- | |||
1 file changed, 6 insertions(+), 1 deletion(-) | |||
diff --git a/dio_posix.c b/dio_posix.c | |||
index 01e1109..6ed8630 100644 | |||
--- a/dio_posix.c | |||
+++ b/dio_posix.c | |||
@@ -28,7 +28,10 @@ | |||
* Convert an fopen() mode string to open() flags | |||
*/ | |||
static int dio_stream_mode_to_flags(const char *mode) { | |||
- int flags = 0, ch = 0, bin = 1; | |||
+ int flags = 0, ch = 0; | |||
+#if defined(_O_TEXT) && defined(O_BINARY) | |||
+ int bin = 1; | |||
+#endif | |||
switch(mode[ch++]) { | |||
case 'r': | |||
@@ -45,9 +48,11 @@ static int dio_stream_mode_to_flags(const char *mode) { | |||
break; | |||
} | |||
+#if defined(_O_TEXT) && defined(O_BINARY) | |||
if (mode[ch] != '+') { | |||
bin = (mode[ch++] == 'b'); | |||
} | |||
+#endif | |||
if (mode[ch] == '+') { | |||
flags |= O_RDWR; | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,91 @@ | |||
From 7c85a44880d9d748e7554f8fe7448505fa86aa28 Mon Sep 17 00:00:00 2001 | |||
From: cyberspice <cyberspice@c90b9560-bf6c-de11-be94-00142212c4b1> | |||
Date: Sat, 12 Oct 2013 22:20:19 +0000 | |||
Subject: [PATCH 05/16] Added LICENCE file as requested in Request #65869 | |||
Files added: | |||
LICENCE | |||
git-svn-id: http://svn.php.net/repository/pecl/dio/trunk@331788 c90b9560-bf6c-de11-be94-00142212c4b1 | |||
--- | |||
LICENSE | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |||
1 file changed, 68 insertions(+) | |||
create mode 100644 LICENSE | |||
diff --git a/LICENSE b/LICENSE | |||
new file mode 100644 | |||
index 0000000..d376afe | |||
--- /dev/null | |||
+++ b/LICENSE | |||
@@ -0,0 +1,68 @@ | |||
+-------------------------------------------------------------------- | |||
+ The PHP License, version 3.01 | |||
+Copyright (c) 2008 - 2013 The PHP Group. All rights reserved. | |||
+-------------------------------------------------------------------- | |||
+ | |||
+Redistribution and use in source and binary forms, with or without | |||
+modification, is permitted provided that the following conditions | |||
+are met: | |||
+ | |||
+ 1. Redistributions of source code must retain the above copyright | |||
+ notice, this list of conditions and the following disclaimer. | |||
+ | |||
+ 2. Redistributions in binary form must reproduce the above copyright | |||
+ notice, this list of conditions and the following disclaimer in | |||
+ the documentation and/or other materials provided with the | |||
+ distribution. | |||
+ | |||
+ 3. The name "PHP" must not be used to endorse or promote products | |||
+ derived from this software without prior written permission. For | |||
+ written permission, please contact group@php.net. | |||
+ | |||
+ 4. Products derived from this software may not be called "PHP", nor | |||
+ may "PHP" appear in their name, without prior written permission | |||
+ from group@php.net. You may indicate that your software works in | |||
+ conjunction with PHP by saying "Foo for PHP" instead of calling | |||
+ it "PHP Foo" or "phpfoo" | |||
+ | |||
+ 5. The PHP Group may publish revised and/or new versions of the | |||
+ license from time to time. Each version will be given a | |||
+ distinguishing version number. | |||
+ Once covered code has been published under a particular version | |||
+ of the license, you may always continue to use it under the terms | |||
+ of that version. You may also choose to use such covered code | |||
+ under the terms of any subsequent version of the license | |||
+ published by the PHP Group. No one other than the PHP Group has | |||
+ the right to modify the terms applicable to covered code created | |||
+ under this License. | |||
+ | |||
+ 6. Redistributions of any form whatsoever must retain the following | |||
+ acknowledgment: | |||
+ "This product includes PHP software, freely available from | |||
+ <http://www.php.net/software/>". | |||
+ | |||
+THIS SOFTWARE IS PROVIDED BY THE PHP DEVELOPMENT TEAM ``AS IS'' AND | |||
+ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, | |||
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | |||
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE PHP | |||
+DEVELOPMENT TEAM OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | |||
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |||
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | |||
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | |||
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, | |||
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | |||
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |||
+OF THE POSSIBILITY OF SUCH DAMAGE. | |||
+ | |||
+-------------------------------------------------------------------- | |||
+ | |||
+This software consists of voluntary contributions made by many | |||
+individuals on behalf of the PHP Group. | |||
+ | |||
+The PHP Group can be contacted via Email at group@php.net. | |||
+ | |||
+For more information on the PHP Group and the PHP project, | |||
+please see <http://www.php.net>. | |||
+ | |||
+PHP includes the Zend Engine, freely available at | |||
+<http://www.zend.com>. | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,117 @@ | |||
From b69e1067f70ef293587b72979193e68b01d90902 Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Wed, 13 Jul 2016 00:23:29 +0200 | |||
Subject: [PATCH 06/16] Replace ZEND_FETCH_RESOURCE macro with | |||
zend_fetch_resource | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio.c | 36 +++++++++++++++++++++++++++--------- | |||
1 file changed, 27 insertions(+), 9 deletions(-) | |||
diff --git a/dio.c b/dio.c | |||
index 408a171..6b687ac 100644 | |||
--- a/dio.c | |||
+++ b/dio.c | |||
@@ -161,7 +161,9 @@ PHP_FUNCTION(dio_dup) | |||
return; | |||
} | |||
- ZEND_FETCH_RESOURCE(f, php_fd_t *, &r_fd, -1, le_fd_name, le_fd); | |||
+ if ((f = (php_fd_t *)zend_fetch_resource(Z_RES_P(r_fd), le_fd_name, le_fd)) == NULL) { | |||
+ RETURN_FALSE; | |||
+ } | |||
dfd = dup(f->fd); | |||
if (dfd == -1) { | |||
@@ -192,7 +194,9 @@ PHP_FUNCTION(dio_read) | |||
return; | |||
} | |||
- ZEND_FETCH_RESOURCE(f, php_fd_t *, &r_fd, -1, le_fd_name, le_fd); | |||
+ if ((f = (php_fd_t *)zend_fetch_resource(Z_RES_P(r_fd), le_fd_name, le_fd)) == NULL) { | |||
+ RETURN_FALSE; | |||
+ } | |||
if (bytes <= 0) { | |||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length parameter must be greater than 0."); | |||
@@ -233,7 +237,9 @@ PHP_FUNCTION(dio_write) | |||
RETURN_FALSE; | |||
} | |||
- ZEND_FETCH_RESOURCE(f, php_fd_t *, &r_fd, -1, le_fd_name, le_fd); | |||
+ if ((f = (php_fd_t *)zend_fetch_resource(Z_RES_P(r_fd), le_fd_name, le_fd)) == NULL) { | |||
+ RETURN_FALSE; | |||
+ } | |||
res = write(f->fd, data, trunc_len ? trunc_len : data_len); | |||
if (res == -1) { | |||
@@ -258,7 +264,9 @@ PHP_FUNCTION(dio_truncate) | |||
return; | |||
} | |||
- ZEND_FETCH_RESOURCE(f, php_fd_t *, &r_fd, -1, le_fd_name, le_fd); | |||
+ if ((f = (php_fd_t *)zend_fetch_resource(Z_RES_P(r_fd), le_fd_name, le_fd)) == NULL) { | |||
+ RETURN_FALSE; | |||
+ } | |||
if (ftruncate(f->fd, offset) == -1) { | |||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "couldn't truncate %d to %ld bytes: %s", f->fd, offset, strerror(errno)); | |||
@@ -284,7 +292,9 @@ PHP_FUNCTION(dio_stat) | |||
return; | |||
} | |||
- ZEND_FETCH_RESOURCE(f, php_fd_t *, &r_fd, -1, le_fd_name, le_fd); | |||
+ if ((f = (php_fd_t *)zend_fetch_resource(Z_RES_P(r_fd), le_fd_name, le_fd)) == NULL) { | |||
+ RETURN_FALSE; | |||
+ } | |||
if (fstat(f->fd, &s) == -1) { | |||
php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot stat %d: %s", f->fd, strerror(errno)); | |||
@@ -323,7 +333,9 @@ PHP_FUNCTION(dio_seek) | |||
return; | |||
} | |||
- ZEND_FETCH_RESOURCE(f, php_fd_t *, &r_fd, -1, le_fd_name, le_fd); | |||
+ if ((f = (php_fd_t *)zend_fetch_resource(Z_RES_P(r_fd), le_fd_name, le_fd)) == NULL) { | |||
+ RETURN_FALSE; | |||
+ } | |||
RETURN_LONG(lseek(f->fd, offset, whence)); | |||
} | |||
@@ -344,7 +356,9 @@ PHP_FUNCTION(dio_fcntl) | |||
return; | |||
} | |||
- ZEND_FETCH_RESOURCE(f, php_fd_t *, &r_fd, -1, le_fd_name, le_fd); | |||
+ if ((f = (php_fd_t *)zend_fetch_resource(Z_RES_P(r_fd), le_fd_name, le_fd)) == NULL) { | |||
+ RETURN_FALSE; | |||
+ } | |||
switch (cmd) { | |||
case F_SETLK: | |||
@@ -454,7 +468,9 @@ PHP_FUNCTION(dio_tcsetattr) | |||
return; | |||
} | |||
- ZEND_FETCH_RESOURCE(f, php_fd_t *, &r_fd, -1, le_fd_name, le_fd); | |||
+ if ((f = (php_fd_t *)zend_fetch_resource(Z_RES_P(r_fd), le_fd_name, le_fd)) == NULL) { | |||
+ RETURN_FALSE; | |||
+ } | |||
if (Z_TYPE_P(arg) != IS_ARRAY) { | |||
php_error_docref(NULL TSRMLS_CC, E_WARNING,"tcsetattr, third argument should be an associative array"); | |||
@@ -639,7 +655,9 @@ PHP_FUNCTION(dio_close) | |||
return; | |||
} | |||
- ZEND_FETCH_RESOURCE(f, php_fd_t *, &r_fd, -1, le_fd_name, le_fd); | |||
+ if ((f = (php_fd_t *)zend_fetch_resource(Z_RES_P(r_fd), le_fd_name, le_fd)) == NULL) { | |||
+ RETURN_FALSE; | |||
+ } | |||
zend_list_delete(Z_LVAL_P(r_fd)); | |||
} | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,66 @@ | |||
From dbf03eb09bf1a41bcd140c4edba351121ac24729 Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Wed, 13 Jul 2016 00:36:46 +0200 | |||
Subject: [PATCH 07/16] Replace ZEND_REGISTER_RESOURCE with | |||
zend_register_resource | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio.c | 12 ++++++------ | |||
1 file changed, 6 insertions(+), 6 deletions(-) | |||
diff --git a/dio.c b/dio.c | |||
index 6b687ac..6f2d58c 100644 | |||
--- a/dio.c | |||
+++ b/dio.c | |||
@@ -72,9 +72,9 @@ static int new_php_fd(php_fd_t **f, int fd) | |||
return 1; | |||
} | |||
-static void _dio_close_fd(zend_rsrc_list_entry *rsrc TSRMLS_DC) | |||
+static void _dio_close_fd(zend_resource *res) | |||
{ | |||
- php_fd_t *f = (php_fd_t *) rsrc->ptr; | |||
+ php_fd_t *f = (php_fd_t *)zend_fetch_resource(res, NULL, le_fd); | |||
if (f) { | |||
close(f->fd); | |||
free(f); | |||
@@ -115,7 +115,7 @@ PHP_FUNCTION(dio_open) | |||
RETURN_FALSE; | |||
} | |||
- ZEND_REGISTER_RESOURCE(return_value, f, le_fd); | |||
+ RETVAL_RES(zend_register_resource(f, le_fd)); | |||
} | |||
/* }}} */ | |||
@@ -144,7 +144,7 @@ PHP_FUNCTION(dio_fdopen) | |||
RETURN_FALSE; | |||
} | |||
- ZEND_REGISTER_RESOURCE(return_value, f, le_fd); | |||
+ RETVAL_RES(zend_register_resource(f, le_fd)); | |||
} | |||
/* }}} */ | |||
@@ -175,7 +175,7 @@ PHP_FUNCTION(dio_dup) | |||
RETURN_FALSE; | |||
} | |||
- ZEND_REGISTER_RESOURCE(return_value, df, le_fd); | |||
+ RETVAL_RES(zend_register_resource(f, le_fd)); | |||
} | |||
/* }}} */ | |||
#endif | |||
@@ -434,7 +434,7 @@ PHP_FUNCTION(dio_fcntl) | |||
if (!new_php_fd(&new_f, fcntl(f->fd, cmd, Z_LVAL_P(arg)))) { | |||
RETURN_FALSE; | |||
} | |||
- ZEND_REGISTER_RESOURCE(return_value, new_f, le_fd); | |||
+ RETVAL_RES(zend_register_resource(new_f, le_fd)); | |||
break; | |||
} | |||
default: | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,34 @@ | |||
From 47422cf01f0a352c3f5f015585a28c99dba79862 Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Wed, 13 Jul 2016 00:40:08 +0200 | |||
Subject: [PATCH 08/16] RETURN_STRINGL takes only 2 arguments | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio.c | 3 ++- | |||
1 file changed, 2 insertions(+), 1 deletion(-) | |||
diff --git a/dio.c b/dio.c | |||
index 6f2d58c..e8660f8 100644 | |||
--- a/dio.c | |||
+++ b/dio.c | |||
@@ -24,6 +24,7 @@ | |||
#include "php.h" | |||
#include "php_ini.h" | |||
#include "ext/standard/info.h" | |||
+#include "ext/standard/php_string.h" | |||
#include "php_dio.h" | |||
#include "php_dio_stream_wrappers.h" | |||
@@ -213,7 +214,7 @@ PHP_FUNCTION(dio_read) | |||
data = erealloc(data, res + 1); | |||
data[res] = 0; | |||
- RETURN_STRINGL(data, res, 0); | |||
+ RETURN_STRINGL(data, res); | |||
} | |||
/* }}} */ | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,125 @@ | |||
From 7533f64b19006262fae7c6a4769392c67078166b Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Wed, 13 Jul 2016 01:07:22 +0200 | |||
Subject: [PATCH 09/16] Replace zend_hash_find with zend_hash_str_find | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio.c | 44 ++++++++++++++++++++++---------------------- | |||
1 file changed, 22 insertions(+), 22 deletions(-) | |||
diff --git a/dio.c b/dio.c | |||
index e8660f8..b489747 100644 | |||
--- a/dio.c | |||
+++ b/dio.c | |||
@@ -364,7 +364,7 @@ PHP_FUNCTION(dio_fcntl) | |||
switch (cmd) { | |||
case F_SETLK: | |||
case F_SETLKW: { | |||
- zval **element; | |||
+ zval *element; | |||
struct flock lk = {0}; | |||
HashTable *fh; | |||
@@ -374,28 +374,28 @@ PHP_FUNCTION(dio_fcntl) | |||
} | |||
if (Z_TYPE_P(arg) == IS_ARRAY) { | |||
fh = HASH_OF(arg); | |||
- if (zend_hash_find(fh, "start", sizeof("start"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "start", sizeof("start"))) == NULL) { | |||
lk.l_start = 0; | |||
} else { | |||
- lk.l_start = Z_LVAL_PP(element); | |||
+ lk.l_start = Z_LVAL_P(element); | |||
} | |||
- if (zend_hash_find(fh, "length", sizeof("length"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "length", sizeof("length"))) == NULL) { | |||
lk.l_len = 0; | |||
} else { | |||
- lk.l_len = Z_LVAL_PP(element); | |||
+ lk.l_len = Z_LVAL_P(element); | |||
} | |||
- if (zend_hash_find(fh, "whence", sizeof("whence"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "whence", sizeof("whence"))) == NULL) { | |||
lk.l_whence = 0; | |||
} else { | |||
- lk.l_whence = Z_LVAL_PP(element); | |||
+ lk.l_whence = Z_LVAL_P(element); | |||
} | |||
- if (zend_hash_find(fh, "type", sizeof("type"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "type", sizeof("type"))) == NULL) { | |||
lk.l_type = 0; | |||
} else { | |||
- lk.l_type = Z_LVAL_PP(element); | |||
+ lk.l_type = Z_LVAL_P(element); | |||
} | |||
} else if (Z_TYPE_P(arg) == IS_LONG) { | |||
lk.l_start = 0; | |||
@@ -463,7 +463,7 @@ PHP_FUNCTION(dio_tcsetattr) | |||
int Baud_Rate, Data_Bits=8, Stop_Bits=1, Parity=0, Flow_Control=1, Is_Canonical=1; | |||
long BAUD,DATABITS,STOPBITS,PARITYON,PARITY; | |||
HashTable *fh; | |||
- zval **element; | |||
+ zval *element; | |||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz", &r_fd, &arg) == FAILURE) { | |||
return; | |||
@@ -480,40 +480,40 @@ PHP_FUNCTION(dio_tcsetattr) | |||
fh = HASH_OF(arg); | |||
- if (zend_hash_find(fh, "baud", sizeof("baud"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "baud", sizeof("baud"))) == NULL) { | |||
Baud_Rate = 9600; | |||
} else { | |||
- Baud_Rate = Z_LVAL_PP(element); | |||
+ Baud_Rate = Z_LVAL_P(element); | |||
} | |||
- if (zend_hash_find(fh, "bits", sizeof("bits"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "bits", sizeof("bits"))) == NULL) { | |||
Data_Bits = 8; | |||
} else { | |||
- Data_Bits = Z_LVAL_PP(element); | |||
+ Data_Bits = Z_LVAL_P(element); | |||
} | |||
- if (zend_hash_find(fh, "stop", sizeof("stop"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "stop", sizeof("stop"))) == NULL) { | |||
Stop_Bits = 1; | |||
} else { | |||
- Stop_Bits = Z_LVAL_PP(element); | |||
+ Stop_Bits = Z_LVAL_P(element); | |||
} | |||
- if (zend_hash_find(fh, "parity", sizeof("parity"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "parity", sizeof("parity"))) == NULL) { | |||
Parity = 0; | |||
} else { | |||
- Parity = Z_LVAL_PP(element); | |||
+ Parity = Z_LVAL_P(element); | |||
} | |||
- if (zend_hash_find(fh, "flow_control", sizeof("flow_control"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "flow_control", sizeof("flow_control"))) == NULL) { | |||
Flow_Control = 1; | |||
} else { | |||
- Flow_Control = Z_LVAL_PP(element); | |||
+ Flow_Control = Z_LVAL_P(element); | |||
} | |||
- if (zend_hash_find(fh, "is_canonical", sizeof("is_canonical"), (void **) &element) == FAILURE) { | |||
+ if ((element = zend_hash_str_find(fh, "is_canonical", sizeof("is_canonical"))) == NULL) { | |||
Is_Canonical = 0; | |||
} else { | |||
- Is_Canonical = Z_LVAL_PP(element); | |||
+ Is_Canonical = Z_LVAL_P(element); | |||
} | |||
/* assign to correct values... */ | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,240 @@ | |||
From fb31b1cf4da2bfd0830d0a83754f5ecb125d1c4a Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Thu, 14 Jul 2016 00:38:52 +0200 | |||
Subject: [PATCH 10/16] Replace dio_convert_to_long | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio_common.c | 106 +++++++++++++++++++++++-------------------------------- | |||
php_dio_common.h | 2 -- | |||
2 files changed, 44 insertions(+), 64 deletions(-) | |||
diff --git a/dio_common.c b/dio_common.c | |||
index c50f56d..a5f4c63 100644 | |||
--- a/dio_common.c | |||
+++ b/dio_common.c | |||
@@ -52,29 +52,12 @@ void dio_init_stream_data(php_dio_stream_data *data) { | |||
} | |||
/* }}} */ | |||
-/* {{{ dio_convert_to_long | |||
- * Returns as a long, the value of the zval regardless of its type. | |||
- */ | |||
-long dio_convert_to_long(zval *val) { | |||
- zval *copyval; | |||
- long longval; | |||
- | |||
- ALLOC_INIT_ZVAL(copyval); | |||
- *copyval = *val; | |||
- convert_to_long(copyval); | |||
- longval = Z_LVAL_P(copyval); | |||
- zval_ptr_dtor(©val); | |||
- | |||
- return longval; | |||
-} | |||
-/* }}} */ | |||
- | |||
/* {{{ dio_assoc_array_get_basic_options | |||
* Retrieves the basic open option values from an associative array | |||
*/ | |||
void dio_assoc_array_get_basic_options(zval *options, php_dio_stream_data *data TSRMLS_DC) { | |||
#if defined(DIO_HAS_FILEPERMS) || defined(DIO_NONBLOCK) | |||
- zval **tmpzval; | |||
+ zval *tmpzval; | |||
HashTable *opthash; | |||
opthash = HASH_OF(options); | |||
@@ -82,8 +65,8 @@ void dio_assoc_array_get_basic_options(zval *options, php_dio_stream_data *data | |||
#ifdef DIO_HAS_FILEPERMS | |||
/* This is the file mode flags used by open(). */ | |||
- if (zend_hash_find(opthash, "perms", sizeof("perms"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->perms = (int)dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "perms", sizeof("perms"))) != NULL) { | |||
+ data->perms = (int)zval_get_long(tmpzval); | |||
data->has_perms = 1; | |||
} | |||
#endif | |||
@@ -91,20 +74,20 @@ void dio_assoc_array_get_basic_options(zval *options, php_dio_stream_data *data | |||
#ifdef DIO_NONBLOCK | |||
/* This sets the underlying stream to be blocking/non | |||
block (i.e. O_NONBLOCK) */ | |||
- if (zend_hash_find(opthash, "is_blocking", sizeof("is_blocking"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->is_blocking = dio_convert_to_long(*tmpzval) ? 1 : 0; | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "is_blocking", sizeof("is_blocking"))) != NULL) { | |||
+ data->is_blocking = zval_get_long(tmpzval) ? 1 : 0; | |||
} | |||
/* This is the timeout value for reads in seconds. Only one of | |||
timeout_secs or timeout_usecs need be defined to define a timeout. */ | |||
- if (zend_hash_find(opthash, "timeout_secs", sizeof("timeout_secs"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->timeout_sec = dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "timeout_secs", sizeof("timeout_secs"))) != NULL) { | |||
+ data->timeout_sec = zval_get_long(tmpzval); | |||
} | |||
/* This is the timeout value for reads in microseconds. Only one of | |||
timeout_secs or timeout_usecs need be defined to define a timeout. */ | |||
- if (zend_hash_find(opthash, "timeout_usecs", sizeof("timeout_usecs"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->timeout_usec = dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "timeout_usecs", sizeof("timeout_usecs"))) != NULL) { | |||
+ data->timeout_usec = zval_get_long(tmpzval); | |||
} | |||
data->has_timeout = (data->timeout_sec | data->timeout_usec) ? 1 : 0; | |||
@@ -116,33 +99,33 @@ void dio_assoc_array_get_basic_options(zval *options, php_dio_stream_data *data | |||
* Retrieves the serial open option values from an associative array | |||
*/ | |||
void dio_assoc_array_get_serial_options(zval *options, php_dio_stream_data *data TSRMLS_DC) { | |||
- zval **tmpzval; | |||
+ zval *tmpzval; | |||
HashTable *opthash; | |||
opthash = HASH_OF(options); | |||
- if (zend_hash_find(opthash, "data_rate", sizeof("data_rate"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->data_rate = dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "data_rate", sizeof("data_rate"))) != NULL) { | |||
+ data->data_rate = zval_get_long(tmpzval); | |||
} | |||
- if (zend_hash_find(opthash, "data_bits", sizeof("data_bits"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->data_bits = (int)dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "data_bits", sizeof("data_bits"))) != NULL) { | |||
+ data->data_bits = (int)zval_get_long(tmpzval); | |||
} | |||
- if (zend_hash_find(opthash, "stop_bits", sizeof("stop_bits"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->stop_bits = (int)dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "stop_bits", sizeof("stop_bits"))) != NULL) { | |||
+ data->stop_bits = (int)zval_get_long(tmpzval); | |||
} | |||
- if (zend_hash_find(opthash, "parity", sizeof("parity"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->parity = (int)dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "parity", sizeof("parity"))) != NULL) { | |||
+ data->parity = (int)zval_get_long(tmpzval); | |||
} | |||
- if (zend_hash_find(opthash, "flow_control", sizeof("flow_control"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->flow_control = (int)(dio_convert_to_long(*tmpzval) ? 1 : 0); | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "flow_control", sizeof("flow_control"))) != NULL) { | |||
+ data->flow_control = zval_get_long(tmpzval) ? 1 : 0; | |||
} | |||
- if (zend_hash_find(opthash, "is_canonical", sizeof("is_canonical"), (void **)&tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->canonical = (int)(dio_convert_to_long(*tmpzval) ? 1 : 0); | |||
+ if ((tmpzval = zend_hash_str_find(opthash, "is_canonical", sizeof("is_canonical"))) != NULL) { | |||
+ data->canonical = zval_get_long(tmpzval) ? 1 : 0; | |||
} | |||
} | |||
/* }}} */ | |||
@@ -152,13 +135,13 @@ void dio_assoc_array_get_serial_options(zval *options, php_dio_stream_data *data | |||
*/ | |||
void dio_stream_context_get_basic_options(php_stream_context *context, php_dio_stream_data *data TSRMLS_DC) { | |||
#if defined(DIO_HAS_FILEPERMS) || defined(DIO_NONBLOCK) | |||
- zval **tmpzval; | |||
+ zval *tmpzval; | |||
#endif | |||
#ifdef DIO_HAS_FILEPERMS | |||
/* This is the file mode flags used by open(). */ | |||
- if (php_stream_context_get_option(context, "dio", "perms", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->perms = (int)dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "perms")) != NULL) { | |||
+ data->perms = (int)zval_get_long(tmpzval); | |||
data->has_perms = 1; | |||
} | |||
#endif | |||
@@ -166,20 +149,20 @@ void dio_stream_context_get_basic_options(php_stream_context *context, php_dio_s | |||
#ifdef DIO_NONBLOCK | |||
/* This sets the underlying stream to be blocking/non | |||
block (i.e. O_NONBLOCK) */ | |||
- if (php_stream_context_get_option(context, "dio", "is_blocking", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->is_blocking = dio_convert_to_long(*tmpzval) ? 1 : 0; | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "is_blocking")) != NULL) { | |||
+ data->is_blocking = zval_get_long(tmpzval) ? 1 : 0; | |||
} | |||
/* This is the timeout value for reads in seconds. Only one of | |||
timeout_secs or timeout_usecs need be defined to define a timeout. */ | |||
- if (php_stream_context_get_option(context, "dio", "timeout_secs", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->timeout_sec = dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "timeout_secs")) != NULL) { | |||
+ data->timeout_sec = zval_get_long(tmpzval); | |||
} | |||
/* This is the timeout value for reads in microseconds. Only one of | |||
timeout_secs or timeout_usecs need be defined to define a timeout. */ | |||
- if (php_stream_context_get_option(context, "dio", "timeout_usecs", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->timeout_usec = dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "timeout_usecs")) != NULL) { | |||
+ data->timeout_usec = zval_get_long(tmpzval); | |||
} | |||
data->has_timeout = (data->timeout_sec | data->timeout_usec) ? 1 : 0; | |||
@@ -191,30 +174,30 @@ void dio_stream_context_get_basic_options(php_stream_context *context, php_dio_s | |||
* Extracts the option values for dio.serial mode from a context | |||
*/ | |||
void dio_stream_context_get_serial_options(php_stream_context *context, php_dio_stream_data *data TSRMLS_DC) { | |||
- zval **tmpzval; | |||
+ zval *tmpzval; | |||
- if (php_stream_context_get_option(context, "dio", "data_rate", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->data_rate = dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "data_rate")) != NULL) { | |||
+ data->data_rate = zval_get_long(tmpzval); | |||
} | |||
- if (php_stream_context_get_option(context, "dio", "data_bits", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->data_bits = (int)dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "data_bits")) != NULL) { | |||
+ data->data_bits = (int)zval_get_long(tmpzval); | |||
} | |||
- if (php_stream_context_get_option(context, "dio", "stop_bits", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->stop_bits = (int)dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "stop_bits")) != NULL) { | |||
+ data->stop_bits = (int)zval_get_long(tmpzval); | |||
} | |||
- if (php_stream_context_get_option(context, "dio", "parity", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->parity = (int)dio_convert_to_long(*tmpzval); | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "parity")) != NULL) { | |||
+ data->parity = (int)zval_get_long(tmpzval); | |||
} | |||
- if (php_stream_context_get_option(context, "dio", "flow_control", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->flow_control = (int)(dio_convert_to_long(*tmpzval) ? 1 : 0); | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "flow_control")) != NULL) { | |||
+ data->flow_control = zval_get_long(tmpzval) ? 1 : 0; | |||
} | |||
- if (php_stream_context_get_option(context, "dio", "is_canonical", &tmpzval) == SUCCESS && tmpzval && *tmpzval) { | |||
- data->canonical = (int)(dio_convert_to_long(*tmpzval) ? 1 : 0); | |||
+ if ((tmpzval = php_stream_context_get_option(context, "dio", "is_canonical")) != NULL) { | |||
+ data->canonical = zval_get_long(tmpzval) ? 1 : 0; | |||
} | |||
} | |||
/* }}} */ | |||
@@ -227,4 +210,3 @@ void dio_stream_context_get_serial_options(php_stream_context *context, php_dio_ | |||
* vim600: fdm=marker | |||
* vim: sw=4 ts=4 noet | |||
*/ | |||
- | |||
diff --git a/php_dio_common.h b/php_dio_common.h | |||
index f6e4d98..6b14040 100644 | |||
--- a/php_dio_common.h | |||
+++ b/php_dio_common.h | |||
@@ -35,8 +35,6 @@ | |||
#define DIO_STREAM_TYPE_RAW 1 | |||
#define DIO_STREAM_TYPE_SERIAL 2 | |||
-long dio_convert_to_long(zval *val); | |||
- | |||
php_dio_stream_data * dio_create_stream_data(void); | |||
void dio_init_stream_data(php_dio_stream_data *data); | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,89 @@ | |||
From 3d71063ada4f1a4ef90611d263aa8e1d4f275359 Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Thu, 14 Jul 2016 00:50:12 +0200 | |||
Subject: [PATCH 11/16] Adopt to changed stream API interface | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio_posix.c | 2 +- | |||
dio_stream_wrappers.c | 14 +++++++------- | |||
dio_win32.c | 2 +- | |||
php_dio_common.h | 2 +- | |||
4 files changed, 10 insertions(+), 10 deletions(-) | |||
diff --git a/dio_posix.c b/dio_posix.c | |||
index 6ed8630..527d683 100644 | |||
--- a/dio_posix.c | |||
+++ b/dio_posix.c | |||
@@ -474,7 +474,7 @@ int dio_common_set_option(php_dio_stream_data *data, int option, int value, void | |||
/* {{{ dio_raw_open_stream | |||
* Opens the underlying stream. | |||
*/ | |||
-int dio_raw_open_stream(char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC) { | |||
+int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC) { | |||
php_dio_posix_stream_data *pdata = (php_dio_posix_stream_data*)data; | |||
pdata->flags = dio_stream_mode_to_flags(mode); | |||
diff --git a/dio_stream_wrappers.c b/dio_stream_wrappers.c | |||
index 811bc07..817b0d1 100644 | |||
--- a/dio_stream_wrappers.c | |||
+++ b/dio_stream_wrappers.c | |||
@@ -126,12 +126,12 @@ php_stream_ops dio_raw_stream_ops = { | |||
* fopen for the dio.raw stream. | |||
*/ | |||
static php_stream *dio_raw_fopen_wrapper(php_stream_wrapper *wrapper, | |||
- char *path, char *mode, | |||
- int options, char **opened_path, | |||
- php_stream_context *context STREAMS_DC TSRMLS_DC) { | |||
+ const char *path, const char *mode, int options, | |||
+ zend_string **opened_path, php_stream_context *context STREAMS_DC) | |||
+{ | |||
php_dio_stream_data *data; | |||
php_stream *stream; | |||
- char *filename; | |||
+ const char *filename; | |||
/* Check it was actually for us (not a corrupted function pointer | |||
somewhere!). */ | |||
@@ -287,9 +287,9 @@ php_stream_ops dio_serial_stream_ops = { | |||
* fopen for the dio.raw stream. | |||
*/ | |||
static php_stream *dio_serial_fopen_wrapper(php_stream_wrapper *wrapper, | |||
- char *path, char *mode, | |||
- int options, char **opened_path, | |||
- php_stream_context *context STREAMS_DC TSRMLS_DC) { | |||
+ const char *path, const char *mode, int options, | |||
+ zend_string **opened_path, php_stream_context *context STREAMS_DC) | |||
+{ | |||
php_dio_stream_data *data; | |||
php_stream *stream; | |||
char *filename; | |||
diff --git a/dio_win32.c b/dio_win32.c | |||
index e7ccedd..1023d36 100644 | |||
--- a/dio_win32.c | |||
+++ b/dio_win32.c | |||
@@ -505,7 +505,7 @@ int dio_common_set_option(php_dio_stream_data *data, int option, int value, void | |||
/* {{{ dio_raw_open_stream | |||
* Opens the underlying stream. | |||
*/ | |||
-int dio_raw_open_stream(char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC) { | |||
+int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC) { | |||
php_dio_win32_stream_data *wdata = (php_dio_win32_stream_data*)data; | |||
DWORD err; | |||
diff --git a/php_dio_common.h b/php_dio_common.h | |||
index 6b14040..7a75370 100644 | |||
--- a/php_dio_common.h | |||
+++ b/php_dio_common.h | |||
@@ -55,7 +55,7 @@ int dio_common_close(php_dio_stream_data *data); | |||
int dio_common_set_option(php_dio_stream_data *data, int option, int value, void *ptrparam); | |||
-int dio_raw_open_stream(char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC); | |||
+int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC); | |||
int dio_serial_uninit(php_dio_stream_data *data); | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,829 @@ | |||
From 760ec7072cbba2cbbb6e4e17b0c54ee3c7b661a8 Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Thu, 14 Jul 2016 00:59:42 +0200 | |||
Subject: [PATCH 12/16] Remove ancient macros TSRMLS_CC and TSRMLS_DC | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio.c | 70 +++++++++++++++++++++++++-------------------------- | |||
dio_common.c | 8 +++--- | |||
dio_posix.c | 22 ++++++++-------- | |||
dio_stream_wrappers.c | 48 +++++++++++++++++------------------ | |||
dio_win32.c | 46 ++++++++++++++++----------------- | |||
php_dio_common.h | 12 ++++----- | |||
6 files changed, 103 insertions(+), 103 deletions(-) | |||
diff --git a/dio.c b/dio.c | |||
index b489747..7bad575 100644 | |||
--- a/dio.c | |||
+++ b/dio.c | |||
@@ -93,11 +93,11 @@ PHP_FUNCTION(dio_open) | |||
long mode = 0; | |||
int fd; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl|l", &file_name, &file_name_length, &flags, &mode) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "sl|l", &file_name, &file_name_length, &flags, &mode) == FAILURE) { | |||
return; | |||
} | |||
- if (php_check_open_basedir(file_name TSRMLS_CC) || DIO_SAFE_MODE_CHECK(file_name, "wb+")) { | |||
+ if (php_check_open_basedir(file_name) || DIO_SAFE_MODE_CHECK(file_name, "wb+")) { | |||
RETURN_FALSE; | |||
} | |||
@@ -108,7 +108,7 @@ PHP_FUNCTION(dio_open) | |||
} | |||
if (fd == -1) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot open file %s with flags %ld and permissions %ld: %s", file_name, flags, mode, strerror(errno)); | |||
+ php_error_docref(NULL, E_WARNING, "cannot open file %s with flags %ld and permissions %ld: %s", file_name, flags, mode, strerror(errno)); | |||
RETURN_FALSE; | |||
} | |||
@@ -130,14 +130,14 @@ PHP_FUNCTION(dio_fdopen) | |||
long lfd; | |||
int fd; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &lfd) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "l", &lfd) == FAILURE) { | |||
return; | |||
} | |||
fd = (int)lfd; | |||
if ((fcntl(fd, F_GETFL, 0) == -1) && (errno == EBADF)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Bad file descriptor %d", fd); | |||
+ php_error_docref(NULL, E_WARNING, "Bad file descriptor %d", fd); | |||
RETURN_FALSE; | |||
} | |||
@@ -158,7 +158,7 @@ PHP_FUNCTION(dio_dup) | |||
php_fd_t *f, *df; | |||
int dfd; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &r_fd) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &r_fd) == FAILURE) { | |||
return; | |||
} | |||
@@ -168,7 +168,7 @@ PHP_FUNCTION(dio_dup) | |||
dfd = dup(f->fd); | |||
if (dfd == -1) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot duplication file descriptor %d: %s", f->fd, strerror(errno)); | |||
+ php_error_docref(NULL, E_WARNING, "cannot duplication file descriptor %d: %s", f->fd, strerror(errno)); | |||
RETURN_FALSE; | |||
} | |||
@@ -191,7 +191,7 @@ PHP_FUNCTION(dio_read) | |||
long bytes = 1024; | |||
ssize_t res; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r|l", &r_fd, &bytes) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &r_fd, &bytes) == FAILURE) { | |||
return; | |||
} | |||
@@ -200,7 +200,7 @@ PHP_FUNCTION(dio_read) | |||
} | |||
if (bytes <= 0) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Length parameter must be greater than 0."); | |||
+ php_error_docref(NULL, E_WARNING, "Length parameter must be greater than 0."); | |||
RETURN_FALSE; | |||
} | |||
@@ -229,12 +229,12 @@ PHP_FUNCTION(dio_write) | |||
long trunc_len = 0; | |||
ssize_t res; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rs|l", &r_fd, &data, &data_len, &trunc_len) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rs|l", &r_fd, &data, &data_len, &trunc_len) == FAILURE) { | |||
return; | |||
} | |||
if (trunc_len < 0 || trunc_len > data_len) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "length must be greater or equal to zero and less then the length of the specified string."); | |||
+ php_error_docref(NULL, E_WARNING, "length must be greater or equal to zero and less then the length of the specified string."); | |||
RETURN_FALSE; | |||
} | |||
@@ -244,7 +244,7 @@ PHP_FUNCTION(dio_write) | |||
res = write(f->fd, data, trunc_len ? trunc_len : data_len); | |||
if (res == -1) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot write data to file descriptor %d: %s", f->fd, strerror(errno)); | |||
+ php_error_docref(NULL, E_WARNING, "cannot write data to file descriptor %d: %s", f->fd, strerror(errno)); | |||
} | |||
RETURN_LONG(res); | |||
@@ -261,7 +261,7 @@ PHP_FUNCTION(dio_truncate) | |||
php_fd_t *f; | |||
long offset; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &r_fd, &offset) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &r_fd, &offset) == FAILURE) { | |||
return; | |||
} | |||
@@ -270,7 +270,7 @@ PHP_FUNCTION(dio_truncate) | |||
} | |||
if (ftruncate(f->fd, offset) == -1) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "couldn't truncate %d to %ld bytes: %s", f->fd, offset, strerror(errno)); | |||
+ php_error_docref(NULL, E_WARNING, "couldn't truncate %d to %ld bytes: %s", f->fd, offset, strerror(errno)); | |||
RETURN_FALSE; | |||
} | |||
@@ -289,7 +289,7 @@ PHP_FUNCTION(dio_stat) | |||
php_fd_t *f; | |||
struct stat s; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &r_fd) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &r_fd) == FAILURE) { | |||
return; | |||
} | |||
@@ -298,7 +298,7 @@ PHP_FUNCTION(dio_stat) | |||
} | |||
if (fstat(f->fd, &s) == -1) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "cannot stat %d: %s", f->fd, strerror(errno)); | |||
+ php_error_docref(NULL, E_WARNING, "cannot stat %d: %s", f->fd, strerror(errno)); | |||
RETURN_FALSE; | |||
} | |||
@@ -330,7 +330,7 @@ PHP_FUNCTION(dio_seek) | |||
long offset; | |||
long whence = SEEK_SET; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|l", &r_fd, &offset, &whence) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl|l", &r_fd, &offset, &whence) == FAILURE) { | |||
return; | |||
} | |||
@@ -353,7 +353,7 @@ PHP_FUNCTION(dio_fcntl) | |||
php_fd_t *f; | |||
long cmd; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl|z", &r_fd, &cmd, &arg) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl|z", &r_fd, &cmd, &arg) == FAILURE) { | |||
return; | |||
} | |||
@@ -369,7 +369,7 @@ PHP_FUNCTION(dio_fcntl) | |||
HashTable *fh; | |||
if (!arg) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "expects argument 3 to be array or int, none given"); | |||
+ php_error_docref(NULL, E_WARNING, "expects argument 3 to be array or int, none given"); | |||
RETURN_FALSE; | |||
} | |||
if (Z_TYPE_P(arg) == IS_ARRAY) { | |||
@@ -403,7 +403,7 @@ PHP_FUNCTION(dio_fcntl) | |||
lk.l_whence = SEEK_SET; | |||
lk.l_type = Z_LVAL_P(arg); | |||
} else { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "expects argument 3 to be array or int, %s given", zend_zval_type_name(arg)); | |||
+ php_error_docref(NULL, E_WARNING, "expects argument 3 to be array or int, %s given", zend_zval_type_name(arg)); | |||
RETURN_FALSE; | |||
} | |||
@@ -428,7 +428,7 @@ PHP_FUNCTION(dio_fcntl) | |||
php_fd_t *new_f; | |||
if (!arg || Z_TYPE_P(arg) != IS_LONG) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "expects argument 3 to be int"); | |||
+ php_error_docref(NULL, E_WARNING, "expects argument 3 to be int"); | |||
RETURN_FALSE; | |||
} | |||
@@ -440,7 +440,7 @@ PHP_FUNCTION(dio_fcntl) | |||
} | |||
default: | |||
if (!arg || Z_TYPE_P(arg) != IS_LONG) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "expects argument 3 to be int"); | |||
+ php_error_docref(NULL, E_WARNING, "expects argument 3 to be int"); | |||
RETURN_FALSE; | |||
} | |||
@@ -465,7 +465,7 @@ PHP_FUNCTION(dio_tcsetattr) | |||
HashTable *fh; | |||
zval *element; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rz", &r_fd, &arg) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rz", &r_fd, &arg) == FAILURE) { | |||
return; | |||
} | |||
@@ -474,7 +474,7 @@ PHP_FUNCTION(dio_tcsetattr) | |||
} | |||
if (Z_TYPE_P(arg) != IS_ARRAY) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING,"tcsetattr, third argument should be an associative array"); | |||
+ php_error_docref(NULL, E_WARNING,"tcsetattr, third argument should be an associative array"); | |||
return; | |||
} | |||
@@ -564,7 +564,7 @@ PHP_FUNCTION(dio_tcsetattr) | |||
BAUD = B50; | |||
break; | |||
default: | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid baud rate %d", Baud_Rate); | |||
+ php_error_docref(NULL, E_WARNING, "invalid baud rate %d", Baud_Rate); | |||
RETURN_FALSE; | |||
} | |||
switch (Data_Bits) { | |||
@@ -581,7 +581,7 @@ PHP_FUNCTION(dio_tcsetattr) | |||
DATABITS = CS5; | |||
break; | |||
default: | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid data bits %d", Data_Bits); | |||
+ php_error_docref(NULL, E_WARNING, "invalid data bits %d", Data_Bits); | |||
RETURN_FALSE; | |||
} | |||
switch (Stop_Bits) { | |||
@@ -592,7 +592,7 @@ PHP_FUNCTION(dio_tcsetattr) | |||
STOPBITS = CSTOPB; | |||
break; | |||
default: | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid stop bits %d", Stop_Bits); | |||
+ php_error_docref(NULL, E_WARNING, "invalid stop bits %d", Stop_Bits); | |||
RETURN_FALSE; | |||
} | |||
@@ -610,7 +610,7 @@ PHP_FUNCTION(dio_tcsetattr) | |||
PARITY = 0; | |||
break; | |||
default: | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid parity %d", Parity); | |||
+ php_error_docref(NULL, E_WARNING, "invalid parity %d", Parity); | |||
RETURN_FALSE; | |||
} | |||
@@ -652,7 +652,7 @@ PHP_FUNCTION(dio_close) | |||
zval *r_fd; | |||
php_fd_t *f; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &r_fd) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &r_fd) == FAILURE) { | |||
return; | |||
} | |||
@@ -669,7 +669,7 @@ PHP_FUNCTION(dio_close) | |||
/* {{{ dio_init_legacy_defines | |||
* Initialises the legacy PHP defines | |||
*/ | |||
-static void dio_init_legacy_defines(int module_number TSRMLS_DC) { | |||
+static void dio_init_legacy_defines(int module_number) { | |||
RDIOC(O_RDONLY); | |||
RDIOC(O_WRONLY); | |||
RDIOC(O_RDWR); | |||
@@ -852,11 +852,11 @@ PHP_MINIT_FUNCTION(dio) | |||
/* Legacy resource destructor. */ | |||
le_fd = zend_register_list_destructors_ex(_dio_close_fd, NULL, le_fd_name, module_number); | |||
- dio_init_legacy_defines(module_number TSRMLS_CC); | |||
+ dio_init_legacy_defines(module_number); | |||
/* Register the stream wrappers */ | |||
- return (php_register_url_stream_wrapper(DIO_RAW_STREAM_NAME, &php_dio_raw_stream_wrapper TSRMLS_CC) == SUCCESS && | |||
- php_register_url_stream_wrapper(DIO_SERIAL_STREAM_NAME, &php_dio_serial_stream_wrapper TSRMLS_CC) == SUCCESS) ? SUCCESS : FAILURE; | |||
+ return (php_register_url_stream_wrapper(DIO_RAW_STREAM_NAME, &php_dio_raw_stream_wrapper) == SUCCESS && | |||
+ php_register_url_stream_wrapper(DIO_SERIAL_STREAM_NAME, &php_dio_serial_stream_wrapper) == SUCCESS) ? SUCCESS : FAILURE; | |||
} | |||
/* }}} */ | |||
@@ -864,8 +864,8 @@ PHP_MINIT_FUNCTION(dio) | |||
*/ | |||
PHP_MSHUTDOWN_FUNCTION(dio) | |||
{ | |||
- return (php_unregister_url_stream_wrapper(DIO_RAW_STREAM_NAME TSRMLS_CC) == SUCCESS && | |||
- php_unregister_url_stream_wrapper(DIO_SERIAL_STREAM_NAME TSRMLS_CC) == SUCCESS) ? SUCCESS : FAILURE; | |||
+ return (php_unregister_url_stream_wrapper(DIO_RAW_STREAM_NAME) == SUCCESS && | |||
+ php_unregister_url_stream_wrapper(DIO_SERIAL_STREAM_NAME) == SUCCESS) ? SUCCESS : FAILURE; | |||
} | |||
/* }}} */ | |||
diff --git a/dio_common.c b/dio_common.c | |||
index a5f4c63..d09c0ec 100644 | |||
--- a/dio_common.c | |||
+++ b/dio_common.c | |||
@@ -55,7 +55,7 @@ void dio_init_stream_data(php_dio_stream_data *data) { | |||
/* {{{ dio_assoc_array_get_basic_options | |||
* Retrieves the basic open option values from an associative array | |||
*/ | |||
-void dio_assoc_array_get_basic_options(zval *options, php_dio_stream_data *data TSRMLS_DC) { | |||
+void dio_assoc_array_get_basic_options(zval *options, php_dio_stream_data *data) { | |||
#if defined(DIO_HAS_FILEPERMS) || defined(DIO_NONBLOCK) | |||
zval *tmpzval; | |||
HashTable *opthash; | |||
@@ -98,7 +98,7 @@ void dio_assoc_array_get_basic_options(zval *options, php_dio_stream_data *data | |||
/* {{{ dio_assoc_array_get_serial_options | |||
* Retrieves the serial open option values from an associative array | |||
*/ | |||
-void dio_assoc_array_get_serial_options(zval *options, php_dio_stream_data *data TSRMLS_DC) { | |||
+void dio_assoc_array_get_serial_options(zval *options, php_dio_stream_data *data) { | |||
zval *tmpzval; | |||
HashTable *opthash; | |||
@@ -133,7 +133,7 @@ void dio_assoc_array_get_serial_options(zval *options, php_dio_stream_data *data | |||
/* {{{ dio_stream_context_get_raw_options | |||
* Extracts the option values for dio.raw mode from a context | |||
*/ | |||
-void dio_stream_context_get_basic_options(php_stream_context *context, php_dio_stream_data *data TSRMLS_DC) { | |||
+void dio_stream_context_get_basic_options(php_stream_context *context, php_dio_stream_data *data) { | |||
#if defined(DIO_HAS_FILEPERMS) || defined(DIO_NONBLOCK) | |||
zval *tmpzval; | |||
#endif | |||
@@ -173,7 +173,7 @@ void dio_stream_context_get_basic_options(php_stream_context *context, php_dio_s | |||
/* {{{ dio_stream_context_get_serial_options | |||
* Extracts the option values for dio.serial mode from a context | |||
*/ | |||
-void dio_stream_context_get_serial_options(php_stream_context *context, php_dio_stream_data *data TSRMLS_DC) { | |||
+void dio_stream_context_get_serial_options(php_stream_context *context, php_dio_stream_data *data) { | |||
zval *tmpzval; | |||
if ((tmpzval = php_stream_context_get_option(context, "dio", "data_rate")) != NULL) { | |||
diff --git a/dio_posix.c b/dio_posix.c | |||
index 527d683..843e234 100644 | |||
--- a/dio_posix.c | |||
+++ b/dio_posix.c | |||
@@ -474,7 +474,7 @@ int dio_common_set_option(php_dio_stream_data *data, int option, int value, void | |||
/* {{{ dio_raw_open_stream | |||
* Opens the underlying stream. | |||
*/ | |||
-int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC) { | |||
+int dio_raw_open_stream(const char *filename, const char *mode, php_dio_stream_data *data) { | |||
php_dio_posix_stream_data *pdata = (php_dio_posix_stream_data*)data; | |||
pdata->flags = dio_stream_mode_to_flags(mode); | |||
@@ -498,7 +498,7 @@ int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *d | |||
if (pdata->fd < 0) { | |||
switch (errno) { | |||
case EEXIST: | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "File exists!"); | |||
+ php_error_docref(NULL, E_WARNING, "File exists!"); | |||
return 0; | |||
default: | |||
return 0; | |||
@@ -512,36 +512,36 @@ int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *d | |||
/* {{{ dio_serial_init | |||
* Initialises the serial settings storing the original settings before hand. | |||
*/ | |||
-static int dio_serial_init(php_dio_stream_data *data TSRMLS_DC) { | |||
+static int dio_serial_init(php_dio_stream_data *data) { | |||
php_dio_posix_stream_data *pdata = (php_dio_posix_stream_data*)data; | |||
int ret = 0, data_bits_def, stop_bits_def, parity_def; | |||
struct termios tio; | |||
speed_t rate_def; | |||
if (!dio_data_rate_to_define(data->data_rate, &rate_def)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid data_rate value (%ld)", data->data_rate); | |||
+ php_error_docref(NULL, E_WARNING, "invalid data_rate value (%ld)", data->data_rate); | |||
return 0; | |||
} | |||
if (!dio_data_bits_to_define(data->data_bits, &data_bits_def)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid data_bits value (%d)", data->data_bits); | |||
+ php_error_docref(NULL, E_WARNING, "invalid data_bits value (%d)", data->data_bits); | |||
return 0; | |||
} | |||
if (!dio_stop_bits_to_define(data->stop_bits, &stop_bits_def)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid stop_bits value (%d)", data->stop_bits); | |||
+ php_error_docref(NULL, E_WARNING, "invalid stop_bits value (%d)", data->stop_bits); | |||
return 0; | |||
} | |||
if (!dio_parity_to_define(data->parity, &parity_def)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid parity value (%d)", data->parity); | |||
+ php_error_docref(NULL, E_WARNING, "invalid parity value (%d)", data->parity); | |||
return 0; | |||
} | |||
ret = tcgetattr(pdata->fd, &(pdata->oldtio)); | |||
if (ret < 0) { | |||
if ((errno == ENOTTY) || (errno == ENODEV)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not a serial port or terminal!"); | |||
+ php_error_docref(NULL, E_WARNING, "Not a serial port or terminal!"); | |||
} | |||
return 0; | |||
} | |||
@@ -632,7 +632,7 @@ int dio_serial_purge(php_dio_stream_data *data) { | |||
/* {{{ dio_serial_open_stream | |||
* Opens the underlying stream. | |||
*/ | |||
-int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC) { | |||
+int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data) { | |||
php_dio_posix_stream_data *pdata = (php_dio_posix_stream_data*)data; | |||
#ifdef O_NOCTTY | |||
@@ -640,11 +640,11 @@ int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data | |||
pdata->flags |= O_NOCTTY; | |||
#endif | |||
- if (!dio_raw_open_stream(filename, mode, data TSRMLS_CC)) { | |||
+ if (!dio_raw_open_stream(filename, mode, data)) { | |||
return 0; | |||
} | |||
- if (!dio_serial_init(data TSRMLS_CC)) { | |||
+ if (!dio_serial_init(data)) { | |||
close(pdata->fd); | |||
return 0; | |||
} | |||
diff --git a/dio_stream_wrappers.c b/dio_stream_wrappers.c | |||
index 817b0d1..eb23752 100644 | |||
--- a/dio_stream_wrappers.c | |||
+++ b/dio_stream_wrappers.c | |||
@@ -36,7 +36,7 @@ | |||
/* {{{ dio_stream_write | |||
* Write to the stream | |||
*/ | |||
-static size_t dio_stream_write(php_stream *stream, const char *buf, size_t count TSRMLS_DC) | |||
+static size_t dio_stream_write(php_stream *stream, const char *buf, size_t count) | |||
{ | |||
return dio_common_write((php_dio_stream_data*)stream->abstract, buf, count); | |||
} | |||
@@ -45,7 +45,7 @@ static size_t dio_stream_write(php_stream *stream, const char *buf, size_t count | |||
/* {{{ dio_stream_read | |||
* Read from the stream | |||
*/ | |||
-static size_t dio_stream_read(php_stream *stream, char *buf, size_t count TSRMLS_DC) | |||
+static size_t dio_stream_read(php_stream *stream, char *buf, size_t count) | |||
{ | |||
php_dio_stream_data* data = (php_dio_stream_data*)stream->abstract; | |||
size_t bytes = dio_common_read(data, buf, count); | |||
@@ -58,7 +58,7 @@ static size_t dio_stream_read(php_stream *stream, char *buf, size_t count TSRMLS | |||
/* {{{ dio_stream_flush | |||
* Flush the stream. For raw streams this does nothing. | |||
*/ | |||
-static int dio_stream_flush(php_stream *stream TSRMLS_DC) | |||
+static int dio_stream_flush(php_stream *stream) | |||
{ | |||
return 1; | |||
} | |||
@@ -67,7 +67,7 @@ static int dio_stream_flush(php_stream *stream TSRMLS_DC) | |||
/* {{{ dio_stream_close | |||
* Close the stream | |||
*/ | |||
-static int dio_stream_close(php_stream *stream, int close_handle TSRMLS_DC) | |||
+static int dio_stream_close(php_stream *stream, int close_handle) | |||
{ | |||
php_dio_stream_data *abstract = (php_dio_stream_data*)stream->abstract; | |||
@@ -83,7 +83,7 @@ static int dio_stream_close(php_stream *stream, int close_handle TSRMLS_DC) | |||
/* {{{ dio_stream_set_option | |||
* Set the stream options. | |||
*/ | |||
-static int dio_stream_set_option(php_stream *stream, int option, int value, void *ptrparam TSRMLS_DC) | |||
+static int dio_stream_set_option(php_stream *stream, int option, int value, void *ptrparam) | |||
{ | |||
php_dio_stream_data *abstract = (php_dio_stream_data*)stream->abstract; | |||
@@ -143,7 +143,7 @@ static php_stream *dio_raw_fopen_wrapper(php_stream_wrapper *wrapper, | |||
filename = path + sizeof(DIO_RAW_STREAM_PROTOCOL) - 1; | |||
/* Check we can actually access it. */ | |||
- if (php_check_open_basedir(filename TSRMLS_CC) || DIO_SAFE_MODE_CHECK(filename, mode)) { | |||
+ if (php_check_open_basedir(filename) || DIO_SAFE_MODE_CHECK(filename, mode)) { | |||
return NULL; | |||
} | |||
@@ -152,11 +152,11 @@ static php_stream *dio_raw_fopen_wrapper(php_stream_wrapper *wrapper, | |||
/* Parse the context. */ | |||
if (context) { | |||
- dio_stream_context_get_basic_options(context, data TSRMLS_CC); | |||
+ dio_stream_context_get_basic_options(context, data); | |||
} | |||
/* Try and open a raw stream. */ | |||
- if (!dio_raw_open_stream(filename, mode, data TSRMLS_CC)) { | |||
+ if (!dio_raw_open_stream(filename, mode, data)) { | |||
return NULL; | |||
} | |||
@@ -199,7 +199,7 @@ PHP_FUNCTION(dio_raw) { | |||
char *mode; | |||
int mode_len; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|z", &filename, &filename_len, &mode, &mode_len, &options) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|z", &filename, &filename_len, &mode, &mode_len, &options) == FAILURE) { | |||
RETURN_FALSE; | |||
} | |||
@@ -209,7 +209,7 @@ PHP_FUNCTION(dio_raw) { | |||
} | |||
/* Check we can actually access the file. */ | |||
- if (php_check_open_basedir(filename TSRMLS_CC) || DIO_SAFE_MODE_CHECK(filename, mode)) { | |||
+ if (php_check_open_basedir(filename) || DIO_SAFE_MODE_CHECK(filename, mode)) { | |||
RETURN_FALSE; | |||
} | |||
@@ -217,11 +217,11 @@ PHP_FUNCTION(dio_raw) { | |||
data->stream_type = DIO_STREAM_TYPE_RAW; | |||
if (options) { | |||
- dio_assoc_array_get_basic_options(options, data TSRMLS_CC); | |||
+ dio_assoc_array_get_basic_options(options, data); | |||
} | |||
/* Try and open a raw stream. */ | |||
- if (dio_raw_open_stream(filename, mode, data TSRMLS_CC)) { | |||
+ if (dio_raw_open_stream(filename, mode, data)) { | |||
stream = php_stream_alloc(&dio_raw_stream_ops, data, 0, mode); | |||
if (!stream) { | |||
(void) dio_common_close(data); | |||
@@ -244,7 +244,7 @@ PHP_FUNCTION(dio_raw) { | |||
* stream, if it is write only it flushes the write, otherwise it flushes | |||
* both. | |||
*/ | |||
-static int dio_serial_stream_flush(php_stream *stream TSRMLS_DC) | |||
+static int dio_serial_stream_flush(php_stream *stream) | |||
{ | |||
return dio_serial_purge((php_dio_stream_data*)stream->abstract); | |||
} | |||
@@ -254,7 +254,7 @@ static int dio_serial_stream_flush(php_stream *stream TSRMLS_DC) | |||
* Close the stream. Restores the serial settings to their value before | |||
* the stream was open. | |||
*/ | |||
-static int dio_serial_stream_close(php_stream *stream, int close_handle TSRMLS_DC) | |||
+static int dio_serial_stream_close(php_stream *stream, int close_handle) | |||
{ | |||
php_dio_stream_data *abstract = (php_dio_stream_data*)stream->abstract; | |||
@@ -304,7 +304,7 @@ static php_stream *dio_serial_fopen_wrapper(php_stream_wrapper *wrapper, | |||
filename = path + sizeof(DIO_SERIAL_STREAM_PROTOCOL) - 1; | |||
/* Check we can actually access it. */ | |||
- if (php_check_open_basedir(filename TSRMLS_CC) || DIO_SAFE_MODE_CHECK(filename, mode)) { | |||
+ if (php_check_open_basedir(filename) || DIO_SAFE_MODE_CHECK(filename, mode)) { | |||
return NULL; | |||
} | |||
@@ -313,12 +313,12 @@ static php_stream *dio_serial_fopen_wrapper(php_stream_wrapper *wrapper, | |||
/* Parse the context. */ | |||
if (context) { | |||
- dio_stream_context_get_basic_options(context, data TSRMLS_CC); | |||
- dio_stream_context_get_serial_options(context, data TSRMLS_CC); | |||
+ dio_stream_context_get_basic_options(context, data); | |||
+ dio_stream_context_get_serial_options(context, data); | |||
} | |||
/* Try and open a serial stream. */ | |||
- if (!dio_serial_open_stream(filename, mode, data TSRMLS_CC)) { | |||
+ if (!dio_serial_open_stream(filename, mode, data)) { | |||
return NULL; | |||
} | |||
@@ -359,18 +359,18 @@ PHP_FUNCTION(dio_serial) { | |||
char *mode; | |||
int mode_len; | |||
- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|z", &filename, &filename_len, &mode, &mode_len, &options) == FAILURE) { | |||
+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|z", &filename, &filename_len, &mode, &mode_len, &options) == FAILURE) { | |||
RETURN_FALSE; | |||
} | |||
/* Check the third argument is an array. */ | |||
if (options && (Z_TYPE_P(options) != IS_ARRAY)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING,"dio_serial, the third argument should be an array of options"); | |||
+ php_error_docref(NULL, E_WARNING,"dio_serial, the third argument should be an array of options"); | |||
RETURN_FALSE; | |||
} | |||
/* Check we can actually access the file. */ | |||
- if (php_check_open_basedir(filename TSRMLS_CC) || DIO_SAFE_MODE_CHECK(filename, mode)) { | |||
+ if (php_check_open_basedir(filename) || DIO_SAFE_MODE_CHECK(filename, mode)) { | |||
RETURN_FALSE; | |||
} | |||
@@ -378,12 +378,12 @@ PHP_FUNCTION(dio_serial) { | |||
data->stream_type = DIO_STREAM_TYPE_SERIAL; | |||
if (options) { | |||
- dio_assoc_array_get_basic_options(options, data TSRMLS_CC); | |||
- dio_assoc_array_get_serial_options(options, data TSRMLS_CC); | |||
+ dio_assoc_array_get_basic_options(options, data); | |||
+ dio_assoc_array_get_serial_options(options, data); | |||
} | |||
/* Try and open a serial stream. */ | |||
- if (dio_serial_open_stream(filename, mode, data TSRMLS_CC)) { | |||
+ if (dio_serial_open_stream(filename, mode, data)) { | |||
stream = php_stream_alloc(&dio_serial_stream_ops, data, 0, mode); | |||
if (!stream) { | |||
efree(data); | |||
diff --git a/dio_win32.c b/dio_win32.c | |||
index 1023d36..25c838a 100644 | |||
--- a/dio_win32.c | |||
+++ b/dio_win32.c | |||
@@ -30,7 +30,7 @@ | |||
/* {{{ dio_last_error_php_error | |||
* Generates a PHP error message based upon the last Windows error. | |||
*/ | |||
-static void dio_last_error_php_error(int level, char * message TSRMLS_DC) { | |||
+static void dio_last_error_php_error(int level, char * message) { | |||
LPVOID msgbuf; | |||
DWORD msgbuflen; | |||
char * errmsg; | |||
@@ -68,7 +68,7 @@ static void dio_last_error_php_error(int level, char * message TSRMLS_DC) { | |||
/* Allocate a buffer */ | |||
errmsg = emalloc(errmsglen); | |||
if (!errmsg) { | |||
- php_error_docref(NULL TSRMLS_CC, E_ERROR, "Out of memory in dio_last_error_php_error()!"); | |||
+ php_error_docref(NULL, E_ERROR, "Out of memory in dio_last_error_php_error()!"); | |||
LocalFree(msgbuf); | |||
return; | |||
} | |||
@@ -88,7 +88,7 @@ static void dio_last_error_php_error(int level, char * message TSRMLS_DC) { | |||
errmsg = (char *)msgbuf; | |||
#endif | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s[ERROR %d] %s", message, err, errmsg); | |||
+ php_error_docref(NULL, E_WARNING, "%s[ERROR %d] %s", message, err, errmsg); | |||
LocalFree(msgbuf); | |||
#ifdef UNICODE | |||
@@ -505,7 +505,7 @@ int dio_common_set_option(php_dio_stream_data *data, int option, int value, void | |||
/* {{{ dio_raw_open_stream | |||
* Opens the underlying stream. | |||
*/ | |||
-int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC) { | |||
+int dio_raw_open_stream(const char *filename, const char *mode, php_dio_stream_data *data) { | |||
php_dio_win32_stream_data *wdata = (php_dio_win32_stream_data*)data; | |||
DWORD err; | |||
@@ -543,29 +543,29 @@ int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *d | |||
err = GetLastError(); | |||
switch (err) { | |||
case ERROR_FILE_EXISTS: | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "File exists!"); | |||
+ php_error_docref(NULL, E_WARNING, "File exists!"); | |||
return 0; | |||
case ERROR_FILE_NOT_FOUND: | |||
/* ERROR_FILE_NOT_FOUND with TRUNCATE_EXISTING means that | |||
* the file doesn't exist so now try to create it. */ | |||
if (TRUNCATE_EXISTING == wdata->creation_disposition) { | |||
- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "File does not exist, creating new file!"); | |||
+ php_error_docref(NULL, E_NOTICE, "File does not exist, creating new file!"); | |||
wdata->handle = CreateFile(filename, wdata->desired_access, 0, | |||
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); | |||
if (INVALID_HANDLE_VALUE == wdata->handle) { | |||
- dio_last_error_php_error(E_WARNING, "CreateFile() failed:" TSRMLS_CC); | |||
+ dio_last_error_php_error(E_WARNING, "CreateFile() failed:"); | |||
return 0; | |||
} | |||
} else { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "File not found!"); | |||
+ php_error_docref(NULL, E_WARNING, "File not found!"); | |||
return 0; | |||
} | |||
break; | |||
default: | |||
- dio_last_error_php_error(E_WARNING, "CreateFile() failed:" TSRMLS_CC); | |||
+ dio_last_error_php_error(E_WARNING, "CreateFile() failed:"); | |||
return 0; | |||
} | |||
} | |||
@@ -584,33 +584,33 @@ int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *d | |||
/* {{{ dio_serial_init | |||
* Initialises the serial port | |||
*/ | |||
-static int dio_serial_init(php_dio_stream_data *data TSRMLS_DC) { | |||
+static int dio_serial_init(php_dio_stream_data *data) { | |||
php_dio_win32_stream_data *wdata = (php_dio_win32_stream_data*)data; | |||
DWORD rate_def, data_bits_def, stop_bits_def, parity_def; | |||
DCB dcb; | |||
if (!dio_data_rate_to_define(data->data_rate, &rate_def)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid data_rate value (%d)", data->data_rate); | |||
+ php_error_docref(NULL, E_WARNING, "invalid data_rate value (%d)", data->data_rate); | |||
return 0; | |||
} | |||
if (!dio_data_bits_to_define(data->data_bits, &data_bits_def)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid data_bits value (%d)", data->data_bits); | |||
+ php_error_docref(NULL, E_WARNING, "invalid data_bits value (%d)", data->data_bits); | |||
return 0; | |||
} | |||
if (!dio_stop_bits_to_define(data->stop_bits, &stop_bits_def)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid stop_bits value (%d)", data->stop_bits); | |||
+ php_error_docref(NULL, E_WARNING, "invalid stop_bits value (%d)", data->stop_bits); | |||
return 0; | |||
} | |||
if (!dio_parity_to_define(data->parity, &parity_def)) { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid parity value (%d)", data->parity); | |||
+ php_error_docref(NULL, E_WARNING, "invalid parity value (%d)", data->parity); | |||
return 0; | |||
} | |||
if (!GetCommState(wdata->handle, &(wdata->olddcb))) { | |||
- dio_last_error_php_error(E_WARNING, "GetCommState() failed:" TSRMLS_CC); | |||
+ dio_last_error_php_error(E_WARNING, "GetCommState() failed:"); | |||
return 0; | |||
} | |||
@@ -646,7 +646,7 @@ static int dio_serial_init(php_dio_stream_data *data TSRMLS_DC) { | |||
} | |||
if (!SetCommState(wdata->handle, &dcb)) { | |||
- dio_last_error_php_error(E_WARNING, "SetCommState() failed:" TSRMLS_CC); | |||
+ dio_last_error_php_error(E_WARNING, "SetCommState() failed:"); | |||
return 0; | |||
} | |||
@@ -698,23 +698,23 @@ int dio_serial_purge(php_dio_stream_data *data) { | |||
/* {{{ dio_serial_open_stream | |||
* Opens the underlying stream. | |||
*/ | |||
-int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC) { | |||
+int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data) { | |||
php_dio_win32_stream_data *wdata = (php_dio_win32_stream_data*)data; | |||
COMMTIMEOUTS cto = { 0, 0, 0, 0, 0 }; | |||
- php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Opening \"%s\" as a serial port (mode=\"%s\").", filename, mode); | |||
+ php_error_docref(NULL, E_NOTICE, "Opening \"%s\" as a serial port (mode=\"%s\").", filename, mode); | |||
if (*mode != 'r') { | |||
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "You must open serial ports in read or read/write mode!"); | |||
+ php_error_docref(NULL, E_WARNING, "You must open serial ports in read or read/write mode!"); | |||
return 0; | |||
} | |||
- if (!dio_raw_open_stream(filename, mode, data TSRMLS_CC)) { | |||
+ if (!dio_raw_open_stream(filename, mode, data)) { | |||
return 0; | |||
} | |||
if (!GetCommTimeouts(wdata->handle, &(wdata->oldcto))) { | |||
- dio_last_error_php_error(E_WARNING, "GetCommTimeouts() failed (Not a comm port?):" TSRMLS_CC); | |||
+ dio_last_error_php_error(E_WARNING, "GetCommTimeouts() failed (Not a comm port?):"); | |||
CloseHandle(wdata->handle); | |||
return 0; | |||
} | |||
@@ -735,12 +735,12 @@ int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data | |||
} | |||
if (!SetCommTimeouts(wdata->handle, &cto)) { | |||
- dio_last_error_php_error(E_WARNING, "SetCommTimeouts() failed:" TSRMLS_CC); | |||
+ dio_last_error_php_error(E_WARNING, "SetCommTimeouts() failed:"); | |||
CloseHandle(wdata->handle); | |||
return 0; | |||
} | |||
- if (!dio_serial_init(data TSRMLS_CC)) { | |||
+ if (!dio_serial_init(data)) { | |||
CloseHandle(wdata->handle); | |||
return 0; | |||
} | |||
diff --git a/php_dio_common.h b/php_dio_common.h | |||
index 7a75370..6af202f 100644 | |||
--- a/php_dio_common.h | |||
+++ b/php_dio_common.h | |||
@@ -39,13 +39,13 @@ php_dio_stream_data * dio_create_stream_data(void); | |||
void dio_init_stream_data(php_dio_stream_data *data); | |||
-void dio_assoc_array_get_basic_options(zval *options, php_dio_stream_data *data TSRMLS_DC); | |||
+void dio_assoc_array_get_basic_options(zval *options, php_dio_stream_data *data); | |||
-void dio_assoc_array_get_serial_options(zval *options, php_dio_stream_data *data TSRMLS_DC); | |||
+void dio_assoc_array_get_serial_options(zval *options, php_dio_stream_data *data); | |||
-void dio_stream_context_get_basic_options(php_stream_context *context, php_dio_stream_data *data TSRMLS_DC); | |||
+void dio_stream_context_get_basic_options(php_stream_context *context, php_dio_stream_data *data); | |||
-void dio_stream_context_get_serial_options(php_stream_context *context, php_dio_stream_data *data TSRMLS_DC); | |||
+void dio_stream_context_get_serial_options(php_stream_context *context, php_dio_stream_data *data); | |||
size_t dio_common_write(php_dio_stream_data *data, const char *buf, size_t count); | |||
@@ -55,13 +55,13 @@ int dio_common_close(php_dio_stream_data *data); | |||
int dio_common_set_option(php_dio_stream_data *data, int option, int value, void *ptrparam); | |||
-int dio_raw_open_stream(const char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC); | |||
+int dio_raw_open_stream(const char *filename, const char *mode, php_dio_stream_data *data); | |||
int dio_serial_uninit(php_dio_stream_data *data); | |||
int dio_serial_purge(php_dio_stream_data *data); | |||
-int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data TSRMLS_DC); | |||
+int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data); | |||
#endif /* PHP_DIO_COMMON_H_ */ | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,69 @@ | |||
From 942b77d84417298fb9e99c216029f22fbd1e2d98 Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Thu, 14 Jul 2016 01:47:05 +0200 | |||
Subject: [PATCH 13/16] Fix tests for legacy interface | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio.c | 16 ++++++++++------ | |||
1 file changed, 10 insertions(+), 6 deletions(-) | |||
diff --git a/dio.c b/dio.c | |||
index 7bad575..1a130a2 100644 | |||
--- a/dio.c | |||
+++ b/dio.c | |||
@@ -73,9 +73,9 @@ static int new_php_fd(php_fd_t **f, int fd) | |||
return 1; | |||
} | |||
-static void _dio_close_fd(zend_resource *res) | |||
+static void _dio_close_fd(zend_resource *rsrc) | |||
{ | |||
- php_fd_t *f = (php_fd_t *)zend_fetch_resource(res, NULL, le_fd); | |||
+ php_fd_t *f = (php_fd_t *)rsrc->ptr; | |||
if (f) { | |||
close(f->fd); | |||
free(f); | |||
@@ -87,8 +87,8 @@ static void _dio_close_fd(zend_resource *res) | |||
PHP_FUNCTION(dio_open) | |||
{ | |||
php_fd_t *f; | |||
- char *file_name; | |||
- int file_name_length; | |||
+ char *file_name = NULL; | |||
+ size_t file_name_length = 0; | |||
long flags; | |||
long mode = 0; | |||
int fd; | |||
@@ -97,6 +97,10 @@ PHP_FUNCTION(dio_open) | |||
return; | |||
} | |||
+ if (!file_name || file_name[0] == '\0') { | |||
+ RETURN_FALSE; | |||
+ } | |||
+ | |||
if (php_check_open_basedir(file_name) || DIO_SAFE_MODE_CHECK(file_name, "wb+")) { | |||
RETURN_FALSE; | |||
} | |||
@@ -176,7 +180,7 @@ PHP_FUNCTION(dio_dup) | |||
RETURN_FALSE; | |||
} | |||
- RETVAL_RES(zend_register_resource(f, le_fd)); | |||
+ RETVAL_RES(zend_register_resource(df, le_fd)); | |||
} | |||
/* }}} */ | |||
#endif | |||
@@ -660,7 +664,7 @@ PHP_FUNCTION(dio_close) | |||
RETURN_FALSE; | |||
} | |||
- zend_list_delete(Z_LVAL_P(r_fd)); | |||
+ zend_list_delete(Z_RES_P(r_fd)); | |||
} | |||
/* }}} */ | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,54 @@ | |||
From ff469d3a11409e9b043dc10ddfc44792c5359ff1 Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Thu, 14 Jul 2016 01:47:05 +0200 | |||
Subject: [PATCH 14/16] Add missing changes from changed stream API interface | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio_posix.c | 2 +- | |||
dio_stream_wrappers.c | 2 +- | |||
php_dio_common.h | 2 +- | |||
3 files changed, 3 insertions(+), 3 deletions(-) | |||
diff --git a/dio_posix.c b/dio_posix.c | |||
index 843e234..b2aa228 100644 | |||
--- a/dio_posix.c | |||
+++ b/dio_posix.c | |||
@@ -632,7 +632,7 @@ int dio_serial_purge(php_dio_stream_data *data) { | |||
/* {{{ dio_serial_open_stream | |||
* Opens the underlying stream. | |||
*/ | |||
-int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data) { | |||
+int dio_serial_open_stream(const char *filename, const char *mode, php_dio_stream_data *data) { | |||
php_dio_posix_stream_data *pdata = (php_dio_posix_stream_data*)data; | |||
#ifdef O_NOCTTY | |||
diff --git a/dio_stream_wrappers.c b/dio_stream_wrappers.c | |||
index eb23752..0a00daa 100644 | |||
--- a/dio_stream_wrappers.c | |||
+++ b/dio_stream_wrappers.c | |||
@@ -292,7 +292,7 @@ static php_stream *dio_serial_fopen_wrapper(php_stream_wrapper *wrapper, | |||
{ | |||
php_dio_stream_data *data; | |||
php_stream *stream; | |||
- char *filename; | |||
+ const char *filename; | |||
/* Check it was actually for us (not a corrupted function pointer | |||
somewhere!). */ | |||
diff --git a/php_dio_common.h b/php_dio_common.h | |||
index 6af202f..7068ea7 100644 | |||
--- a/php_dio_common.h | |||
+++ b/php_dio_common.h | |||
@@ -61,7 +61,7 @@ int dio_serial_uninit(php_dio_stream_data *data); | |||
int dio_serial_purge(php_dio_stream_data *data); | |||
-int dio_serial_open_stream(char *filename, char *mode, php_dio_stream_data *data); | |||
+int dio_serial_open_stream(const char *filename, const char *mode, php_dio_stream_data *data); | |||
#endif /* PHP_DIO_COMMON_H_ */ | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,48 @@ | |||
From def92a2db269d4ea6d2e8b7f8fe9dd473886a6b1 Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Sun, 17 Jul 2016 01:08:47 +0200 | |||
Subject: [PATCH 15/16] Add .gitignore | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
.gitignore | 28 ++++++++++++++++++++++++++++ | |||
1 file changed, 28 insertions(+) | |||
create mode 100644 .gitignore | |||
diff --git a/.gitignore b/.gitignore | |||
new file mode 100644 | |||
index 0000000..dae52e8 | |||
--- /dev/null | |||
+++ b/.gitignore | |||
@@ -0,0 +1,28 @@ | |||
+.deps | |||
+.libs | |||
+Makefile | |||
+Makefile.fragments | |||
+Makefile.global | |||
+Makefile.objects | |||
+acinclude.m4 | |||
+aclocal.m4 | |||
+autom4te.cache | |||
+build | |||
+config.guess | |||
+config.h | |||
+config.h.in | |||
+config.log | |||
+config.nice | |||
+config.status | |||
+config.sub | |||
+configure | |||
+configure.in | |||
+*.la | |||
+*.lo | |||
+install-sh | |||
+libtool | |||
+ltmain.sh | |||
+missing | |||
+mkinstalldirs | |||
+modules | |||
+run-tests.php | |||
-- | |||
2.5.0 | |||
@ -0,0 +1,44 @@ | |||
From 0f8df09a8008eed8a7ac0c6400bce523014ff770 Mon Sep 17 00:00:00 2001 | |||
From: Michael Heimpold <mhei@heimpold.de> | |||
Date: Mon, 18 Jul 2016 22:45:04 +0200 | |||
Subject: [PATCH 16/16] Add additional baudrates | |||
Signed-off-by: Michael Heimpold <mhei@heimpold.de> | |||
--- | |||
dio.c | 20 ++++++++++++++++++++ | |||
1 file changed, 20 insertions(+) | |||
diff --git a/dio.c b/dio.c | |||
index 1a130a2..a4e8e7d 100644 | |||
--- a/dio.c | |||
+++ b/dio.c | |||
@@ -522,6 +522,26 @@ PHP_FUNCTION(dio_tcsetattr) | |||
/* assign to correct values... */ | |||
switch (Baud_Rate) { | |||
+#ifdef B460800 | |||
+ case 460800: | |||
+ BAUD = B460800; | |||
+ break; | |||
+#endif | |||
+#ifdef B230400 | |||
+ case 230400: | |||
+ BAUD = B230400; | |||
+ break; | |||
+#endif | |||
+#ifdef B115200 | |||
+ case 115200: | |||
+ BAUD = B115200; | |||
+ break; | |||
+#endif | |||
+#ifdef B57600 | |||
+ case 57600: | |||
+ BAUD = B57600; | |||
+ break; | |||
+#endif | |||
case 38400: | |||
BAUD = B38400; | |||
break; | |||
-- | |||
2.5.0 | |||