[PHP] RE: PHP, Windows and COM.
hi richard > The problem with some of the VBA functions is that the first and last > parameter need to be set and the ones in the middle have no > meaning and > cannot be present. This can only be achieved by using named > parameters. The > GoTo method, as a function, in VBA would be ... sooner or later everything ends up in a native c(++) function call and there are no such things as named parameters. therefore nonpresent parameters will be assigned a default value (iirc NULL if no explicit default value is specified.) so try calling GoTo(wdGoToBookmark, NULL, NULL, "BookmarkName"); or, if it doesn't work $empty = new VARIANT(); GoTo(wdGoToBookmark, $empty, $empty, "BookmarkName"); the difference is, that there exists two different variant types with nearly the same meaning, VT_NULL and VT_EMPTY. PHP's NULL will be marshalled to VT_NULL, VT_EMPTY has to be created by explicitly creating an empty variant container in php. ad. your previous question: there are two other ways of importing a type library, you can either com_load_typelib("Word.Application") which will search for the typelib assigned to that component or you can enable com.autoregister_typelib in your php.ini which will cause php to load the typelib for every component you instanciate. harald -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[PHP] RE: PHP, Windows and COM.
hi richard, currently there is no way of calling a function with named arguments. your proposed array syntax wouldn't allow for passing arrays. on the other hand variant arrays can only be indexed arrays and not hash arrays so i could treat all string indices as named parameters. this would be a possibility though i still find it very confusing. if anybody has a good suggestion that is feasable on top of the engine (meaning without modifying the scanner/parser) don't hesitate to post it to the list. back to your actual problem: you still can call all functions without naming parameters, though you have to specify the full list of parameters up to at least the last optional parameter that should not be set to its default value (uuh, does this make sence ? actually its exactly the same as calling a php function with optional parameters). you can look up the default values for optional parameters in the components typelibrary which is browsable using the oleview tool. i hope that helps. regards, Harald Radi -- nme - we can heal you http://www.nme.at <http://www.nme.at/> Ortner Radi Schwenk GnbR Tumpenweg 528 5084 Grossgmain, Salzburg Austria -Original Message- From: Richard Quadling [mailto:[EMAIL PROTECTED] Sent: Tuesday, February 25, 2003 5:53 PM To: '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]'; '[EMAIL PROTECTED]' Subject: PHP, Windows and COM. Hi. As authors of the COM.c within the PHP Source code, I am hoping one of you clever people can help me. I am trying to use PHP to control MS Word. Simple stuff like opening a document, writing and saving I have no problem with, and many of the online tutorials on this show this and very little else. My problem is that I want to use functions from within Word where the parameters would be named. e.g. In VBA, the GoTo function is defined as; expression.GoTo(What, Which, Count, Name) The following examples are all valid. Selection.GoTo What:=wdGoToHeading, Which:=wdGoToFirst Selection.GoTo What:=wdGoToHeading, Which:=wdGoToAbsolute, Count:=1 Selection.GoTo What:=wdGoToField, Name:="Date" The What parameter can be ... wdGoToBookmark wdGoToComment wdGoToEndnote wdGoToEquation wdGoToField wdGoToFootnote wdGoToGrammaticalError wdGoToGraphic wdGoToHeading wdGoToLine wdGoToObject wdGoToPage wdGoToPercent wdGoToProofreadingError wdGoToRevision wdGoToSection wdGoToSpellingError wdGoToTable The Which parameter can be ... wdGoToAbsolute wdGoToFirst wdGoToLast wdGoToNext wdGoToPrevious wdGoToRelative All the parameters are optional. Not all work together. For example, you can't say goto the page named "fred" as pages don't have names! The problem I have within PHP is I can't work out how to use any function that has optional parameters. e.g. $word->Documents[1]->GoTo(array("What"=>"wdGoToBookmark","Name"=>"YourName")); $word->Documents[1]->GoTo("wdGoToBookmark","YourName"); etc. The function seems to have been defined as requiring 4 parameters from PHP's pov. Is there any known method within PHP to support named parameters for COM functions that have optional parameters. Search and Replace is another one I can get working, which is why I tried using bookmarks, but still no joy. Now, if I've lost the plot, then let me know. Alternatively/also, how do I know what typelibrary to load? Is ... com_load_typelib("C:\\Program Files\\Common Files\\Microsoft Shared\\Office10"); correct when ... Version}\n"; $word->Documents->Open("C:\\Empty.DOC"); print "Document loaded"; $word->Documents[1]->GoTo(array("What"=>-1,"Name"=>"YourName")); print "Goto 1 done"; $word->Selection->TypeText("{$_GET['YourName']}"); print "Typetext 1 done"; $word->Documents[1]->GoTo(array("What"=>-1,"Name"=>"YourAge")); print "Goto 2 done"; $word->Selection->TypeText("{$_GET['YourAge']}"); print "Typetext 2 done"; $word->Documents[1]->SaveAs("C:\\filled.doc"); print "New saved document"; $word->Quit(); $word->Release(); $word = null; print "Word closed.\n"; ?> The word document has 2 bookmarks. I called "YourName" and one called "YourAge". The above script is called as word.php?YourName=Richard&YourAge=35 Please help! Regards, Richard Quadling
[PHP-CVS] cvs: php4 /win32 php4dllts.dsp
phanto Tue Mar 20 14:25:10 2001 EDT Modified files: /php4/win32 php4dllts.dsp Log: added com.h Index: php4/win32/php4dllts.dsp diff -u php4/win32/php4dllts.dsp:1.32 php4/win32/php4dllts.dsp:1.33 --- php4/win32/php4dllts.dsp:1.32 Fri Feb 23 14:55:28 2001 +++ php4/win32/php4dllts.dspTue Mar 20 14:25:10 2001 @@ -1899,6 +1899,10 @@ # PROP Default_Filter "" # Begin Source File +SOURCE=..\ext\com\com.h +# End Source File +# Begin Source File + SOURCE=..\ext\com\conversion.h # End Source File # Begin Source File -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com COM.c com.h php_COM.h typedef_VARIANT.c
phanto Tue Mar 20 14:35:28 2001 EDT Added files: /php4/ext/com com.h Modified files: /php4/ext/com typedef_VARIANT.c php_COM.h COM.c Log: @Using ITypeInfo instead of IDispatch if possible. This makes DCOM calls @and even COM calls much faster. @All ini settings are now prefixed by 'com.'. @Now you need not provide a path to the file containing the typelib, you can @also provide the GUID of the TypeLib - entry or an IID for preloading @type - information. (phanto) memory leak was reportet, i'm not sure that it is fixed by now, but it should be. Index: php4/ext/com/typedef_VARIANT.c diff -u php4/ext/com/typedef_VARIANT.c:1.8 php4/ext/com/typedef_VARIANT.c:1.9 --- php4/ext/com/typedef_VARIANT.c:1.8 Sun Feb 25 22:06:49 2001 +++ php4/ext/com/typedef_VARIANT.c Tue Mar 20 14:35:28 2001 @@ -69,38 +69,38 @@ le_variant = zend_register_list_destructors_ex(php_variant_destructor, NULL, "VARIANT", module_number); /* variant datatypes */ - REGISTER_LONG_CONSTANT("VT_NULL", VT_NULL, 0); - REGISTER_LONG_CONSTANT("VT_EMPTY", VT_EMPTY, 0); - REGISTER_LONG_CONSTANT("VT_UI1", VT_UI1, 0); - REGISTER_LONG_CONSTANT("VT_I2", VT_I2, 0); - REGISTER_LONG_CONSTANT("VT_I4", VT_I4, 0); - REGISTER_LONG_CONSTANT("VT_R4", VT_R4, 0); - REGISTER_LONG_CONSTANT("VT_R8", VT_R8, 0); - REGISTER_LONG_CONSTANT("VT_BOOL", VT_BOOL, 0); - REGISTER_LONG_CONSTANT("VT_ERROR", VT_ERROR, 0); - REGISTER_LONG_CONSTANT("VT_CY", VT_CY, 0); - REGISTER_LONG_CONSTANT("VT_DATE", VT_CY, 0); - REGISTER_LONG_CONSTANT("VT_BSTR", VT_BSTR, 0); - REGISTER_LONG_CONSTANT("VT_DECIMAL", VT_DECIMAL, 0); - REGISTER_LONG_CONSTANT("VT_UNKNOWN", VT_UNKNOWN, 0); - REGISTER_LONG_CONSTANT("VT_DISPATCH", VT_DISPATCH, 0); - REGISTER_LONG_CONSTANT("VT_VARIANT", VT_VARIANT, 0); - REGISTER_LONG_CONSTANT("VT_I1", VT_I1, 0); - REGISTER_LONG_CONSTANT("VT_UI2", VT_UI2, 0); - REGISTER_LONG_CONSTANT("VT_UI4", VT_UI4, 0); - REGISTER_LONG_CONSTANT("VT_INT", VT_INT, 0); - REGISTER_LONG_CONSTANT("VT_UINT", VT_UINT, 0); - REGISTER_LONG_CONSTANT("VT_ARRAY", VT_ARRAY, 0); - REGISTER_LONG_CONSTANT("VT_BYREF", VT_BYREF, 0); + REGISTER_LONG_CONSTANT("VT_NULL", VT_NULL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_EMPTY", VT_EMPTY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UI1", VT_UI1, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_I2", VT_I2, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_I4", VT_I4, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_R4", VT_R4, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_R8", VT_R8, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_BOOL", VT_BOOL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_ERROR", VT_ERROR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_CY", VT_CY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_DATE", VT_CY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_BSTR", VT_BSTR, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_DECIMAL", VT_DECIMAL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UNKNOWN", VT_UNKNOWN, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_DISPATCH", VT_DISPATCH, CONST_CS | +CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_VARIANT", VT_VARIANT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_I1", VT_I1, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UI2", VT_UI2, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UI4", VT_UI4, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_INT", VT_INT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_UINT", VT_UINT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_ARRAY", VT_ARRAY, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("VT_BYREF", VT_BYREF, CONST_CS | CONST_PERSISTENT); /* codepages */ - REGISTER_LONG_CONSTANT("CP_ACP", CP_ACP, 0); - REGISTER_LONG_CONSTANT("CP_MACCP", CP_MACCP, 0); - REGISTER_LONG_CONSTANT("CP_OEMCP", CP_OEMCP, 0); - REGISTER_LONG_CONSTANT("CP_SYMBOL", CP_SYMBOL, 0); - REGISTER_LONG_CONSTANT("CP_THREAD_ACP", CP_THREAD_ACP, 0); - REGISTER_LONG_CONSTANT("CP_UTF7", CP_UTF7, 0); - REGISTER_LONG_CONSTANT("CP_UTF8", CP_UTF8, 0); + REGISTER_LONG_CONSTANT("CP_ACP", CP_ACP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_MACCP", CP_MACCP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_OEMCP", CP_OEMCP, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_SYMBOL", CP_SYMBOL, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("CP_THREAD_ACP", CP_THREAD
[PHP-CVS] cvs: php4 / php.ini-dist php.ini-optimized
phanto Tue Mar 20 14:45:10 2001 EDT Modified files: /php4 php.ini-optimized php.ini-dist Log: added [com] section Index: php4/php.ini-optimized diff -u php4/php.ini-optimized:1.33 php4/php.ini-optimized:1.34 --- php4/php.ini-optimized:1.33 Wed Mar 7 02:08:19 2001 +++ php4/php.ini-optimized Tue Mar 20 14:45:10 2001 @@ -494,6 +494,10 @@ [Sockets] sockets.use_system_read= Off ; Use the system read() function instead of ; the php_read() wrapper. +[com] +;com.typelib_file =; path to a file containing GUIDs, +IIDs or filenames of files with TypeLibs +;com.allow_dcom= true; allow Distributed-COM calls + ; Local Variables: ; tab-width: 4 ; End: Index: php4/php.ini-dist diff -u php4/php.ini-dist:1.73 php4/php.ini-dist:1.74 --- php4/php.ini-dist:1.73 Wed Mar 7 02:08:19 2001 +++ php4/php.ini-dist Tue Mar 20 14:45:10 2001 @@ -1,5 +1,5 @@ [PHP] -; $Id: php.ini-dist,v 1.73 2001/03/07 10:08:19 zeev Exp $ +; $Id: php.ini-dist,v 1.74 2001/03/20 22:45:10 phanto Exp $ ;;; ; About this file ; @@ -761,3 +761,9 @@ [Sockets] ; Use the system read() function instead of the php_read() wrapper. sockets.use_system_read = On + +[com] +; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs +;com.typelib_file = +; allow Distributed-COM calls +;com.allow_dcom = true -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4(PHP_4_0_5) /win32 php4dllts.dsp
phanto Sun Apr 22 05:14:44 2001 EDT Modified files: (Branch: PHP_4_0_5) /php4/win32 php4dllts.dsp Log: added ext/com/com.h to PHP_4_0_5 branch Index: php4/win32/php4dllts.dsp diff -u php4/win32/php4dllts.dsp:1.32 php4/win32/php4dllts.dsp:1.32.2.1 --- php4/win32/php4dllts.dsp:1.32 Fri Feb 23 14:55:28 2001 +++ php4/win32/php4dllts.dspSun Apr 22 05:14:44 2001 @@ -1899,6 +1899,10 @@ # PROP Default_Filter "" # Begin Source File +SOURCE=..\ext\com\com.h +# End Source File +# Begin Source File + SOURCE=..\ext\com\conversion.h # End Source File # Begin Source File -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4(PHP_4_0_5) /ext/com COM.c com.h php_COM.h typedef_VARIANT.c
phanto Sun Apr 22 04:57:18 2001 EDT Added files: (Branch: PHP_4_0_5) /php4/ext/com com.h Modified files: /php4/ext/com COM.c php_COM.h typedef_VARIANT.c Log: merging changes from main branch to fix a memory leak #sorry for being late, but i was on holiday Index: php4/ext/com/COM.c diff -u php4/ext/com/COM.c:1.6 php4/ext/com/COM.c:1.6.2.1 --- php4/ext/com/COM.c:1.6 Sun Feb 25 22:06:49 2001 +++ php4/ext/com/COM.c Sun Apr 22 04:57:18 2001 @@ -50,27 +50,17 @@ #define _WIN32_DCOM -#ifdef CP_THREAD_ACP -#define PHP_COM_CODEPAGE CP_THREAD_ACP -#else -#define PHP_COM_CODEPAGE CP_ACP -#endif - #include #include #include "php.h" #include "php_ini.h" +#include "com.h" #include "conversion.h" -#include "unknwn.h" - -BEGIN_EXTERN_C() zend_class_entry com_class_entry; -END_EXTERN_C() - PHP_FUNCTION(COM_load); PHP_FUNCTION(COM_invoke); PHP_FUNCTION(com_propget); @@ -101,27 +91,94 @@ static int php_COM_load_typelib(char *typelib_name, int mode); +PHPAPI HRESULT php_COM_invoke(i_dispatch *obj, DISPID dispIdMember, WORD wFlags, +DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult) +{ + if(obj->typelib) { + return obj->i.dispatch->lpVtbl->Invoke(obj->i.dispatch, dispIdMember, +&IID_NULL, LOCALE_SYSTEM_DEFAULT, + +wFlags, pDispParams, pVarResult, NULL, NULL); + } else { + return obj->i.typeinfo->lpVtbl->Invoke(obj->i.typeinfo, +obj->i.dispatch, dispIdMember, + +wFlags, pDispParams, pVarResult, NULL, NULL); + } +} + +PHPAPI HRESULT php_COM_get_ids_of_names(i_dispatch *obj, OLECHAR FAR* FAR* rgszNames, +DISPID FAR* rgDispId) +{ + if(obj->typelib) { + return obj->i.dispatch->lpVtbl->GetIDsOfNames(obj->i.dispatch, +&IID_NULL, rgszNames, 1, LOCALE_SYSTEM_DEFAULT, rgDispId); + } else { + return obj->i.typeinfo->lpVtbl->GetIDsOfNames(obj->i.typeinfo, +rgszNames, 1, rgDispId); + } +} + +PHPAPI HRESULT php_COM_release(i_dispatch *obj) +{ + HRESULT hr; + + hr = obj->i.dispatch->lpVtbl->Release(obj->i.dispatch); + obj->i.dispatch = NULL; + obj->i.typeinfo = NULL; + obj->typelib = FALSE; + + return hr; +} + +PHPAPI HRESULT php_COM_set(i_dispatch *obj, IDispatch FAR* pDisp, int cleanup) +{ + HRESULT hr; + + obj->i.dispatch = pDisp; + obj->typelib = !FAILED(obj->i.dispatch->lpVtbl->GetTypeInfo(obj->i.dispatch, +0, LANG_NEUTRAL, &obj->i.typeinfo)); + + if(cleanup) { + pDisp = NULL; + } else { + hr = obj->i.dispatch->lpVtbl->AddRef(obj->i.dispatch); + } + + return hr; +} + +PHPAPI HRESULT php_COM_clone(i_dispatch *obj, i_dispatch *clone, int cleanup) +{ + HRESULT hr; + + obj->typelib = clone->typelib; + obj->i.dispatch = clone->i.dispatch; + obj->i.typeinfo = clone->i.typeinfo; + + if(cleanup) { + obj->i.dispatch = NULL; + obj->i.typeinfo = NULL; + obj->typelib = FALSE; + } else { + hr = obj->i.dispatch->lpVtbl->AddRef(obj->i.dispatch); + } + + return hr; +} + PHPAPI char *php_COM_error_message(HRESULT hr) { - char *pMsgBuf; + void *pMsgBuf; if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &pMsgBuf, 0, NULL)) { char error_string[] = "No description available"; - pMsgBuf = (char *) LocalAlloc(LMEM_FIXED, sizeof(error_string)); + pMsgBuf = LocalAlloc(LMEM_FIXED, sizeof(error_string)); memcpy(pMsgBuf, error_string, sizeof(error_string)); } return pMsgBuf; } -static char *php_string_from_clsid(const CLSID clsid) +static char *php_string_from_clsid(const CLSID *clsid) { LPOLESTR ole_clsid; char *clsid_str; - StringFromCLSID(&clsid, &ole_clsid); + StringFromCLSID(clsid, &ole_clsid); clsid_str = php_OLECHAR_to_char(ole_clsid, NULL, 0, codepage); LocalFree(ole_clsid); @@ -130,9 +187,9 @@ static void php_idispatch_destructor(zend_rsrc_list_entry *rsrc) { - IDispatch *i_dispatch = (IDispatch *)rsrc->ptr; - - i_dispatch->lpVtbl->Release(i_dispatch); + i_dispatch *obj = (i_dispatch *)rsrc->ptr; + php_COM_release(obj); + efree(obj); } static PHP_INI_MH(OnTypelibFileChange) @@ -199,12 +256,12 @@ PHP_INI_BEGIN() - PHP_INI_ENTRY1_EX("allow_dcom", "0",PHP_INI_SYSTEM, NULL, NULL, php_ini_boolean_displayer_cb) - PHP_INI_ENTRY1("typelib_file", NULL,
[PHP-CVS] cvs: php4(PHP_4_0_5) / php.ini-dist php.ini-optimized
phanto Sun Apr 22 04:58:49 2001 EDT Modified files: (Branch: PHP_4_0_5) /php4 php.ini-dist php.ini-optimized Log: merged [com] section from main branch Index: php4/php.ini-dist diff -u php4/php.ini-dist:1.73.2.1 php4/php.ini-dist:1.73.2.2 --- php4/php.ini-dist:1.73.2.1 Thu Apr 5 19:09:43 2001 +++ php4/php.ini-dist Sun Apr 22 04:58:49 2001 @@ -1,5 +1,5 @@ [PHP] -; $Id: php.ini-dist,v 1.73.2.1 2001/04/06 02:09:43 sniper Exp $ +; $Id: php.ini-dist,v 1.73.2.2 2001/04/22 11:58:49 phanto Exp $ ;;; ; About this file ; @@ -766,3 +766,10 @@ [Sockets] ; Use the system read() function instead of the php_read() wrapper. sockets.use_system_read = On + +[com] +; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs +;com.typelib_file = + +; allow Distributed-COM calls +;com.allow_dcom = true Index: php4/php.ini-optimized diff -u php4/php.ini-optimized:1.33.2.1 php4/php.ini-optimized:1.33.2.2 --- php4/php.ini-optimized:1.33.2.1 Thu Apr 5 19:09:43 2001 +++ php4/php.ini-optimized Sun Apr 22 04:58:49 2001 @@ -500,6 +500,10 @@ [Sockets] sockets.use_system_read= Off ; Use the system read() function instead of ; the php_read() wrapper. +[com] +;com.typelib_file =; path to a file containing GUIDs, +IIDs or filenames of files with TypeLibs +;com.allow_dcom= true; allow Distributed-COM calls + ; Local Variables: ; tab-width: 4 ; End: -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP] AW: AW: [PHP-CVS] cvs: php4 /ext/dotnet dotnet.cpp
hi, here is a patched version of php4.0.5 with the fixed com extension. http://celery.nme.at/php-4.0.5.zip regards harald -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP] RE: Current status of things
> Yeah. Now that I understand more about COM and IDispatch > things are going smoothly. > Question: how do I close a connection to the COM object? in general you simply call ->release() on the component. if you call release() as often as addref() (note that addref() is called implicitly on instanciation) the component should be closed by windows. windows 2k can also pool instances of components (i don't know if this is the case for dcom), so if you release an instance windows will still keep it alive and assign it to the next process that requests it. in php references are counted internally and each php-thread calls the components addref() only once, regardless how often you call $obj->addref(); so all references will be released when the script terminates (this should prevent user errors) so a component gets closed when the script shuts down (beside the underlying instance pooling) so you don't need to close the connection by hand. if you have to close components in a specified order or if script execution takes very long you can simply call $obj->release(); $obj = null; // note that $obj = null; alone wouldn't close the connection immediately, because the garbage collector // runs very seldom. most of the time $obj would get released on script shutdown. harald. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com COM.cpp conversion.c conversion.h php_typedef_VARIANT.h typedef_VARIANT.c
phanto Sat Jan 27 19:24:50 2001 EDT Added files: /php4/ext/com COM.cpp conversion.c conversion.h php_typedef_VARIANT.h typedef_VARIANT.c Log: fixed unicodeconversion and parameter passing bugs in com and dotnet modules Index: php4/ext/com/COM.cpp +++ php4/ext/com/COM.cpp /* +--+ | PHP version 4.0 | +--+ | Copyright (c) 1997, 1998, 1999, 2000 The PHP Group | +--+ | This source file is subject to version 2.02 of the PHP license, | | that is bundled with this package in the file LICENSE, and is| | available at through the world-wide-web at | | http://www.php.net/license/2_02.txt. | | If you did not receive a copy of the PHP license and are unable to | | obtain it through the world-wide-web, please send a note to | | [EMAIL PROTECTED] so we can mail you a copy immediately. | +--+ | Author: Zeev Suraski <[EMAIL PROTECTED]> | | Harald Radi <[EMAIL PROTECTED]> +--+ */ /* * This module implements support for COM components that support the IDispatch * interface. Both local (COM) and remote (DCOM) components can be accessed. * * Type libraries can be loaded (in order for PHP to recognize automation constants) * by specifying a typelib_file in the PHP .ini file. That file should contain * paths to type libraries, one in every line. By default, constants are registered * as case-sensitive. If you want them to be defined as case-insensitive, add * #case_insensitive or #cis at the end of the type library path. * * This is also the first module to demonstrate Zend's OO syntax overloading * capabilities. CORBA coders are invited to write a CORBA module as well! * * Zeev */ /* * 28.12.2000 * unicode conversion fixed by Harald Radi <[EMAIL PROTECTED]> * * now all these strange '?'s should be disapeared */ /* * 28.1.2001 * VARIANT datatype and pass_by_reference support */ #ifdef PHP_WIN32 #define _WIN32_DCOM #ifdef CP_THREAD_ACP #define PHP_COM_CODEPAGE CP_THREAD_ACP #else #define PHP_COM_CODEPAGE CP_ACP #endif #include #include extern "C" { #include "php.h" #include "php_ini.h" } #include "conversion.h" #include "php_COM.h" #include "unknwn.h" static int le_idispatch; static zend_class_entry com_class_entry; function_entry COM_functions[] = { PHP_FE(COM_load, NULL) PHP_FE(COM_invoke, NULL) PHP_FE(com_propget, NULL) PHP_FE(com_propput, NULL) PHP_FALIAS(com_get, com_propget,NULL) PHP_FALIAS(com_propset, com_propput,NULL) PHP_FALIAS(com_set, com_propput,NULL) {NULL, NULL, NULL} }; __declspec(dllexport) int php_COM_get_le_idispatch() { return le_idispatch; } static PHP_MINFO_FUNCTION(COM) { DISPLAY_INI_ENTRIES(); } static int php_COM_load_typelib(char *typelib_name, int mode); __declspec(dllexport) char *php_COM_error_message(HRESULT hr) { char *pMsgBuf; if (!FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, hr, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &pMsgBuf, 0, NULL)) { char error_string[] = "No description available"; pMsgBuf = (char *) LocalAlloc(LMEM_FIXED, sizeof(error_string)); memcpy(pMsgBuf, error_string, sizeof(error_string)); } return pMsgBuf; } static char *php_string_from_clsid(const CLSID clsid) { LPOLESTR ole_clsid; char *clsid_str; StringFromCLSID(clsid, &ole_clsid); clsid_str = php_OLECHAR_to_char(ole_clsid, NULL, 0); LocalFree(ole_clsid); return clsid_str; } static void php_idispatch_destructor(zend_rsrc_list_entry *rsrc) { IDispatch *i_dispatch = (IDispatch *)rsrc->ptr; i_dispatch->Release(); } static PHP_INI_MH(OnTypelibFileChange) { FILE *typelib_file; char *typelib_name_buffer; char *strtok_buf = NULL; #if SUPPORT_INTERACTIVE
[PHP-CVS] cvs: php4 /main internal_functions_win32.c
phanto Sat Jan 27 19:40:15 2001 EDT Modified files: /php4/main internal_functions_win32.c Log: fixed unicodeconversion and parameter passing bugs in com and dotnet modules Index: php4/main/internal_functions_win32.c diff -u php4/main/internal_functions_win32.c:1.34 php4/main/internal_functions_win32.c:1.35 --- php4/main/internal_functions_win32.c:1.34 Sun Oct 8 04:45:18 2000 +++ php4/main/internal_functions_win32.cSat Jan 27 19:40:15 2001 @@ -18,7 +18,7 @@ */ -/* $Id: internal_functions_win32.c,v 1.34 2000/10/08 11:45:18 dbeu Exp $ */ +/* $Id: internal_functions_win32.c,v 1.35 2001/01/28 03:40:15 phanto Exp $ */ #include "php.h" @@ -51,6 +51,7 @@ #include "ext/standard/php_assert.h" #include "ext/calendar/php_calendar.h" #include "ext/com/php_COM.h" +#include "ext/com/php_typedef_VARIANT.h" #include "ext/ftp/php_ftp.h" #include "ext/standard/reg.h" #include "ext/pcre/php_pcre.h" @@ -70,6 +71,7 @@ #endif phpext_calendar_ptr, COM_module_ptr, + VARIANT_module_ptr, phpext_ftp_ptr, phpext_mysql_ptr, phpext_odbc_ptr, -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /win32 php4dllts.dsp
phanto Sat Jan 27 19:40:28 2001 EDT Modified files: /php4/win32 php4dllts.dsp Log: fixed unicodeconversion and parameter passing bugs in com and dotnet modules Index: php4/win32/php4dllts.dsp diff -u php4/win32/php4dllts.dsp:1.28 php4/win32/php4dllts.dsp:1.29 --- php4/win32/php4dllts.dsp:1.28 Fri Jan 5 10:06:24 2001 +++ php4/win32/php4dllts.dspSat Jan 27 19:40:28 2001 @@ -1839,10 +1839,14 @@ # PROP Default_Filter "" # Begin Source File -SOURCE=..\ext\com\COM.c +SOURCE=..\ext\com\COM.cpp # End Source File # Begin Source File +SOURCE=..\ext\com\conversion.c +# End Source File +# Begin Source File + SOURCE=..\win32\pwd.c # End Source File # Begin Source File @@ -1863,6 +1867,10 @@ # End Source File # Begin Source File +SOURCE=..\ext\com\typedef_VARIANT.c +# End Source File +# Begin Source File + SOURCE=..\win32\wfile.c # End Source File # Begin Source File @@ -1883,6 +1891,10 @@ # PROP Default_Filter "" # Begin Source File +SOURCE=..\ext\com\conversion.h +# End Source File +# Begin Source File + SOURCE=..\win32\grp.h # End Source File # Begin Source File @@ -1896,6 +1908,10 @@ # Begin Source File SOURCE=..\win32\php_registry.h +# End Source File +# Begin Source File + +SOURCE=..\ext\com\php_typedef_VARIANT.h # End Source File # Begin Source File -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/dotnet dotnet.cpp
phanto Sat Jan 27 19:41:22 2001 EDT Modified files: /php4/ext/dotnetdotnet.cpp Log: fixed unicodeconversion and parameter passing bugs in com and dotnet modules Index: php4/ext/dotnet/dotnet.cpp diff -u php4/ext/dotnet/dotnet.cpp:1.1 php4/ext/dotnet/dotnet.cpp:1.2 --- php4/ext/dotnet/dotnet.cpp:1.1 Sat Aug 26 05:53:13 2000 +++ php4/ext/dotnet/dotnet.cpp Sat Jan 27 19:41:22 2001 @@ -21,6 +21,13 @@ * This module implements support for Microsoft .Net components. */ +/* + * 28.1.2001 + * use external unicode conversion functions + * + * harald radi <[EMAIL PROTECTED]> + */ + #ifdef PHP_WIN32 #include @@ -30,22 +37,17 @@ extern "C" { #include "php.h" #include "php_ini.h" - -pval php_COM_get_property_handler(zend_property_reference *property_reference); +OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen); +} +pval php_COM_get_property_handler(zend_property_reference *property_reference); int php_COM_set_property_handler(zend_property_reference *property_reference, pval *value); - char *php_COM_error_message(HRESULT hr); - void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference); - int php_COM_get_le_idispatch(); -} - - -#include +#include "../com/conversion.h" #include "Mscoree.h" #include "mscorlib.h" @@ -56,19 +58,6 @@ static zend_class_entry dotnet_class_entry; -static OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen) -{ - OLECHAR *unicode_str = (OLECHAR *) emalloc(sizeof(OLECHAR)*(strlen+1)); - OLECHAR *unicode_ptr = unicode_str; - - while (*C_str) { - *unicode_ptr++ = (unsigned short) *C_str++; - } - *unicode_ptr = 0; - - return unicode_str; -} - HRESULT dotnet_init() { HRESULT hr; @@ -156,7 +145,6 @@ /* }}} */ - void php_DOTNET_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference) { pval *object = property_reference->object; @@ -182,7 +170,6 @@ } } - void php_register_DOTNET_class() { INIT_OVERLOADED_CLASS_ENTRY(dotnet_class_entry, "DOTNET", NULL, @@ -236,8 +223,5 @@ extern "C" { ZEND_GET_MODULE(dotnet) } - -void php_register_DOTNET_class(); - #endif -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com COM.c php_COM.h
phanto Sat Jan 27 19:41:43 2001 EDT Removed files: /php4/ext/com COM.c Modified files: /php4/ext/com php_COM.h Log: fixed unicodeconversion and parameter passing bugs in com and dotnet modules Index: php4/ext/com/php_COM.h diff -u php4/ext/com/php_COM.h:1.2 php4/ext/com/php_COM.h:1.3 --- php4/ext/com/php_COM.h:1.2 Sun Jul 2 16:46:38 2000 +++ php4/ext/com/php_COM.h Sat Jan 27 19:41:43 2001 @@ -3,6 +3,10 @@ #if WIN32|WINNT +#ifdef __cplusplus +extern "C" { +#endif + extern PHP_MINIT_FUNCTION(COM); extern PHP_MSHUTDOWN_FUNCTION(COM); PHP_FUNCTION(COM_load); @@ -11,6 +15,11 @@ PHP_FUNCTION(com_propget); PHP_FUNCTION(com_propput); extern zend_module_entry COM_module_entry; + +#ifdef __cplusplus +} +#endif + #define COM_module_ptr &COM_module_entry #else -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com COM.cpp conversion.c conversion.h php_COM.h php_typedef_VARIANT.h typedef_VARIANT.c
phanto Mon Jan 29 13:54:10 2001 EDT Modified files: /php4/ext/com typedef_VARIANT.c php_typedef_VARIANT.h php_COM.h conversion.h conversion.c COM.cpp Log: use *_EXTERN_C() and PHP_WIN32 Index: php4/ext/com/typedef_VARIANT.c diff -u php4/ext/com/typedef_VARIANT.c:1.1 php4/ext/com/typedef_VARIANT.c:1.2 --- php4/ext/com/typedef_VARIANT.c:1.1 Sat Jan 27 19:24:50 2001 +++ php4/ext/com/typedef_VARIANT.c Mon Jan 29 13:54:09 2001 @@ -410,4 +410,4 @@ zend_register_internal_class(&VARIANT_class_entry); } -#endif +#endif /* PHP_WIN32 */ Index: php4/ext/com/php_typedef_VARIANT.h diff -u php4/ext/com/php_typedef_VARIANT.h:1.1 php4/ext/com/php_typedef_VARIANT.h:1.2 --- php4/ext/com/php_typedef_VARIANT.h:1.1 Sat Jan 27 19:24:50 2001 +++ php4/ext/com/php_typedef_VARIANT.h Mon Jan 29 13:54:09 2001 @@ -1,19 +1,20 @@ #ifndef PHP_TYPEDEF_VARIANT_H #define PHP_TYPEDEF_VARIANT_H -#if WIN32|WINNT +#if PHP_WIN32 extern PHP_MINIT_FUNCTION(VARIANT); extern PHP_MSHUTDOWN_FUNCTION(VARIANT); extern zend_module_entry VARIANT_module_entry; + #define VARIANT_module_ptr &VARIANT_module_entry #else #define VARIANT_module_ptr NULL -#endif /* Win32|WINNT */ +#endif /* PHP_WIN32 */ #define phpext_VARIANT_ptr VARIANT_module_ptr Index: php4/ext/com/php_COM.h diff -u php4/ext/com/php_COM.h:1.3 php4/ext/com/php_COM.h:1.4 --- php4/ext/com/php_COM.h:1.3 Sat Jan 27 19:41:43 2001 +++ php4/ext/com/php_COM.h Mon Jan 29 13:54:09 2001 @@ -1,23 +1,27 @@ #ifndef PHP_COM_H #define PHP_COM_H -#if WIN32|WINNT +#if PHP_WIN32 -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() extern PHP_MINIT_FUNCTION(COM); extern PHP_MSHUTDOWN_FUNCTION(COM); -PHP_FUNCTION(COM_load); -PHP_FUNCTION(COM_invoke); -PHP_FUNCTION(com_propget); -PHP_FUNCTION(com_propput); +extern int php_COM_get_le_idispatch(); + extern zend_module_entry COM_module_entry; +extern zend_class_entry com_class_entry; + +END_EXTERN_C() #ifdef __cplusplus -} + +extern pval php_COM_get_property_handler(zend_property_reference *property_reference); +extern int php_COM_set_property_handler(zend_property_reference *property_reference, +pval *value); +extern char *php_COM_error_message(HRESULT hr); +extern void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, +zend_property_reference *property_reference); + #endif #define COM_module_ptr &COM_module_entry @@ -25,9 +29,7 @@ #else #define COM_module_ptr NULL - -#endif /* Win32|WINNT */ -#define phpext_COM_ptr COM_module_ptr +#endif /* PHP_WIN32 */ #endif /* PHP_COM_H */ Index: php4/ext/com/conversion.h diff -u php4/ext/com/conversion.h:1.1 php4/ext/com/conversion.h:1.2 --- php4/ext/com/conversion.h:1.1 Sat Jan 27 19:24:50 2001 +++ php4/ext/com/conversion.h Mon Jan 29 13:54:09 2001 @@ -1,18 +1,14 @@ #ifndef CONVERSION_H #define CONVERSION_H -#ifdef __cplusplus -extern "C" { -#endif +BEGIN_EXTERN_C() -void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg); -void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type); -void php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent); -OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen); -char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent); +extern void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg); +extern void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type); +extern void php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent); +extern OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen); +extern char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int +persistent); -#ifdef __cplusplus -} -#endif +END_EXTERN_C() #endif Index: php4/ext/com/conversion.c diff -u php4/ext/com/conversion.c:1.1 php4/ext/com/conversion.c:1.2 --- php4/ext/com/conversion.c:1.1 Sat Jan 27 19:24:50 2001 +++ php4/ext/com/conversion.c Mon Jan 29 13:54:09 2001 @@ -1,4 +1,7 @@ +#ifdef PHP_WIN32 + #include "php.h" +#include "php_COM.h" #ifdef CP_THREAD_ACP #define PHP_UNICODE_CODEPAGE CP_THREAD_ACP @@ -6,16 +9,17 @@ #define PHP_UNICODE_CODEPAGE CP_ACP #endif +// prototypes -__declspec(dllexport) void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg); -__declspec(dllexport) void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type); -__declspec(dllexport) void php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent); -__declspec(dllexport) OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen); -__declspec(dllexport) char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent); +PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg); +PHPAPI void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type); +PHPAPI void php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent); +PHPAPI OLECHAR *php_char_to_OLECH
[PHP-CVS] cvs: php4 /ext/dotnet dotnet.cpp
phanto Mon Jan 29 13:54:53 2001 EDT Modified files: /php4/ext/dotnetdotnet.cpp Log: use *_EXTERN_C() and PHP_WIN32 Index: php4/ext/dotnet/dotnet.cpp diff -u php4/ext/dotnet/dotnet.cpp:1.2 php4/ext/dotnet/dotnet.cpp:1.3 --- php4/ext/dotnet/dotnet.cpp:1.2 Sat Jan 27 19:41:22 2001 +++ php4/ext/dotnet/dotnet.cpp Mon Jan 29 13:54:45 2001 @@ -34,20 +34,15 @@ #include #include -extern "C" { +extern "C" { /* this should be included in the includes itself !! */ + #include "php.h" #include "php_ini.h" -OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen); } -pval php_COM_get_property_handler(zend_property_reference *property_reference); -int php_COM_set_property_handler(zend_property_reference *property_reference, pval *value); -char *php_COM_error_message(HRESULT hr); -void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference); -int php_COM_get_le_idispatch(); - #include "../com/conversion.h" +#include "../com/php_COM.h" #include "Mscoree.h" #include "mscorlib.h" @@ -220,8 +215,8 @@ "dotnet", DOTNET_functions, PHP_MINIT(DOTNET), PHP_MSHUTDOWN(DOTNET), NULL, NULL, PHP_MINFO(DOTNET), STANDARD_MODULE_PROPERTIES }; -extern "C" { - ZEND_GET_MODULE(dotnet) -} +BEGIN_EXTERN_C() +ZEND_GET_MODULE(dotnet) +END_EXTERN_C() #endif -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com conversion.c typedef_VARIANT.c
phanto Mon Jan 29 18:09:38 2001 EDT Modified files: /php4/ext/com typedef_VARIANT.c conversion.c Log: pass another com object as parameter Index: php4/ext/com/typedef_VARIANT.c diff -u php4/ext/com/typedef_VARIANT.c:1.2 php4/ext/com/typedef_VARIANT.c:1.3 --- php4/ext/com/typedef_VARIANT.c:1.2 Mon Jan 29 13:54:09 2001 +++ php4/ext/com/typedef_VARIANT.c Mon Jan 29 18:09:38 2001 @@ -145,7 +145,7 @@ break; case OE_IS_OBJECT: - if(strstr(overloaded_property->element.value.str.val, "value")) + if(!strcmp(overloaded_property->element.value.str.val, +"value")) php_variant_to_pval(var_arg, &result, 0); else { @@ -192,197 +192,197 @@ type.type = IS_STRING; - if(strstr(arg_property->value.str.val, "bVal")) + if(!strcmp(arg_property->value.str.val, "bVal")) { type.value.str.val = "VT_UI1"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "iVal")) + else if(!strcmp(arg_property->value.str.val, "iVal")) { type.value.str.val = "VT_I2"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "lVal")) + else if(!strcmp(arg_property->value.str.val, "lVal")) { type.value.str.val = "VT_I4"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "fltVal")) + else if(!strcmp(arg_property->value.str.val, "fltVal")) { type.value.str.val = "VT_R4"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "dblVal")) + else if(!strcmp(arg_property->value.str.val, "dblVal")) { type.value.str.val = "VT_R8"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "boolVal")) + else if(!strcmp(arg_property->value.str.val, "boolVal")) { type.value.str.val = "VT_BOOL"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "scode")) + else if(!strcmp(arg_property->value.str.val, "scode")) { type.value.str.val = "VT_ERROR"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "cyVal")) + else if(!strcmp(arg_property->value.str.val, "cyVal")) { type.value.str.val = "VT_CY"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "date")) + else if(!strcmp(arg_property->value.str.val, "date")) { type.value.str.val = "VT_DATE"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "bstrVal")) + else if(!strcmp(arg_property->value.str.val, "bstrVal")) { type.value.str.val = "VT_BSTR"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "pdecVal")) + else if(!strcmp(arg_property->value.str.val, "pdecVal")) { type.value.str.val = "VT_DECIMAL|VT_BYREF"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "punkVal")) + else if(!strcmp(arg_property->value.str.val, "punkVal")) { type.value.str.val = "VT_UNKNOWN"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "pdispVal")) + else if(!strcmp(arg_property->value.str.val, "pdispVal")) { type.value.str.val = "VT_DISPATCH"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "parray")) + else if(!strcmp(arg_property->value.str.val, "parray")) { type.value.str.val = "VT_ARRAY"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "pbVal")) + else if(!strcmp(arg_property->value.str.val, "pbVal")) { type.value.str.val = "VT_UI1|VT_BYREF"; php_pval_to_variant_ex(value, var_arg, &type); } - else if(strstr(arg_property->value.str.val, "piVal")) + else if(!strcmp(arg_property->value.str.val, "piVal")) { type.value.str.val = "VT_I2|VT
[PHP-CVS] cvs: php4 /ext/dotnet .cvsignore
phanto Tue Jan 30 04:59:59 2001 EDT Added files: /php4/ext/dotnet.cvsignore Log: adding .cvsignore Index: php4/ext/dotnet/.cvsignore +++ php4/ext/dotnet/.cvsignore *.plg Release Release_inline Debug Release_TS Release_TSDbg Release_TS_inline Debug_TS -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /win32 .cvsignore
phanto Tue Jan 30 05:00:39 2001 EDT Modified files: /php4/win32 .cvsignore Log: fixing .cvsignore Index: php4/win32/.cvsignore diff -u php4/win32/.cvsignore:1.1 php4/win32/.cvsignore:1.2 --- php4/win32/.cvsignore:1.1 Sat Aug 19 12:08:32 2000 +++ php4/win32/.cvsignore Tue Jan 30 05:00:36 2001 @@ -5,5 +5,6 @@ Release_inline Debug Release_TS +Release_TSDbg Release_TS_inline Debug_TS -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com conversion.c
phanto Wed Jan 31 01:30:13 2001 EDT Modified files: /php4/ext/com conversion.c Log: added currency, date, IUnknown and NULL datatypes Index: php4/ext/com/conversion.c diff -u php4/ext/com/conversion.c:1.3 php4/ext/com/conversion.c:1.4 --- php4/ext/com/conversion.c:1.3 Mon Jan 29 18:09:38 2001 +++ php4/ext/com/conversion.c Wed Jan 31 01:30:12 2001 @@ -2,6 +2,7 @@ #include "php.h" #include "php_COM.h" +#include "unknwn.h" #ifdef CP_THREAD_ACP #define PHP_UNICODE_CODEPAGE CP_THREAD_ACP @@ -62,6 +63,8 @@ var_arg->pdispVal = i_dispatch; } } + else + var_arg->vt = VT_DISPATCH; break; case IS_RESOURCE: @@ -140,7 +143,7 @@ // is safearray if(!strcmp(pval_type->value.str.val, "VT_ARRAY")) - var_arg->vt |= VT_ARRAY; + var_arg->vt |= VT_ARRAY;// have to read msdn first // by reference if(!strcmp(pval_type->value.str.val, "VT_BYREF")) @@ -183,9 +186,27 @@ var_arg->scode = pval_arg->value.lval; break; - /* case VT_CY: not yet implemented, no idea what this is */ + case VT_CY: + convert_to_double_ex(&pval_arg); + VarCyFromR8(pval_arg->value.dval, &(var_arg->cyVal)); + break; + + case VT_DATE: + { + SYSTEMTIME wintime; + struct tm *phptime; + + phptime = gmtime(&(pval_arg->value.lval)); + + wintime.wYear = phptime->tm_year + 1900; + wintime.wMonth = phptime->tm_mon + 1; + wintime.wDay = phptime->tm_mday; + wintime.wHour = phptime->tm_hour; + wintime.wMinute = phptime->tm_min; + wintime.wSecond = phptime->tm_sec; - /* case DATE: not yet implemented, strange format */ + SystemTimeToVariantTime(&wintime, &(var_arg->date)); + } case VT_BSTR: convert_to_string_ex(&pval_arg); @@ -194,13 +215,43 @@ efree(unicode_str); break; - /* case VT_DECIMAL|VT_BYREF:not yet implemented, solution for 96-bit numbers needed - - perhaps use a string */ + case VT_DECIMAL: + convert_to_string_ex(&pval_arg); + unicode_str = +php_char_to_OLECHAR(pval_arg->value.str.val, pval_arg->value.str.len); + VarDecFromStr(unicode_str, LOCALE_SYSTEM_DEFAULT, 0, +&(var_arg->decVal)); + break; + + case VT_DECIMAL|VT_BYREF: + convert_to_string_ex(&pval_arg); + unicode_str = +php_char_to_OLECHAR(pval_arg->value.str.val, pval_arg->value.str.len); + VarDecFromStr(unicode_str, LOCALE_SYSTEM_DEFAULT, 0, +var_arg->pdecVal); + break; + + case VT_UNKNOWN: + php_pval_to_variant(pval_arg, var_arg); + if(var_arg->vt != VT_DISPATCH) + var_arg->vt = VT_EMPTY; + else + { + HRESULT hr; - /* case VT_UNKNOWN: not yet implemented, get IUnknown from IDispatch ? */ + hr = +var_arg->pdispVal->lpVtbl->QueryInterface(var_arg->pdispVal, &IID_IUnknown, +&(var_arg->punkVal)); - /* case VT_DISPATCH:not yet implemented, pass IDispatch from another COM Object - - should be no problem */ + if (FAILED(hr)) + { + php_error(E_WARNING,"can't query +IUnknown"); + var_arg->vt = VT_EMPTY; + } +
[PHP-CVS] cvs: php4 /ext/com typedef_VARIANT.c
phanto Fri Feb 2 07:01:48 2001 EDT Modified files: /php4/ext/com typedef_VARIANT.c Log: correct phpinfo() output Index: php4/ext/com/typedef_VARIANT.c diff -u php4/ext/com/typedef_VARIANT.c:1.3 php4/ext/com/typedef_VARIANT.c:1.4 --- php4/ext/com/typedef_VARIANT.c:1.3 Mon Jan 29 18:09:38 2001 +++ php4/ext/com/typedef_VARIANT.c Fri Feb 2 07:01:48 2001 @@ -50,7 +50,9 @@ static PHP_MINFO_FUNCTION(VARIANT) { - DISPLAY_INI_ENTRIES(); + php_info_print_table_start(); + php_info_print_table_row(2, "VARIANT support", "enabled"); + php_info_print_table_end(); } zend_module_entry VARIANT_module_entry = { -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/dotnet dotnet.cpp
phanto Fri Feb 2 07:02:05 2001 EDT Modified files: /php4/ext/dotnetdotnet.cpp Log: correct phpinfo() output Index: php4/ext/dotnet/dotnet.cpp diff -u php4/ext/dotnet/dotnet.cpp:1.3 php4/ext/dotnet/dotnet.cpp:1.4 --- php4/ext/dotnet/dotnet.cpp:1.3 Mon Jan 29 13:54:45 2001 +++ php4/ext/dotnet/dotnet.cpp Fri Feb 2 07:02:04 2001 @@ -37,7 +37,7 @@ extern "C" { /* this should be included in the includes itself !! */ #include "php.h" -#include "php_ini.h" +#include "ext/standard/info.h" } @@ -179,15 +179,13 @@ {NULL, NULL, NULL} }; - static PHP_MINFO_FUNCTION(DOTNET) { - DISPLAY_INI_ENTRIES(); + php_info_print_table_start(); + php_info_print_table_row(2, "DOTNET support", "enabled"); + php_info_print_table_end(); } -PHP_INI_BEGIN() -PHP_INI_END() - PHP_MINIT_FUNCTION(DOTNET) { @@ -197,7 +195,6 @@ if (FAILED(hr)) return hr; php_register_DOTNET_class(); - REGISTER_INI_ENTRIES(); return SUCCESS; } @@ -206,7 +203,6 @@ { dotnet_term(); CoUninitialize(); - UNREGISTER_INI_ENTRIES(); return SUCCESS; } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/iisfunc .cvsignore setup.c
phanto Fri Feb 2 07:03:32 2001 EDT Modified files: /php4/ext/iisfunc setup.c .cvsignore Log: correct phpinfo() output Index: php4/ext/iisfunc/setup.c diff -u php4/ext/iisfunc/setup.c:1.1 php4/ext/iisfunc/setup.c:1.2 --- php4/ext/iisfunc/setup.c:1.1Sun Oct 22 16:06:05 2000 +++ php4/ext/iisfunc/setup.cFri Feb 2 07:03:32 2001 @@ -15,7 +15,7 @@ | Authors: Frank M. Kromann <[EMAIL PROTECTED]> | +--+ */ -/* $Id: setup.c,v 1.1 2000/10/22 23:06:05 fmk Exp $ */ +/* $Id: setup.c,v 1.2 2001/02/02 15:03:32 phanto Exp $ */ #ifdef COMPILE_DL_IISFUNC #define HAVE_IISFUNC 1 @@ -93,7 +93,7 @@ PHP_MINFO_FUNCTION(iisfunc) { php_info_print_table_start(); - php_info_print_table_header(2, "IIS Admin Functions support", "enabled"); + php_info_print_table_row(2, "IIS Admin Functions support", "enabled"); php_info_print_table_end(); } Index: php4/ext/iisfunc/.cvsignore diff -u php4/ext/iisfunc/.cvsignore:1.2 php4/ext/iisfunc/.cvsignore:1.3 --- php4/ext/iisfunc/.cvsignore:1.2 Tue Nov 14 06:32:58 2000 +++ php4/ext/iisfunc/.cvsignore Fri Feb 2 07:03:32 2001 @@ -3,9 +3,9 @@ *.la .libs *.plg -Release -Release_TS -Debug -Debug_TS +IISfunc_Release +IISfunc_Release_TS +IISfunc_Debug +IISfunc_Debug_TS .deps -libs.mk +libs.mk \ No newline at end of file -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/dotnet dotnet.cpp
phanto Fri Feb 2 10:11:39 2001 EDT Modified files: /php4/ext/dotnetdotnet.cpp Log: correct phpinfo() output Index: php4/ext/dotnet/dotnet.cpp diff -u php4/ext/dotnet/dotnet.cpp:1.4 php4/ext/dotnet/dotnet.cpp:1.5 --- php4/ext/dotnet/dotnet.cpp:1.4 Fri Feb 2 07:02:04 2001 +++ php4/ext/dotnet/dotnet.cpp Fri Feb 2 10:11:38 2001 @@ -182,7 +182,7 @@ static PHP_MINFO_FUNCTION(DOTNET) { php_info_print_table_start(); - php_info_print_table_row(2, "DOTNET support", "enabled"); + php_info_print_table_row(2, ".NET support", "enabled"); php_info_print_table_end(); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com conversion.c
phanto Mon Feb 5 10:36:53 2001 EDT Modified files: /php4/ext/com conversion.c Log: fixes the problem that php.exe compiled on win2k platform won't run on any other Index: php4/ext/com/conversion.c diff -u php4/ext/com/conversion.c:1.4 php4/ext/com/conversion.c:1.5 --- php4/ext/com/conversion.c:1.4 Wed Jan 31 01:30:12 2001 +++ php4/ext/com/conversion.c Mon Feb 5 10:36:53 2001 @@ -4,17 +4,14 @@ #include "php_COM.h" #include "unknwn.h" -#ifdef CP_THREAD_ACP -#define PHP_UNICODE_CODEPAGE CP_THREAD_ACP -#else +// #define PHP_UNICODE_CODEPAGE CP_THREAD_ACP // for win2k #define PHP_UNICODE_CODEPAGE CP_ACP -#endif // prototypes PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg); PHPAPI void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type); -PHPAPI void php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent); +PHPAPI void php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent); PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen); PHPAPI char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent); @@ -22,606 +19,606 @@ PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg) { - OLECHAR *unicode_str; + OLECHAR *unicode_str; - switch (pval_arg->type) - { - case IS_NULL: - var_arg->vt = VT_EMPTY; - break; - - case IS_BOOL: - var_arg->vt = VT_BOOL; - var_arg->boolVal = (short)pval_arg->value.lval; - break; - - case IS_OBJECT: - if(!strcmp(pval_arg->value.obj.ce->name, "VARIANT")) - { - int type; - pval **var_handle; - - /* fetch the VARIANT structure */ - zend_hash_index_find(pval_arg->value.obj.properties, 0, (void **) &var_handle); - var_arg->pvarVal = (VARIANT FAR*) zend_list_find((*var_handle)->value.lval, &type); - var_arg->vt = VT_VARIANT|VT_BYREF; - } - else if(!strcmp(pval_arg->value.obj.ce->name, "COM")) - { - pval **idispatch_handle; - IDispatch *i_dispatch; - int type; - - /* fetch the IDispatch interface */ - zend_hash_index_find(pval_arg->value.obj.properties, 0, (void **) &idispatch_handle); - i_dispatch = (IDispatch *)zend_list_find((*idispatch_handle)->value.lval, &type); - if (!i_dispatch || (type != php_COM_get_le_idispatch())) - var_arg->vt = VT_EMPTY; - else - { - var_arg->vt = VT_DISPATCH; - var_arg->pdispVal = i_dispatch; - } - } - else - var_arg->vt = VT_DISPATCH; - break; - - case IS_RESOURCE: - case IS_CONSTANT: - case IS_CONSTANT_ARRAY: - case IS_ARRAY: - var_arg->vt = VT_EMPTY; - break; - - case IS_LONG: - var_arg->vt = VT_I4;/* assuming 32-bit platform */ - var_arg->lVal = pval_arg->value.lval; - break; - - case IS_DOUBLE: - var_arg->vt = VT_R8;/* assuming 64-bit double precision */ - var_arg->dblVal = pval_arg->value.dval; - break; - - case IS_STRING: - var_arg->vt = VT_BSTR; - unicode_str = php_char_to_OLECHAR(pval_arg->value.str.val, pval_arg->value.str.len); - var_arg->bstrVal = SysAllocString(unicode_str); - efree(unicode_str); - } + switch (pval_arg->type) + { + case IS_NULL: + var_arg->vt = VT_EMPTY; + break; + + case IS_BOOL: + var_arg->vt = VT_BOOL; + var_arg->boolVal = (short)pval_arg->value.lval; + break; + + case IS_OBJECT: + if(!strcmp(pval_arg->value.obj.ce->name, "VARIANT")) + { +int type; +pval **var_handle; + +/* fetch the VARIANT structure */ +zend_hash_index_find(pval_arg->value.obj.properties, 0, (void **) +&var_handle); +var_arg->pvarVal = (VARIANT FAR*) +zend_list_find((*var_handle)-
[PHP-CVS] cvs: php4 /ext/com COM.cpp conversion.c conversion.h typedef_VARIANT.c
phanto Fri Feb 16 18:15:12 2001 EDT Modified files: /php4/ext/com typedef_VARIANT.c conversion.h conversion.c COM.cpp Log: multiple codepage support export global constants Index: php4/ext/com/typedef_VARIANT.c diff -u php4/ext/com/typedef_VARIANT.c:1.5 php4/ext/com/typedef_VARIANT.c:1.6 --- php4/ext/com/typedef_VARIANT.c:1.5 Mon Feb 5 13:59:16 2001 +++ php4/ext/com/typedef_VARIANT.c Fri Feb 16 18:15:12 2001 @@ -42,6 +42,7 @@ void php_register_VARIANT_class(); static int le_variant; +static int codepage; static zend_class_entry VARIANT_class_entry; @@ -67,6 +68,39 @@ { le_variant = zend_register_list_destructors_ex(php_variant_destructor, NULL, "VARIANT", module_number); + /* variant datatypes */ + REGISTER_LONG_CONSTANT("VT_NULL", VT_NULL, 0); + REGISTER_LONG_CONSTANT("VT_EMPTY", VT_EMPTY, 0); + REGISTER_LONG_CONSTANT("VT_UI1", VT_UI1, 0); + REGISTER_LONG_CONSTANT("VT_I2", VT_I2, 0); + REGISTER_LONG_CONSTANT("VT_R4", VT_R4, 0); + REGISTER_LONG_CONSTANT("VT_R8", VT_R8, 0); + REGISTER_LONG_CONSTANT("VT_BOOL", VT_BOOL, 0); + REGISTER_LONG_CONSTANT("VT_ERROR", VT_ERROR, 0); + REGISTER_LONG_CONSTANT("VT_CY", VT_CY, 0); + REGISTER_LONG_CONSTANT("VT_DATE", VT_CY, 0); + REGISTER_LONG_CONSTANT("VT_BSTR", VT_BSTR, 0); + REGISTER_LONG_CONSTANT("VT_DECIMAL", VT_DECIMAL, 0); + REGISTER_LONG_CONSTANT("VT_UNKNOWN", VT_UNKNOWN, 0); + REGISTER_LONG_CONSTANT("VT_DISPATCH", VT_DISPATCH, 0); + REGISTER_LONG_CONSTANT("VT_VARIANT", VT_VARIANT, 0); + REGISTER_LONG_CONSTANT("VT_I1", VT_I1, 0); + REGISTER_LONG_CONSTANT("VT_UI2", VT_UI2, 0); + REGISTER_LONG_CONSTANT("VT_UI4", VT_UI4, 0); + REGISTER_LONG_CONSTANT("VT_INT", VT_INT, 0); + REGISTER_LONG_CONSTANT("VT_UINT", VT_UINT, 0); + REGISTER_LONG_CONSTANT("VT_ARRAY", VT_ARRAY, 0); + REGISTER_LONG_CONSTANT("VT_BYREF", VT_BYREF, 0); + + /* codepages */ + REGISTER_LONG_CONSTANT("CP_ACP", CP_ACP, 0); + REGISTER_LONG_CONSTANT("CP_MACCP", CP_MACCP, 0); + REGISTER_LONG_CONSTANT("CP_OEMCP", CP_OEMCP, 0); + REGISTER_LONG_CONSTANT("CP_SYMBOL", CP_SYMBOL, 0); + REGISTER_LONG_CONSTANT("CP_THREAD_ACP", CP_THREAD_ACP, 0); + REGISTER_LONG_CONSTANT("CP_UTF7", CP_UTF7, 0); + REGISTER_LONG_CONSTANT("CP_UTF8", CP_UTF8, 0); + php_register_VARIANT_class(); return SUCCESS; } @@ -86,7 +120,7 @@ if ((zend_llist_count(property_reference->elements_list)==1) && !strcmp(function_name->element.value.str.val, "variant")) { /* constructor */ - pval *object_handle, *data, *type; + pval *object_handle, *data, *type, *code_page; pVar = emalloc(sizeof(VARIANT)); VariantInit(pVar); @@ -98,11 +132,19 @@ break; case 1: getParameters(ht, 1, &data); - php_pval_to_variant(data, pVar); + php_pval_to_variant(data, pVar, codepage); + codepage = CP_ACP; break; case 2: getParameters(ht, 2, &data, &type); - php_pval_to_variant_ex(data, pVar, type); + php_pval_to_variant_ex(data, pVar, type, codepage); + codepage = CP_ACP; + break; + case 3: + getParameters(ht, 3, &data, &type, &code_page); + php_pval_to_variant_ex(data, pVar, type, codepage); + convert_to_long(code_page); + codepage = code_page->value.lval; break; default: WRONG_PARAM_COUNT; @@ -152,7 +194,7 @@ case OE_IS_OBJECT: if(!strcmp(overloaded_property->element.value.str.val, "value")) - php_variant_to_pval(var_arg, &result, 0); + php_variant_to_pval(var_arg, &result, 0, +codepage); else { var_reset(&result); @@ -200,204 +242,168 @@ if(!strcmp(arg_property->value.str.val, "bVal")) { - type.value.str.val = "VT_UI1"; - php_pval_to_variant_ex(value, var_arg, &type); + type.value.lval = VT_UI1; } else if(!strcmp(arg_property->value.str.val, "iVal")) { - type.value.str.val = "VT_I2"; - php_pval_to_variant_ex(value, var_arg, &type); +
[PHP-CVS] cvs: php4 /ext/dotnet dotnet.cpp
phanto Fri Feb 16 18:16:28 2001 EDT Modified files: /php4/ext/dotnetdotnet.cpp Log: multiple codepage support export global constants Index: php4/ext/dotnet/dotnet.cpp diff -u php4/ext/dotnet/dotnet.cpp:1.5 php4/ext/dotnet/dotnet.cpp:1.6 --- php4/ext/dotnet/dotnet.cpp:1.5 Fri Feb 2 10:11:38 2001 +++ php4/ext/dotnet/dotnet.cpp Fri Feb 16 18:16:28 2001 @@ -52,6 +52,7 @@ static mscorlib::_AppDomain *pDomain; static zend_class_entry dotnet_class_entry; +static int codepage; HRESULT dotnet_init() { HRESULT hr; @@ -112,12 +113,15 @@ if (ZEND_NUM_ARGS() != 2) WRONG_PARAM_COUNT; + /* should be made configurable like in ext/com */ + codepage = CP_ACP; + getParameters(ht, 2, &assembly_name, &datatype_name); convert_to_string(assembly_name); - assembly = php_char_to_OLECHAR(assembly_name->value.str.val, assembly_name->value.str.len); + assembly = php_char_to_OLECHAR(assembly_name->value.str.val, +assembly_name->value.str.len, codepage); convert_to_string(datatype_name); - datatype = php_char_to_OLECHAR(datatype_name->value.str.val, datatype_name->value.str.len); + datatype = php_char_to_OLECHAR(datatype_name->value.str.val, +datatype_name->value.str.len, codepage); /* obtain IDispatch */ hr=dotnet_create(assembly, datatype, &i_dispatch); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com CREDITS
phanto Sun Feb 18 08:40:27 2001 EDT Modified files: /php4/ext/com CREDITS Log: added myself to CREDITS Index: php4/ext/com/CREDITS diff -u php4/ext/com/CREDITS:1.1 php4/ext/com/CREDITS:1.2 --- php4/ext/com/CREDITS:1.1Mon Nov 20 02:31:13 2000 +++ php4/ext/com/CREDITSSun Feb 18 08:40:27 2001 @@ -1,2 +1,2 @@ Win32 COM -Zeev Suraski +Zeev Suraski, Harald Radi \ No newline at end of file -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com COM.cpp
phanto Sun Feb 18 08:49:05 2001 EDT Modified files: /php4/ext/com COM.cpp Log: @- Added new object VARIANT() to encapsulate values for use with @ the COM and DOTNET module. Therefore it is now possible to pass @ values by reference, convert php values to extended variant types (currency, @ date, idispatch, iunknown, ...) and define the codepage that should @ be used for unicode - conversion. Index: php4/ext/com/COM.cpp diff -u php4/ext/com/COM.cpp:1.3 php4/ext/com/COM.cpp:1.4 --- php4/ext/com/COM.cpp:1.3Fri Feb 16 18:15:12 2001 +++ php4/ext/com/COM.cppSun Feb 18 08:49:05 2001 @@ -234,18 +234,18 @@ codepage = CP_ACP; break; case 3: - if (!INI_INT("allow_dcom")) { - php_error(E_WARNING, "DCOM is disabled"); - RETURN_FALSE; - } getParameters(ht, 3, &module_name, &server_name, &code_page); if (server_name->type == IS_NULL) { efree(server_name); server_name = NULL; - } - else + } else { + if (!INI_INT("allow_dcom")) { + php_error(E_WARNING, "DCOM is disabled"); + RETURN_FALSE; + } convert_to_string(server_name); + } convert_to_long(code_page); codepage = code_page->value.lval; -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com conversion.c
phanto Sun Feb 18 08:49:58 2001 EDT Modified files: /php4/ext/com conversion.c Log: added a few more variant types for zval <-> variant conversion Index: php4/ext/com/conversion.c diff -u php4/ext/com/conversion.c:1.6 php4/ext/com/conversion.c:1.7 --- php4/ext/com/conversion.c:1.6 Fri Feb 16 18:15:12 2001 +++ php4/ext/com/conversion.c Sun Feb 18 08:49:58 2001 @@ -317,7 +317,7 @@ case VT_UINT: convert_to_long_ex(&pval_arg); -var_arg->intVal = (unsigned int)pval_arg->value.lval; +var_arg->uintVal = (unsigned int)pval_arg->value.lval; break; case VT_I1|VT_BYREF: @@ -342,7 +342,7 @@ case VT_UINT|VT_BYREF: convert_to_long(pval_arg); -var_arg->pintVal = (unsigned int FAR*) &pval_arg->value.lval; +var_arg->puintVal = (unsigned int FAR*) &pval_arg->value.lval; break; default: @@ -421,6 +421,15 @@ } break; + case VT_CY: + if(var_arg->vt & VT_BYREF) + VarR8FromCy(var_arg->cyVal, &(pval_arg->value.dval)); + else + VarR8FromCy(*(var_arg->pcyVal), &(pval_arg->value.dval)); + + pval_arg->type = IS_DOUBLE; + break; + case VT_BOOL: if (var_arg->vt & VT_BYREF) if (*(var_arg->pboolVal) & 0x) @@ -498,6 +507,52 @@ case VT_UNKNOWN: var_arg->pdispVal->lpVtbl->Release(var_arg->pdispVal); /* break missing intentionally */ + + case VT_I1: + if(var_arg->vt & VT_BYREF) +pval_arg->value.lval = (long)*(var_arg->pcVal); + else +pval_arg->value.lval = (long) var_arg->cVal; + + pval_arg->type = IS_LONG; + break; + + case VT_UI2: + if(var_arg->vt & VT_BYREF) +pval_arg->value.lval = (long)*(var_arg->puiVal); + else +pval_arg->value.lval = (long) var_arg->uiVal; + + pval_arg->type = IS_LONG; + break; + + case VT_UI4: + if(var_arg->vt & VT_BYREF) +pval_arg->value.lval = (long)*(var_arg->pulVal); + else +pval_arg->value.lval = (long) var_arg->ulVal; + + pval_arg->type = IS_LONG; + break; + + case VT_INT: + if(var_arg->vt & VT_BYREF) +pval_arg->value.lval = (long)*(var_arg->pintVal); + else +pval_arg->value.lval = (long) var_arg->intVal; + + pval_arg->type = IS_LONG; + break; + + case VT_UINT: + if(var_arg->vt & VT_BYREF) +pval_arg->value.lval = (long)*(var_arg->puintVal); + else +pval_arg->value.lval = (long) var_arg->uintVal; + + pval_arg->type = IS_LONG; + break; + default: php_error(E_WARNING,"Unsupported variant type: %d (0x%X)", var_arg->vt, var_arg->vt); var_reset(pval_arg); -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]
[PHP-CVS] cvs: php4 /ext/com typedef_VARIANT.c
phanto Sun Feb 18 08:51:27 2001 EDT Modified files: /php4/ext/com typedef_VARIANT.c Log: export global constants for codepage and variant type VT_* and CP_* Index: php4/ext/com/typedef_VARIANT.c diff -u php4/ext/com/typedef_VARIANT.c:1.6 php4/ext/com/typedef_VARIANT.c:1.7 --- php4/ext/com/typedef_VARIANT.c:1.6 Fri Feb 16 18:15:12 2001 +++ php4/ext/com/typedef_VARIANT.c Sun Feb 18 08:51:26 2001 @@ -73,6 +73,7 @@ REGISTER_LONG_CONSTANT("VT_EMPTY", VT_EMPTY, 0); REGISTER_LONG_CONSTANT("VT_UI1", VT_UI1, 0); REGISTER_LONG_CONSTANT("VT_I2", VT_I2, 0); + REGISTER_LONG_CONSTANT("VT_I4", VT_I4, 0); REGISTER_LONG_CONSTANT("VT_R4", VT_R4, 0); REGISTER_LONG_CONSTANT("VT_R8", VT_R8, 0); REGISTER_LONG_CONSTANT("VT_BOOL", VT_BOOL, 0); @@ -181,22 +182,22 @@ zend_hash_index_find(object->value.obj.properties, 0, (void **) &var_handle); var_arg = zend_list_find((*var_handle)->value.lval, &type); - if (!var_arg || (type != le_variant)) + if (!var_arg || (type != le_variant)) { var_reset(&result); - else - { + } else { overloaded_property = (zend_overloaded_element *) property_reference->elements_list->head->data; - switch (overloaded_property->type) - { + switch (overloaded_property->type) { case OE_IS_ARRAY: var_reset(&result); break; case OE_IS_OBJECT: - if(!strcmp(overloaded_property->element.value.str.val, "value")) + if(!strcmp(overloaded_property->element.value.str.val, +"value")) { php_variant_to_pval(var_arg, &result, 0, codepage); - else - { + } else +if(!strcmp(overloaded_property->element.value.str.val, "type")) { + result.value.lval = var_arg->vt; + result.type = IS_LONG; + } else { var_reset(&result); php_error(E_WARNING, "Unknown member."); } -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]