From 4decaf547f0082b4bfb32e4caeec4530729a3e48 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Sat, 28 Mar 2015 12:05:47 +0100 Subject: php-pecl-termbox: add fix for PHP 7 --- termbox-php7.patch | 145 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 termbox-php7.patch (limited to 'termbox-php7.patch') diff --git a/termbox-php7.patch b/termbox-php7.patch new file mode 100644 index 0000000..2eb0608 --- /dev/null +++ b/termbox-php7.patch @@ -0,0 +1,145 @@ +From 02a7c1c0a05614bd42e9d624aeda3be90d476f3a Mon Sep 17 00:00:00 2001 +From: Remi Collet +Date: Sat, 28 Mar 2015 11:56:23 +0100 +Subject: [PATCH] PHP 7 compatibility + +--- + php_termbox.h | 10 ++++++++++ + termbox.c | 30 +++++++++++++++++------------- + 2 files changed, 27 insertions(+), 13 deletions(-) + +diff --git a/php_termbox.h b/php_termbox.h +index 179dcd3..c21ac75 100644 +--- a/php_termbox.h ++++ b/php_termbox.h +@@ -89,6 +89,16 @@ PHP_FUNCTION(termbox_last_error); + #define TERMBOX_G(v) (termbox_globals.v) + #endif + ++#if PHP_MAJOR_VERSION < 7 ++typedef long zend_long; ++typedef int strsize; ++#define TERMBOX_RETSTRL(a,l) RETURN_STRINGL(a,l,1) ++#else ++typedef size_t strsize; ++#define TSRMLS_CC ++#define TERMBOX_RETSTRL(a,l) RETURN_STRINGL(a,l) ++#endif ++ + #endif /* PHP_TERMBOX_H */ + + /* +diff --git a/termbox.c b/termbox.c +index 0b51b0f..575b5dd 100644 +--- a/termbox.c ++++ b/termbox.c +@@ -149,8 +149,7 @@ PHP_MINIT_FUNCTION(termbox) + ZEND_INIT_MODULE_GLOBALS(termbox, _termbox_init_globals, NULL); + + /** Register constants */ +- #define PHP_TERMBOX_CONSTANT(NAME) \ +- zend_register_long_constant(#NAME, sizeof(#NAME), NAME, CONST_CS | CONST_PERSISTENT, module_number TSRMLS_CC); ++ #define PHP_TERMBOX_CONSTANT(NAME) REGISTER_LONG_CONSTANT(#NAME, NAME, CONST_CS | CONST_PERSISTENT); + #include "constants.h" + #undef PHP_TERMBOX_CONSTANT + return SUCCESS; +@@ -262,7 +261,8 @@ PHP_FUNCTION(termbox_clear) + initialized yet. */ + PHP_FUNCTION(termbox_set_clear_attributes) + { +- long fg, bg; ++ zend_long fg, bg; ++ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &fg, &bg) == FAILURE) { + return; + } +@@ -292,7 +292,8 @@ PHP_FUNCTION(termbox_present) + Cursor is hidden by default. Return FALSE if not initialized yet. */ + PHP_FUNCTION(termbox_set_cursor) + { +- long x, y; ++ zend_long x, y; ++ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &x, &y) == FAILURE) { + return; + } +@@ -307,7 +308,8 @@ PHP_FUNCTION(termbox_set_cursor) + position. Return FALSE if not initialized yet. */ + PHP_FUNCTION(termbox_change_cell) + { +- long x, y, ch, fg, bg; ++ zend_long x, y, ch, fg, bg; ++ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lllll", &x, &y, &ch, &fg, &bg) == FAILURE) { + return; + } +@@ -322,7 +324,8 @@ PHP_FUNCTION(termbox_change_cell) + if not yet initialized. */ + PHP_FUNCTION(termbox_set_input_mode) + { +- long mode; ++ zend_long mode; ++ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &mode) == FAILURE) { + return; + } +@@ -354,7 +357,8 @@ PHP_FUNCTION(termbox_get_input_mode) { + yet initialized. */ + PHP_FUNCTION(termbox_set_output_mode) + { +- long mode; ++ zend_long mode; ++ + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &mode) == FAILURE) { + return; + } +@@ -398,7 +402,7 @@ static void _termbox_event_to_php_array(struct tb_event *event, zval *event_arr) + NULL. If an error occurrs, return FALSE. */ + PHP_FUNCTION(termbox_peek_event) + { +- long timeout_ms; ++ zend_long timeout_ms; + struct tb_event event; + int rc; + +@@ -449,7 +453,7 @@ PHP_FUNCTION(termbox_poll_event) + PHP_FUNCTION(termbox_utf8_char_to_unicode) + { + char *str; +- int str_len; ++ strsize str_len; + uint32_t unicode_int; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &str, &str_len) == FAILURE) { +@@ -470,7 +474,7 @@ PHP_FUNCTION(termbox_utf8_unicode_to_char) + { + char str[7]; + int str_len; +- long unicode; ++ zend_long unicode; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &unicode) == FAILURE) { + return; +@@ -483,7 +487,7 @@ PHP_FUNCTION(termbox_utf8_unicode_to_char) + str_len = 0; + } + +- RETURN_STRINGL(str, str_len, 1); ++ TERMBOX_RETSTRL(str, str_len); + } + /* }}} */ + +@@ -493,8 +497,8 @@ PHP_FUNCTION(termbox_utf8_unicode_to_char) + PHP_FUNCTION(termbox_print) + { + char *str; +- int str_len; +- long x, y, fg, bg; ++ strsize str_len; ++ zend_long x, y, fg, bg; + uint32_t unicode; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sllll", &str, &str_len, &x, &y, &fg, &bg) == FAILURE) { +-- +2.1.4 + -- cgit