Commit c743daed758953a60a4867c8434c230e9b34ba71
1 parent
aff1fde6
Exists in
master
and in
5 other branches
Ajustando módulo PHP
Showing
10 changed files
with
234 additions
and
34 deletions
Show diff stats
configure.ac
@@ -239,6 +239,7 @@ AC_MSG_RESULT($app_cv_fvisibility_ok) | @@ -239,6 +239,7 @@ AC_MSG_RESULT($app_cv_fvisibility_ok) | ||
239 | if test $app_cv_fvisibility_ok = yes; then | 239 | if test $app_cv_fvisibility_ok = yes; then |
240 | CFLAGS="$CFLAGS -fvisibility=hidden" | 240 | CFLAGS="$CFLAGS -fvisibility=hidden" |
241 | OO_CXXFLAGS="$OO_CXXFLAGS -fvisibility=hidden" | 241 | OO_CXXFLAGS="$OO_CXXFLAGS -fvisibility=hidden" |
242 | + CXXFLAGS="$CXXFLAGS -fvisibility=hidden" | ||
242 | fi | 243 | fi |
243 | 244 | ||
244 | #--[ Options ]------------------------------------------------------------------------------------------------------------------------------------------------ | 245 | #--[ Options ]------------------------------------------------------------------------------------------------------------------------------------------------ |
@@ -624,6 +625,7 @@ AC_CONFIG_FILES([ | @@ -624,6 +625,7 @@ AC_CONFIG_FILES([ | ||
624 | makegtkruntime.sh | 625 | makegtkruntime.sh |
625 | src/sample/Makefile | 626 | src/sample/Makefile |
626 | mac/pw3270.bundle | 627 | mac/pw3270.bundle |
628 | + src/php/Makefile | ||
627 | ]) | 629 | ]) |
628 | 630 | ||
629 | dnl Output the generated config.status script. | 631 | dnl Output the generated config.status script. |
src/classlib/local.cc
src/classlib/session.cc
@@ -483,7 +483,10 @@ | @@ -483,7 +483,10 @@ | ||
483 | int rc = 0; | 483 | int rc = 0; |
484 | 484 | ||
485 | if(host && *host) | 485 | if(host && *host) |
486 | + { | ||
486 | rc = set_url(host); | 487 | rc = set_url(host); |
488 | + trace("%s: set_url(%s) = %d",__FUNCTION__,host,rc); | ||
489 | + } | ||
487 | 490 | ||
488 | if(!rc) | 491 | if(!rc) |
489 | rc = connect(wait); | 492 | rc = connect(wait); |
@@ -0,0 +1,99 @@ | @@ -0,0 +1,99 @@ | ||
1 | +# | ||
2 | +# "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | +# (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | +# aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | +# | ||
6 | +# Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | +# | ||
8 | +# Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | +# os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | +# Free Software Foundation. | ||
11 | +# | ||
12 | +# Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | +# GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | +# A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | +# obter mais detalhes. | ||
16 | +# | ||
17 | +# Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | +# programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple | ||
19 | +# Place, Suite 330, Boston, MA, 02111-1307, USA | ||
20 | +# | ||
21 | +# Contatos: | ||
22 | +# | ||
23 | +# perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
24 | +# erico.mendonca@gmail.com (Erico Mascarenhas de Mendonça) | ||
25 | +# | ||
26 | + | ||
27 | +PACKAGE_NAME=@PACKAGE_NAME@ | ||
28 | +SOURCES=get.cc init.cc main.cc misc.cc set.cc | ||
29 | + | ||
30 | +#---[ Paths ]------------------------------------------------------------------ | ||
31 | + | ||
32 | +prefix=@prefix@ | ||
33 | +exec_prefix=@exec_prefix@ | ||
34 | +bindir=@bindir@ | ||
35 | +sbindir=@sbindir@ | ||
36 | +libdir=@libdir@ | ||
37 | +includedir=@includedir@ | ||
38 | + | ||
39 | +#---[ Tools ]------------------------------------------------------------------ | ||
40 | + | ||
41 | +CXX=@CXX@ | ||
42 | +MKDIR=@MKDIR_P@ | ||
43 | +INSTALL=@INSTALL@ | ||
44 | +INSTALL_DATA=@INSTALL_DATA@ | ||
45 | +INSTALL_PROGRAM=@INSTALL_PROGRAM@ | ||
46 | +PHPCONFIG=@PHPCONFIG@ | ||
47 | + | ||
48 | +#---[ Paths ]------------------------------------------------------------------ | ||
49 | + | ||
50 | +OBJDIR = .obj | ||
51 | +BINDIR = .bin | ||
52 | + | ||
53 | +OBJDBG = $(OBJDIR)/Debug | ||
54 | +BINDBG = $(BINDIR)/Debug | ||
55 | + | ||
56 | +OBJRLS = $(OBJDIR)/Release | ||
57 | +BINRLS = $(BINDIR)/Release | ||
58 | + | ||
59 | +#---[ lib3270 common class ]--------------------------------------------------- | ||
60 | + | ||
61 | +DEBUG_CFLAGS=-DDEBUG=1 -g -Wall | ||
62 | +PW3270_CFLAGS=-I../include | ||
63 | +CLASSLIBDIR=../classlib | ||
64 | +include $(CLASSLIBDIR)/class.mak | ||
65 | + | ||
66 | +#---[ Build options ]---------------------------------------------------------- | ||
67 | + | ||
68 | +CXXFLAGS=@CXXFLAGS@ @DLL_CFLAGS@ `$(PHPCONFIG) --includes` -I../include | ||
69 | + | ||
70 | +#---[ Rules ]------------------------------------------------------------------ | ||
71 | + | ||
72 | +$(OBJDBG)/%.o: %.cc php3270.h Makefile | ||
73 | + @echo " CC `basename $@`" | ||
74 | + @mkdir -p `dirname $@` | ||
75 | + $(CXX) -DDEBUG=1 $(CXXFLAGS) -o $@ -c $< | ||
76 | + | ||
77 | + | ||
78 | +#---[ Release targets ]-------------------------------------------------------- | ||
79 | + | ||
80 | +#---[ Debug targets ]---------------------------------------------------------- | ||
81 | + | ||
82 | +Debug: $(BINDBG)/php3270@DLLEXT@ | ||
83 | + | ||
84 | +$(BINDBG)/php3270@DLLEXT@: $(foreach SRC, $(basename $(SOURCES)), $(OBJDBG)/$(SRC)@OBJEXT@) \ | ||
85 | + $(CLASS_DEBUG_OBJECTS) | ||
86 | + @echo " LD `basename $@`" | ||
87 | + @$(MKDIR) `dirname $@` | ||
88 | + $(CXX) -shared $(LDFLAGS) $(OO_LDFLAGS) $(CLASS_LIBS) -o $@ $^ | ||
89 | + | ||
90 | + | ||
91 | +run: $(BINDBG)/php3270@DLLEXT@ | ||
92 | + php -d extension=$(BINDBG)/php3270@DLLEXT@ sample.php | ||
93 | + | ||
94 | +#---[ Misc targets ]----------------------------------------------------------- | ||
95 | + | ||
96 | +clean: | ||
97 | + @rm -fr $(OBJDIR) | ||
98 | + @rm -fr $(BINDIR) | ||
99 | + |
src/php/main.cc
@@ -43,12 +43,17 @@ static zend_object_handlers tn3270_object_handlers; | @@ -43,12 +43,17 @@ static zend_object_handlers tn3270_object_handlers; | ||
43 | zend_function_entry tn3270_methods[] = | 43 | zend_function_entry tn3270_methods[] = |
44 | { | 44 | { |
45 | PHP_ME( tn3270, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 45 | PHP_ME( tn3270, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
46 | + | ||
46 | PHP_ME( tn3270, connect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 47 | PHP_ME( tn3270, connect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
47 | PHP_ME( tn3270, disconnect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 48 | PHP_ME( tn3270, disconnect, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
48 | 49 | ||
49 | PHP_ME( tn3270, isconnected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 50 | PHP_ME( tn3270, isconnected, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
50 | PHP_ME( tn3270, isready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 51 | PHP_ME( tn3270, isready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
51 | 52 | ||
53 | + PHP_ME( tn3270, waitforready, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | ||
54 | + PHP_ME( tn3270, wait, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | ||
55 | + PHP_ME( tn3270, iterate, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | ||
56 | + | ||
52 | PHP_ME( tn3270, pfkey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 57 | PHP_ME( tn3270, pfkey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
53 | PHP_ME( tn3270, pakey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 58 | PHP_ME( tn3270, pakey, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
54 | PHP_ME( tn3270, enter, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) | 59 | PHP_ME( tn3270, enter, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) |
@@ -129,34 +134,3 @@ extern "C" | @@ -129,34 +134,3 @@ extern "C" | ||
129 | } | 134 | } |
130 | // #endif | 135 | // #endif |
131 | 136 | ||
132 | -PHP_METHOD(tn3270, connect) | ||
133 | -{ | ||
134 | - const char * host; | ||
135 | - int szHost; | ||
136 | - zend_bool wait = 0; | ||
137 | - int rc = 0; | ||
138 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
139 | - | ||
140 | - if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sb", &host, &szHost, &wait) == FAILURE) | ||
141 | - RETURN_NULL(); | ||
142 | - | ||
143 | - if(szHost) | ||
144 | - { | ||
145 | - char text[szHost+1]; | ||
146 | - strncpy(text,host,szHost); | ||
147 | - text[szHost] = 0; | ||
148 | - rc = obj->hSession->connect(text,wait); | ||
149 | - } | ||
150 | - else | ||
151 | - { | ||
152 | - rc = obj->hSession->connect(); | ||
153 | - } | ||
154 | - | ||
155 | - RETURN_LONG(rc); | ||
156 | -} | ||
157 | - | ||
158 | -PHP_METHOD(tn3270, disconnect) | ||
159 | -{ | ||
160 | - tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
161 | - RETURN_LONG(obj->hSession->disconnect()); | ||
162 | -} |
@@ -0,0 +1,117 @@ | @@ -0,0 +1,117 @@ | ||
1 | +/* | ||
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | ||
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | ||
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. | ||
5 | + * | ||
6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
7 | + * | ||
8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
10 | + * Free Software Foundation. | ||
11 | + * | ||
12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
15 | + * obter mais detalhes. | ||
16 | + * | ||
17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | ||
19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | ||
20 | + * | ||
21 | + * Este programa está nomeado como main.cc e possui - linhas de código. | ||
22 | + * | ||
23 | + * Contatos: | ||
24 | + * | ||
25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
27 | + * | ||
28 | + * Referências: | ||
29 | + * | ||
30 | + * http://devzone.zend.com/1435/wrapping-c-classes-in-a-php-extension/ | ||
31 | + * | ||
32 | + */ | ||
33 | + | ||
34 | + #include "php3270.h" | ||
35 | + | ||
36 | +/*--[ Implement ]--------------------------------------------------------------------------------------------------*/ | ||
37 | + | ||
38 | +PHP_METHOD(tn3270, connect) | ||
39 | +{ | ||
40 | + const char * host; | ||
41 | + int szHost; | ||
42 | + zend_bool wait = 0; | ||
43 | + int rc = 0; | ||
44 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
45 | + | ||
46 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sb", &host, &szHost, &wait) == FAILURE) | ||
47 | + RETURN_NULL(); | ||
48 | + | ||
49 | + if(szHost) | ||
50 | + { | ||
51 | + char text[szHost+1]; | ||
52 | + strncpy(text,host,szHost); | ||
53 | + text[szHost] = 0; | ||
54 | + rc = obj->hSession->connect(text,wait); | ||
55 | + } | ||
56 | + else | ||
57 | + { | ||
58 | + rc = obj->hSession->connect(); | ||
59 | + } | ||
60 | + | ||
61 | + RETURN_LONG(rc); | ||
62 | +} | ||
63 | + | ||
64 | +PHP_METHOD(tn3270, disconnect) | ||
65 | +{ | ||
66 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
67 | + RETURN_LONG(obj->hSession->disconnect()); | ||
68 | +} | ||
69 | + | ||
70 | +PHP_METHOD(tn3270, waitforready) | ||
71 | +{ | ||
72 | + long seconds; | ||
73 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
74 | + | ||
75 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | ||
76 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | ||
77 | + RETURN_NULL(); | ||
78 | + | ||
79 | + RETURN_LONG(obj->hSession->wait_for_ready((int) seconds)); | ||
80 | +} | ||
81 | + | ||
82 | +PHP_METHOD(tn3270, waity) | ||
83 | +{ | ||
84 | + long seconds; | ||
85 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
86 | + | ||
87 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | ||
88 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | ||
89 | + RETURN_NULL(); | ||
90 | + | ||
91 | + RETURN_LONG(obj->hSession->wait((int) seconds)); | ||
92 | +} | ||
93 | + | ||
94 | +PHP_METHOD(tn3270, wait) | ||
95 | +{ | ||
96 | + long seconds; | ||
97 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
98 | + | ||
99 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | ||
100 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &seconds) == FAILURE) | ||
101 | + RETURN_NULL(); | ||
102 | + | ||
103 | + RETURN_LONG(obj->hSession->wait((int) seconds)); | ||
104 | +} | ||
105 | + | ||
106 | + | ||
107 | +PHP_METHOD(tn3270, iterate) | ||
108 | +{ | ||
109 | + zend_bool wait = 0; | ||
110 | + tn3270_object * obj = (tn3270_object *) zend_object_store_get_object(getThis() TSRMLS_CC); | ||
111 | + | ||
112 | + // http://www.php.net/manual/pt_BR/internals2.funcs.php | ||
113 | + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b", &wait) == FAILURE) | ||
114 | + RETURN_NULL(); | ||
115 | + | ||
116 | + RETURN_LONG(obj->hSession->iterate(wait)); | ||
117 | +} |
src/php/php3270.cbp
@@ -51,6 +51,7 @@ | @@ -51,6 +51,7 @@ | ||
51 | <Unit filename="get.cc" /> | 51 | <Unit filename="get.cc" /> |
52 | <Unit filename="init.cc" /> | 52 | <Unit filename="init.cc" /> |
53 | <Unit filename="main.cc" /> | 53 | <Unit filename="main.cc" /> |
54 | + <Unit filename="misc.cc" /> | ||
54 | <Unit filename="php3270.h" /> | 55 | <Unit filename="php3270.h" /> |
55 | <Unit filename="sample.php" /> | 56 | <Unit filename="sample.php" /> |
56 | <Unit filename="set.cc" /> | 57 | <Unit filename="set.cc" /> |
src/php/php3270.h
@@ -52,6 +52,9 @@ | @@ -52,6 +52,9 @@ | ||
52 | PHP_METHOD(tn3270,disconnect); | 52 | PHP_METHOD(tn3270,disconnect); |
53 | PHP_METHOD(tn3270,isconnected); | 53 | PHP_METHOD(tn3270,isconnected); |
54 | PHP_METHOD(tn3270,isready); | 54 | PHP_METHOD(tn3270,isready); |
55 | + PHP_METHOD(tn3270,waitforready); | ||
56 | + PHP_METHOD(tn3270,wait); | ||
57 | + PHP_METHOD(tn3270,iterate); | ||
55 | 58 | ||
56 | PHP_METHOD(tn3270,pfkey); | 59 | PHP_METHOD(tn3270,pfkey); |
57 | PHP_METHOD(tn3270,pakey); | 60 | PHP_METHOD(tn3270,pakey); |
src/php/sample.php
@@ -7,7 +7,8 @@ | @@ -7,7 +7,8 @@ | ||
7 | $rc = $host->connect(); | 7 | $rc = $host->connect(); |
8 | print("connect() exits with rc=" . $rc . "\n"); | 8 | print("connect() exits with rc=" . $rc . "\n"); |
9 | 9 | ||
10 | - | 10 | + $rc = $host->waitforready(10); |
11 | + print("waitforready() exits with rc=" . $rc . "\n"); | ||
11 | 12 | ||
12 | $rc = $host->disconnect(); | 13 | $rc = $host->disconnect(); |
13 | print("disconnect() exits with rc=" . $rc . "\n"); | 14 | print("disconnect() exits with rc=" . $rc . "\n"); |
src/plugins/dbus3270/gobject.c
@@ -109,7 +109,7 @@ void pw3270_dbus_set_host(PW3270Dbus *object, const gchar *uri, DBusGMethodInvoc | @@ -109,7 +109,7 @@ void pw3270_dbus_set_host(PW3270Dbus *object, const gchar *uri, DBusGMethodInvoc | ||
109 | 109 | ||
110 | g_message("Changing host to \"%s\" by remote request",uri); | 110 | g_message("Changing host to \"%s\" by remote request",uri); |
111 | 111 | ||
112 | - dbus_g_method_return(context,lib3270_set_url(pw3270_dbus_get_session_handle(PW3270_DBUS(object)),uri) != NULL); | 112 | + dbus_g_method_return(context,lib3270_set_url(pw3270_dbus_get_session_handle(PW3270_DBUS(object)),uri) == NULL); |
113 | } | 113 | } |
114 | 114 | ||
115 | void pw3270_dbus_disconnect(PW3270Dbus *object, DBusGMethodInvocation *context) | 115 | void pw3270_dbus_disconnect(PW3270Dbus *object, DBusGMethodInvocation *context) |