Revision: 104762 https://trac.macports.org/changeset/104762 Author: ryandesign@macports.org Date: 2013-04-02 03:39:35 -0700 (Tue, 02 Apr 2013) Log Message: ----------- php55-rar: fix build which broke some time between php 5.5.0alpha3 and 5.5.0beta1 inclusive Modified Paths: -------------- trunk/dports/php/php-rar/Portfile Added Paths: ----------- trunk/dports/php/php-rar/files/patch-php55.diff Modified: trunk/dports/php/php-rar/Portfile =================================================================== --- trunk/dports/php/php-rar/Portfile 2013-04-02 10:35:58 UTC (rev 104761) +++ trunk/dports/php/php-rar/Portfile 2013-04-02 10:39:35 UTC (rev 104762) @@ -25,6 +25,11 @@ patchfiles patch-config.m4.diff +if {${php.branch} == 5.5} { + incr revision + patchfiles-append patch-php55.diff +} + configure.args-append --enable-rar use_parallel_build yes Added: trunk/dports/php/php-rar/files/patch-php55.diff =================================================================== --- trunk/dports/php/php-rar/files/patch-php55.diff (rev 0) +++ trunk/dports/php/php-rar/files/patch-php55.diff 2013-04-02 10:39:35 UTC (rev 104762) @@ -0,0 +1,376 @@ +https://bugs.php.net/bug.php?id=64562 +--- rar_stream.c.orig 2012-07-29 08:41:03.000000000 -0500 ++++ rar_stream.c 2013-04-02 04:57:11.000000000 -0500 +@@ -755,7 +755,7 @@ + if ((*archive = expand_filepath(tmp_archive, NULL TSRMLS_CC)) + == NULL) { + php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, +- "Could not expand the path %s", tmp_archive); ++ "Could not expand the path %s", *tmp_archive); + goto cleanup; + } + } +@@ -1063,6 +1063,8 @@ + /* copied from main/streams/streams.c because it's an internal function */ + static void _rar_stream_tidy_wrapper_error_log(php_stream_wrapper *wrapper TSRMLS_DC) + { ++/* these members are missing in 5.5+. removed or to be added later? */ ++#if PHP_VERSION_ID < 50500 + if (wrapper) { + /* tidy up the error stack */ + int i; +@@ -1076,6 +1078,7 @@ + wrapper->err_stack = NULL; + wrapper->err_count = 0; + } ++#endif + } + #else + static void _rar_stream_tidy_wrapper_error_log(php_stream_wrapper *wrapper TSRMLS_DC) +--- rarentry.c (revision 329976) ++++ rarentry.c (working copy) +@@ -49,7 +49,7 @@ + static int _rar_decl_priv_prop_null(zend_class_entry *ce, const char *name, + int name_length, char *doc_comment, + int doc_comment_len TSRMLS_DC); +-static zval **_rar_entry_get_property(zval *entry_obj, char *name, int namelen TSRMLS_DC); ++static zval *_rar_entry_get_property(zval *entry_obj, char *name, int namelen TSRMLS_DC); + static void _rar_dos_date_to_text(int dos_time, char *date_string); + static zend_object_value rarentry_ce_create_object(zend_class_entry *class_type TSRMLS_DC); + /* }}} */ +@@ -160,28 +160,14 @@ + } + /* }}} */ + +-static zval **_rar_entry_get_property(zval *entry_obj, char *name, int namelen TSRMLS_DC) /* {{{ */ ++static zval *_rar_entry_get_property(zval *entry_obj, char *name, int namelen TSRMLS_DC) /* {{{ */ + { +- zval **tmp; +- zval member; ++ zval *tmp; + zend_class_entry *orig_scope = EG(scope); + + EG(scope) = rar_class_entry_ptr; + +- INIT_ZVAL(member); +- Z_TYPE(member) = IS_STRING; +- Z_STRVAL(member) = name; +- Z_STRLEN(member) = namelen; +- +- /* probably should be replaced by zend_read_property */ +- +-#if PHP_VERSION_ID < 50399 +- tmp = Z_OBJ_HANDLER_P(entry_obj, get_property_ptr_ptr)(entry_obj, &member +- TSRMLS_CC); +-#else +- tmp = Z_OBJ_HANDLER_P(entry_obj, get_property_ptr_ptr)(entry_obj, &member, +- NULL TSRMLS_CC); +-#endif ++ tmp = zend_read_property(Z_OBJCE_P(entry_obj), entry_obj, name, namelen, 1 TSRMLS_CC); + if (tmp == NULL) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, + "Bug: unable to find property '%s'. Please report.", name); +@@ -248,8 +234,8 @@ + int with_second_arg; + zend_bool process_ed = 0; + +- zval **tmp, +- **tmp_position; ++ zval *tmp, ++ *tmp_position; + rar_file_t *rar = NULL; + zval *entry_obj = getThis(); + struct RARHeaderDataEx entry; +@@ -267,7 +253,7 @@ + } + + RAR_GET_PROPERTY(tmp, "rarfile"); +- if (_rar_get_file_resource(*tmp, &rar TSRMLS_CC) == FAILURE) { ++ if (_rar_get_file_resource(tmp, &rar TSRMLS_CC) == FAILURE) { + RETURN_FALSE; + } + +@@ -304,7 +290,7 @@ + memcpy(&cb_udata, &rar->cb_userdata, sizeof cb_udata); + + result = _rar_find_file_p(rar->extract_open_data, +- (size_t) Z_LVAL_PP(tmp_position), &cb_udata, &extract_handle, &found, ++ (size_t) Z_LVAL_P(tmp_position), &cb_udata, &extract_handle, &found, + &entry); + + if (_rar_handle_error(result TSRMLS_CC) == FAILURE) { +@@ -314,7 +300,7 @@ + + if (!found) { + _rar_handle_ext_error("Can't find file with index %d in archive %s" +- TSRMLS_CC, Z_LVAL_PP(tmp_position), ++ TSRMLS_CC, Z_LVAL_P(tmp_position), + rar->extract_open_data->ArcName); + RETVAL_FALSE; + goto cleanup; +@@ -352,14 +338,14 @@ + Return position for the entry */ + PHP_METHOD(rarentry, getPosition) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "position"); + +- RETURN_LONG(Z_LVAL_PP(tmp)); ++ RETURN_LONG(Z_LVAL_P(tmp)); + } + /* }}} */ + +@@ -367,14 +353,14 @@ + Return entry name */ + PHP_METHOD(rarentry, getName) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "name"); + +- RETURN_STRINGL(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1); ++ RETURN_STRINGL(Z_STRVAL_P(tmp), Z_STRLEN_P(tmp), 1); + } + /* }}} */ + +@@ -382,14 +368,14 @@ + Return unpacked size of the entry */ + PHP_METHOD(rarentry, getUnpackedSize) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "unpacked_size"); + +- RETURN_LONG(Z_LVAL_PP(tmp)); ++ RETURN_LONG(Z_LVAL_P(tmp)); + } + /* }}} */ + +@@ -397,14 +383,14 @@ + Return packed size of the entry */ + PHP_METHOD(rarentry, getPackedSize) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "packed_size"); + +- RETURN_LONG(Z_LVAL_PP(tmp)); ++ RETURN_LONG(Z_LVAL_P(tmp)); + } + /* }}} */ + +@@ -412,14 +398,14 @@ + Return host OS of the entry */ + PHP_METHOD(rarentry, getHostOs) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "host_os"); + +- RETURN_LONG(Z_LVAL_PP(tmp)); ++ RETURN_LONG(Z_LVAL_P(tmp)); + } + /* }}} */ + +@@ -427,14 +413,14 @@ + Return modification time of the entry */ + PHP_METHOD(rarentry, getFileTime) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "file_time"); + +- RETURN_STRINGL(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1); ++ RETURN_STRINGL(Z_STRVAL_P(tmp), Z_STRLEN_P(tmp), 1); + } + /* }}} */ + +@@ -442,14 +428,14 @@ + Return CRC of the entry */ + PHP_METHOD(rarentry, getCrc) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "crc"); + +- RETURN_STRINGL(Z_STRVAL_PP(tmp), Z_STRLEN_PP(tmp), 1); ++ RETURN_STRINGL(Z_STRVAL_P(tmp), Z_STRLEN_P(tmp), 1); + } + /* }}} */ + +@@ -457,14 +443,14 @@ + Return attributes of the entry */ + PHP_METHOD(rarentry, getAttr) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "attr"); + +- RETURN_LONG(Z_LVAL_PP(tmp)); ++ RETURN_LONG(Z_LVAL_P(tmp)); + } + /* }}} */ + +@@ -472,14 +458,14 @@ + Return version of the archiver, used to create this entry */ + PHP_METHOD(rarentry, getVersion) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "version"); + +- RETURN_LONG(Z_LVAL_PP(tmp)); ++ RETURN_LONG(Z_LVAL_P(tmp)); + } + /* }}} */ + +@@ -487,14 +473,14 @@ + Return packing method */ + PHP_METHOD(rarentry, getMethod) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "method"); + +- RETURN_LONG(Z_LVAL_PP(tmp)); ++ RETURN_LONG(Z_LVAL_P(tmp)); + } + /* }}} */ + +@@ -502,8 +488,8 @@ + Return stream for current entry */ + PHP_METHOD(rarentry, getStream) + { +- zval **tmp, +- **position; ++ zval *tmp, ++ *position; + rar_file_t *rar = NULL; + zval *entry_obj = getThis(); + php_stream *stream = NULL; +@@ -519,7 +505,7 @@ + + RAR_GET_PROPERTY(position, "position"); + RAR_GET_PROPERTY(tmp, "rarfile"); +- if (_rar_get_file_resource(*tmp, &rar TSRMLS_CC) == FAILURE) { ++ if (_rar_get_file_resource(tmp, &rar TSRMLS_CC) == FAILURE) { + RETURN_FALSE; + } + +@@ -530,7 +516,7 @@ + + /* doesn't matter that cb_udata is stack allocated, it will be copied */ + stream = php_stream_rar_open(rar->extract_open_data->ArcName, +- Z_LVAL_PP(position), &cb_udata, "r" STREAMS_CC TSRMLS_CC); ++ Z_LVAL_P(position), &cb_udata, "r" STREAMS_CC TSRMLS_CC); + + if (stream != NULL) { + php_stream_to_zval(stream, return_value); +@@ -544,7 +530,7 @@ + Return whether the entry represents a directory */ + PHP_METHOD(rarentry, isDirectory) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + long flags; + int is_dir; +@@ -552,7 +538,7 @@ + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "flags"); +- flags = Z_LVAL_PP(tmp); ++ flags = Z_LVAL_P(tmp); + is_dir = ((flags & LHD_WINDOWMASK) == LHD_DIRECTORY); + + RETURN_BOOL(is_dir); +@@ -563,7 +549,7 @@ + Return whether the entry is encrypted and needs a password */ + PHP_METHOD(rarentry, isEncrypted) + { +- zval **tmp; ++ zval *tmp; + zval *entry_obj = getThis(); + long flags; + int is_encrypted; +@@ -571,7 +557,7 @@ + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(tmp, "flags"); +- flags = Z_LVAL_PP(tmp); ++ flags = Z_LVAL_P(tmp); + is_encrypted = (flags & 0x04); + + RETURN_BOOL(is_encrypted); +@@ -582,9 +568,9 @@ + Return string representation for entry */ + PHP_METHOD(rarentry, __toString) + { +- zval **flags_zval, +- **name_zval, +- **crc_zval; ++ zval *flags_zval, ++ *name_zval, ++ *crc_zval; + zval *entry_obj = getThis(); + long flags; + int is_dir; +@@ -597,14 +583,14 @@ + RAR_RETNULL_ON_ARGS(); + + RAR_GET_PROPERTY(flags_zval, "flags"); +- flags = Z_LVAL_PP(flags_zval); ++ flags = Z_LVAL_P(flags_zval); + is_dir = ((flags & 0xE0) == 0xE0); + + RAR_GET_PROPERTY(name_zval, "name"); +- name = Z_STRVAL_PP(name_zval); ++ name = Z_STRVAL_P(name_zval); + + RAR_GET_PROPERTY(crc_zval, "crc"); +- crc = Z_STRVAL_PP(crc_zval); ++ crc = Z_STRVAL_P(crc_zval); + + /* 2 is size of %s, 8 is size of crc */ + restring_len = (sizeof(format)-1) - 2 * 3 + (sizeof("directory")-1) +