8 Commits
0.3.1 ... 0.3.3

Author SHA1 Message Date
michael
9ff8bd236f Upgraded PHP LICENSE to version 3.01. Released a new version.
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@337814 c90b9560-bf6c-de11-be94-00142212c4b1
2015-09-11 17:46:51 +00:00
remi
962f488073 fix global init/shudown (segfault on ZTS build)
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@337812 c90b9560-bf6c-de11-be94-00142212c4b1
2015-09-11 16:02:10 +00:00
remi
7e6b652293 add LICENSE + missing files in package.xml
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@337811 c90b9560-bf6c-de11-be94-00142212c4b1
2015-09-11 15:32:52 +00:00
remi
6fafe17e77 set max version as not yet compatible with php 7
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@337810 c90b9560-bf6c-de11-be94-00142212c4b1
2015-09-11 15:19:21 +00:00
remi
18ea03b802 fix build when PHP_LIBDIR = lib64 (RPM distro)
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@337809 c90b9560-bf6c-de11-be94-00142212c4b1
2015-09-11 15:15:49 +00:00
michael
a291a8ff3b Increment version
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@337808 c90b9560-bf6c-de11-be94-00142212c4b1
2015-09-11 12:31:25 +00:00
michael
48d03837f9 Fixed #70458
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@337807 c90b9560-bf6c-de11-be94-00142212c4b1
2015-09-11 12:29:29 +00:00
michael
5fdde4afbf Fixed setting boolea value "expect.loguser"
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@334336 c90b9560-bf6c-de11-be94-00142212c4b1
2014-07-20 16:29:12 +00:00
5 changed files with 153 additions and 54 deletions

68
LICENSE Normal file
View File

@@ -0,0 +1,68 @@
--------------------------------------------------------------------
The PHP License, version 3.01
Copyright (c) 1999 - 2014 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>.

View File

@@ -21,7 +21,9 @@ if test "$PHP_EXPECT" != "no"; then
fi
done
AC_MSG_CHECKING(for tcl version)
for i in $PHP_TCLDIR/tclConfig.sh /usr/lib/tcl*/tclConfig.sh \
/usr/$PHP_LIBDIR/tcl*/tclConfig.sh \
/usr/local/lib/tcl*/tclConfig.sh \
/System/Library/Frameworks/Tcl.framework/Versions/Current/tclConfig.sh;
do
@@ -30,9 +32,14 @@ if test "$PHP_EXPECT" != "no"; then
break
fi
done
if test -n "$TCL_VERSION" ; then
AC_MSG_RESULT($TCL_VERSION in $TCL_PREFIX)
else
AC_MSG_ERROR([not found])
fi
PHP_ADD_LIBRARY_WITH_PATH(tcl$TCL_VERSION, $TCL_PREFIX/lib, EXPECT_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(expect, $LIBEXPECT_DIR/lib, EXPECT_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(tcl$TCL_VERSION, $TCL_PREFIX/$PHP_LIBDIR, EXPECT_SHARED_LIBADD)
PHP_ADD_LIBRARY_WITH_PATH(expect, $LIBEXPECT_DIR/$PHP_LIBDIR, EXPECT_SHARED_LIBADD)
PHP_ADD_INCLUDE($LIBEXPECT_INCLUDE_DIR)
PHP_NEW_EXTENSION(expect, expect.c expect_fopen_wrapper.c, $ext_shared)

102
expect.c
View File

@@ -41,6 +41,10 @@ zend_function_entry expect_functions[] = {
/* }}} */
ZEND_DECLARE_MODULE_GLOBALS(expect)
static PHP_GINIT_FUNCTION(expect);
static PHP_GSHUTDOWN_FUNCTION(expect);
/* {{{ expect_module_entry
*/
zend_module_entry expect_module_entry = {
@@ -53,7 +57,11 @@ zend_module_entry expect_module_entry = {
NULL,
PHP_MINFO(expect),
PHP_EXPECT_VERSION,
STANDARD_MODULE_PROPERTIES
PHP_MODULE_GLOBALS(expect),
PHP_GINIT(expect),
PHP_GSHUTDOWN(expect),
NULL,
STANDARD_MODULE_PROPERTIES_EX
};
/* }}} */
@@ -61,22 +69,20 @@ zend_module_entry expect_module_entry = {
ZEND_GET_MODULE(expect)
#endif
ZEND_DECLARE_MODULE_GLOBALS(expect)
/* {{{ php_expect_init_globals
*/
static void php_expect_init_globals (zend_expect_globals *globals TSRMLS_DC)
static PHP_GINIT_FUNCTION(expect)
{
globals->logfile_stream = NULL;
expect_globals->logfile_stream = NULL;
}
/* }}} */
/* {{{ php_expect_destroy_globals
*/
static void php_expect_destroy_globals(zend_expect_globals *globals TSRMLS_DC)
static PHP_GSHUTDOWN_FUNCTION(expect)
{
if (globals->logfile_stream) {
php_stream_close(globals->logfile_stream);
if (expect_globals->logfile_stream) {
php_stream_close(expect_globals->logfile_stream);
}
}
/* }}} */
@@ -111,10 +117,13 @@ static PHP_INI_MH(OnSetExpectMatchMax)
static PHP_INI_MH(OnSetExpectLogUser)
{
if (new_value) {
if (strncasecmp("on", new_value, sizeof("on"))) {
exp_loguser = atoi(new_value);
} else {
if (strncasecmp("on", new_value, sizeof("on")) == 0
|| strncasecmp("true", new_value, sizeof("true")) == 0
|| strncasecmp("yes", new_value, sizeof("yes")) == 0
|| strncasecmp("1", new_value, sizeof("1")) == 0) {
exp_loguser = 1;
} else {
exp_loguser = 0;
}
return SUCCESS;
}
@@ -341,47 +350,49 @@ PHP_FUNCTION(expect_expectl)
}
ecases_ptr->pattern = NULL;
ecases_ptr->re = NULL;
ecases_ptr->value = NULL;
ecases_ptr->value = 0;
ecases_ptr->type = exp_end;
key = exp_expectv (fd, ecases);
int exp_retval = exp_expectv (fd, ecases);
int case_found = 0;
if (exp_retval >= 0) {
key = exp_retval;
int exp_match_len = exp_match_end - exp_match;
if (key >= 0 && z_match && exp_match && exp_match_len > 0) {
char *tmp = (char *)emalloc (sizeof(char) * (exp_match_len + 1));
strlcpy (tmp, exp_match, exp_match_len + 1);
zval_dtor (z_match);
array_init(z_match);
add_index_string(z_match, 0, tmp, 1);
/* Get case that was matched */
matchedcase = ecases[key];
/* If there are subpattern matches ... */
if (matchedcase.re != NULL && matchedcase.re->startp != NULL) {
int i;
/* iterate across all possible 9 subpatterns (a limitation of libexpect)
and add matching substring to matches array */
for (i = 1; i <= 9; i++) {
if (matchedcase.re->startp[i] != NULL) {
int sub_match_len = matchedcase.re->endp[i] - matchedcase.re->startp[i];
char *sub_match = (char *)emalloc (sizeof(char) * (sub_match_len + 1));
strlcpy (sub_match, matchedcase.re->startp[i], sub_match_len + 1);
add_next_index_string(z_match, sub_match, 1);
efree (sub_match);
int exp_match_len = exp_match_end - exp_match;
if (z_match && exp_match && exp_match_len > 0) {
char *tmp = (char *)emalloc (sizeof(char) * (exp_match_len + 1));
strlcpy (tmp, exp_match, exp_match_len + 1);
zval_dtor (z_match);
array_init(z_match);
add_index_string(z_match, 0, tmp, 1);
/* Get case that was matched */
matchedcase = ecases[key];
/* If there are subpattern matches ... */
if (matchedcase.re != NULL && matchedcase.re->startp != NULL) {
int i;
/* iterate across all possible 9 subpatterns (a limitation of libexpect)
and add matching substring to matches array */
for (i = 1; i <= 9; i++) {
if (matchedcase.re->startp[i] != NULL) {
int sub_match_len = matchedcase.re->endp[i] - matchedcase.re->startp[i];
char *sub_match = (char *)emalloc (sizeof(char) * (sub_match_len + 1));
strlcpy (sub_match, matchedcase.re->startp[i], sub_match_len + 1);
add_next_index_string(z_match, sub_match, 1);
efree (sub_match);
}
}
}
efree (tmp);
}
efree (tmp);
}
if (zend_hash_index_find (Z_ARRVAL_P(z_cases), key, (void **)&z_case) == SUCCESS) {
if (zend_hash_index_find(Z_ARRVAL_PP(z_case), 1, (void **)&z_value) == SUCCESS) {
*return_value = **z_value;
zval_copy_ctor (return_value);
if (zend_hash_index_find (Z_ARRVAL_P(z_cases), key, (void **)&z_case) == SUCCESS) {
if (zend_hash_index_find(Z_ARRVAL_PP(z_case), 1, (void **)&z_value) == SUCCESS) {
*return_value = **z_value;
zval_copy_ctor (return_value);
case_found = 1;
}
}
}
else {
RETURN_LONG (key);
}
// Free compiled patterns:
ecases_ptr = ecases;
@@ -391,8 +402,11 @@ PHP_FUNCTION(expect_expectl)
}
ecases_ptr++;
}
efree (ecases);
if (!case_found) {
RETURN_LONG(exp_retval);
}
}
/* }}} */

View File

@@ -14,19 +14,19 @@ http://pear.php.net/dtd/package-2.0.xsd">
<email>michael@php.net</email>
<active>yes</active>
</lead>
<date>2011-11-22</date>
<time>18:24:00</time>
<date>2015-09-11</date>
<time>15:25:00</time>
<version>
<release>0.3.1</release>
<api>0.3.1</api>
<release>0.3.3</release>
<api>0.3.3</api>
</version>
<stability>
<release>beta</release>
<api>beta</api>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://www.php.net/license">PHP License</license>
<notes>
Fixed compilation issue (Bug #59916)
Added LICENSE. Fixed RPM build for 64bit.
</notes>
<contents>
<dir name="/">
@@ -36,12 +36,22 @@ Fixed compilation issue (Bug #59916)
<file name="expect.dsp" role="src" />
<file name="expect_fopen_wrapper.c" role="src" />
<file name="php_expect.h" role="src" />
<file name="LICENSE" role="doc" />
<dir name="tests">
<file name="bug12268.phpt" role="test" />
<file name="bug22566.phpt" role="test" />
<file name="bug6996.phpt" role="test" />
<file name="expect_expectl.phpt" role="test" />
<file name="expect_popen.phpt" role="test" />
<file name="expect_wrapper.phpt" role="test" />
</dir>
</dir> <!-- / -->
</contents>
<dependencies>
<required>
<php>
<min>4.0.0</min>
<max>5.99.99</max>
</php>
<pearinstaller>
<min>1.4.0b1</min>

View File

@@ -37,7 +37,7 @@
extern zend_module_entry expect_module_entry;
#define phpext_expect_ptr &expect_module_entry
#define PHP_EXPECT_VERSION "0.3.1-dev"
#define PHP_EXPECT_VERSION "0.3.3"
#ifdef PHP_WIN32
#define PHP_EXPECT_API __declspec(dllexport)