6 Commits
0.3.0 ... 0.3.2

Author SHA1 Message Date
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
michael
98a048f820 Fixed compilation issues (bug #59916)
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@319689 c90b9560-bf6c-de11-be94-00142212c4b1
2011-11-22 16:27:35 +00:00
michael
c02699dde7 removed duplicate print added in previous commit by mistake
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@312460 c90b9560-bf6c-de11-be94-00142212c4b1
2011-06-25 15:42:54 +00:00
michael
8133790622 Updated e-mail address
git-svn-id: https://svn.php.net/repository/pecl/expect/trunk@312443 c90b9560-bf6c-de11-be94-00142212c4b1
2011-06-24 19:35:30 +00:00
5 changed files with 70 additions and 50 deletions

View File

@@ -5,6 +5,9 @@ dnl
PHP_ARG_WITH(expect,for expect support,
[ --with-expect[=DIR] Include expect support (requires libexpect >= 5.43.0).])
PHP_ARG_WITH(tcldir,specify path to Tcl needed by expect,
[ --with-tcldir[=DIR] Specify path to Tcl config script (tclConfig.sh).])
if test "$PHP_EXPECT" != "no"; then
for i in $PHP_EXPECT/include/expect.h $PHP_EXPECT/include/*/expect.h \
@@ -18,9 +21,21 @@ if test "$PHP_EXPECT" != "no"; then
fi
done
for i in $PHP_TCLDIR/tclConfig.sh /usr/lib/tcl*/tclConfig.sh \
/usr/local/lib/tcl*/tclConfig.sh \
/System/Library/Frameworks/Tcl.framework/Versions/Current/tclConfig.sh;
do
if test -f $i; then
. $i
break
fi
done
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_INCLUDE($LIBEXPECT_INCLUDE_DIR)
PHP_NEW_EXTENSION(expect, expect.c expect_fopen_wrapper.c, $ext_shared)
PHP_SUBST(EXPECT_SHARED_LIBADD)
fi

View File

@@ -12,7 +12,7 @@
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Michael Spector <michael@zend.com> |
| Author: Michael Spector <michael@php.net> |
+----------------------------------------------------------------------+
*/
@@ -111,10 +111,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;
}
@@ -272,8 +275,6 @@ PHP_FUNCTION(expect_expectl)
php_stream_from_zval (stream, &z_stream);
if (!stream->wrapperdata) {
php_error_docref (NULL TSRMLS_CC, E_ERROR, "supplied argument is not a valid stream resource");
php_error_docref (NULL TSRMLS_CC, E_ERROR, "supplied argument is not a valid stream resource");
php_error_docref (NULL TSRMLS_CC, E_ERROR, "supplied argument is not a valid stream resource");
return;
}
@@ -343,47 +344,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;
@@ -393,8 +396,11 @@ PHP_FUNCTION(expect_expectl)
}
ecases_ptr++;
}
efree (ecases);
if (!case_found) {
RETURN_LONG(exp_retval);
}
}
/* }}} */

View File

@@ -12,7 +12,7 @@
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Michael Spector <michael@zend.com> |
| Author: Michael Spector <michael@php.net> |
+----------------------------------------------------------------------+
*/

View File

@@ -14,20 +14,19 @@ http://pear.php.net/dtd/package-2.0.xsd">
<email>michael@php.net</email>
<active>yes</active>
</lead>
<date>2011-06-23</date>
<time>23:40:00</time>
<date>2015-09-11</date>
<time>15:25:00</time>
<version>
<release>0.3.0</release>
<api>0.3.0</api>
<release>0.3.2</release>
<api>0.3.2</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 setting INI parameters (Bug #22566)
Fixed Segmentation Fault on use (Bug #21578)
Fixed #70458
</notes>
<contents>
<dir name="/">

View File

@@ -12,7 +12,7 @@
| obtain it through the world-wide-web, please send a note to |
| license@php.net so we can mail you a copy immediately. |
+----------------------------------------------------------------------+
| Author: Michael Spector <michael@zend.com> |
| Author: Michael Spector <michael@php.net> |
+----------------------------------------------------------------------+
*/
@@ -37,7 +37,7 @@
extern zend_module_entry expect_module_entry;
#define phpext_expect_ptr &expect_module_entry
#define PHP_EXPECT_VERSION "0.2.7-dev"
#define PHP_EXPECT_VERSION "0.3.2"
#ifdef PHP_WIN32
#define PHP_EXPECT_API __declspec(dllexport)