[PHP] RE: PHP, Windows and COM.

2003-02-26 Thread Harald Radi
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.

2003-02-25 Thread Harald Radi
 
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

2001-03-20 Thread Harald Radi

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

2001-03-20 Thread Harald Radi

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

2001-03-20 Thread Harald Radi

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

2001-04-22 Thread Harald Radi

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

2001-04-22 Thread Harald Radi

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

2001-04-22 Thread Harald Radi

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

2001-05-04 Thread Harald Radi

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

2001-09-03 Thread Harald Radi

> 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

2001-01-27 Thread Harald Radi

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

2001-01-27 Thread Harald Radi

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

2001-01-27 Thread Harald Radi

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

2001-01-27 Thread Harald Radi

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

2001-01-27 Thread Harald Radi

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

2001-01-29 Thread Harald Radi

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

2001-01-29 Thread Harald Radi

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

2001-01-29 Thread Harald Radi

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

2001-01-30 Thread Harald Radi

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

2001-01-30 Thread Harald Radi

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

2001-01-31 Thread Harald Radi

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

2001-02-02 Thread Harald Radi

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

2001-02-02 Thread Harald Radi

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

2001-02-02 Thread Harald Radi

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

2001-02-02 Thread Harald Radi

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

2001-02-05 Thread Harald Radi

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

2001-02-16 Thread Harald Radi

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

2001-02-16 Thread Harald Radi

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

2001-02-18 Thread Harald Radi

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

2001-02-18 Thread Harald Radi

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

2001-02-18 Thread Harald Radi

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

2001-02-18 Thread Harald Radi

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]