summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Radi <phanto@php.net>2001-07-31 16:03:12 +0000
committerHarald Radi <phanto@php.net>2001-07-31 16:03:12 +0000
commit3a1f3c5caacb51a9b7c1545a278fd9774533fd1f (patch)
tree426f3b11cf114c470c2b728e05ae1285de147099
parent90fcd0d1f41add3d05f964e17d4ef1378def0cf9 (diff)
downloadphp-git-3a1f3c5caacb51a9b7c1545a278fd9774533fd1f.tar.gz
added these TSRMLS_* macros to nearly every argument list
-rw-r--r--ext/com/COM.c212
-rw-r--r--ext/com/VARIANT.c53
-rw-r--r--ext/com/com.h40
-rw-r--r--ext/com/conversion.c34
-rw-r--r--ext/com/conversion.h11
-rw-r--r--ext/com/php_COM.h37
-rw-r--r--ext/com/php_VARIANT.h11
-rw-r--r--ext/rpc/com/com_wrapper.c212
-rw-r--r--ext/rpc/com/com_wrapper.h40
-rw-r--r--ext/rpc/com/conversion.c34
-rw-r--r--ext/rpc/com/conversion.h11
-rw-r--r--ext/rpc/com/php_com.h37
-rw-r--r--ext/rpc/com/php_variant.h11
-rw-r--r--ext/rpc/com/variant.c53
14 files changed, 376 insertions, 420 deletions
diff --git a/ext/com/COM.c b/ext/com/COM.c
index f11c67805a..2ea7540d3c 100644
--- a/ext/com/COM.c
+++ b/ext/com/COM.c
@@ -61,32 +61,14 @@
#include "php.h"
#include "php_ini.h"
-#include "com.h"
-#include "conversion.h"
+#include "php_COM.h"
#include "php_VARIANT.h"
-zend_class_entry com_class_entry;
-
-PHP_FUNCTION(com_load);
-PHP_FUNCTION(com_invoke);
-PHP_FUNCTION(com_addref);
-PHP_FUNCTION(com_release);
-PHP_FUNCTION(com_propget);
-PHP_FUNCTION(com_propput);
-PHP_FUNCTION(com_load_typelib);
-PHP_FUNCTION(com_isenum);
-
-PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult);
-PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId);
-PHPAPI HRESULT php_COM_release(comval *obj);
-PHPAPI HRESULT php_COM_addref(comval *obj);
-PHPAPI HRESULT php_COM_destruct(comval *obj);
-PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* pDisp, int cleanup);
-PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup);
-
-PHPAPI int php_COM_get_le_comval();
-static ITypeLib *php_COM_find_typelib(char *search_string, int mode);
-static int php_COM_load_typelib(ITypeLib *TypeLib, int mode);
+static ITypeLib *php_COM_find_typelib(char *search_string, int mode TSRMLS_DC);
+static int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC);
+static int do_COM_offget(VARIANT *result, comval *array, pval *property, int cleanup TSRMLS_DC);
+static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property, int cleanup TSRMLS_DC);
+static void php_register_COM_class(TSRMLS_D);
static int le_comval;
static int codepage;
@@ -120,7 +102,7 @@ static PHP_MINFO_FUNCTION(COM)
DISPLAY_INI_ENTRIES();
}
-PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult)
+PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult TSRMLS_DC)
{
HRESULT hr;
int failed = FALSE;
@@ -162,7 +144,7 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS
}
}
-PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId)
+PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId TSRMLS_DC)
{
HRESULT hr;
@@ -201,7 +183,7 @@ PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames
}
}
-PHPAPI HRESULT php_COM_release(comval *obj)
+PHPAPI HRESULT php_COM_release(comval *obj TSRMLS_DC)
{
HRESULT hr;
@@ -226,7 +208,7 @@ PHPAPI HRESULT php_COM_release(comval *obj)
return obj->refcount;
}
-PHPAPI HRESULT php_COM_addref(comval *obj)
+PHPAPI HRESULT php_COM_addref(comval *obj TSRMLS_DC)
{
if(C_ISREFD(obj))
{
@@ -236,7 +218,7 @@ PHPAPI HRESULT php_COM_addref(comval *obj)
return obj->refcount;
}
-PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* ppDisp, int cleanup)
+PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* ppDisp, int cleanup TSRMLS_DC)
{
HRESULT hr = 1;
DISPPARAMS dispparams;
@@ -290,7 +272,7 @@ PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* ppDisp, int cleanup)
return hr;
}
-PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup)
+PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup TSRMLS_DC)
{
HRESULT hr;
@@ -325,7 +307,7 @@ PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup)
return hr;
}
-PHPAPI char *php_COM_error_message(HRESULT hr)
+PHPAPI char *php_COM_error_message(HRESULT hr TSRMLS_DC)
{
void *pMsgBuf;
@@ -341,35 +323,35 @@ PHPAPI char *php_COM_error_message(HRESULT hr)
return pMsgBuf;
}
-static char *php_string_from_clsid(const CLSID *clsid)
+static char *php_string_from_clsid(const CLSID *clsid TSRMLS_DC)
{
LPOLESTR ole_clsid;
char *clsid_str;
StringFromCLSID(clsid, &ole_clsid);
- clsid_str = php_OLECHAR_to_char(ole_clsid, NULL, 0, codepage);
+ clsid_str = php_OLECHAR_to_char(ole_clsid, NULL, 0, codepage TSRMLS_CC);
LocalFree(ole_clsid);
return clsid_str;
}
-PHPAPI HRESULT php_COM_destruct(comval *obj)
+PHPAPI HRESULT php_COM_destruct(comval *obj TSRMLS_DC)
{
HRESULT hr = S_OK;
if(C_ISREFD(obj))
{
C_REFCOUNT(obj) = 1;
- hr = php_COM_release(obj);
+ hr = php_COM_release(obj TSRMLS_CC);
}
efree(obj);
return hr;
}
-static void php_comval_destructor(zend_rsrc_list_entry *rsrc)
+static void php_comval_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
- php_COM_destruct(rsrc->ptr);
+ php_COM_destruct(rsrc->ptr TSRMLS_CC);
}
static PHP_INI_MH(OnTypelibFileChange)
@@ -436,9 +418,9 @@ static PHP_INI_MH(OnTypelibFileChange)
printf("\rLoading %-60s\r", typelib_name);
}
- if((pTL = php_COM_find_typelib(typelib_name, mode)) != NULL)
+ if((pTL = php_COM_find_typelib(typelib_name, mode TSRMLS_CC)) != NULL)
{
- php_COM_load_typelib(pTL, mode);
+ php_COM_load_typelib(pTL, mode TSRMLS_CC);
pTL->lpVtbl->Release(pTL);
}
}
@@ -533,7 +515,7 @@ PHP_FUNCTION(com_load)
ALLOC_COM(obj);
convert_to_string_ex(&module_name);
- ProgID = php_char_to_OLECHAR(Z_STRVAL_P(module_name), Z_STRLEN_P(module_name), codepage);
+ ProgID = php_char_to_OLECHAR(Z_STRVAL_P(module_name), Z_STRLEN_P(module_name), codepage TSRMLS_CC);
/* obtain CLSID */
if(FAILED(CLSIDFromString(ProgID, &clsid)))
@@ -566,8 +548,8 @@ PHP_FUNCTION(com_load)
if(FAILED(hr))
{
- php_COM_destruct(obj);
- error_message = php_COM_error_message(hr);
+ php_COM_destruct(obj TSRMLS_CC);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Invalid ProgID or Moniker: %s\n", error_message);
LocalFree(error_message);
RETURN_FALSE;
@@ -588,7 +570,7 @@ PHP_FUNCTION(com_load)
server_info.dwReserved1=0;
server_info.dwReserved2=0;
- server_info.pwszName = php_char_to_OLECHAR(Z_STRVAL_P(server_name), Z_STRLEN_P(server_name), codepage);
+ server_info.pwszName = php_char_to_OLECHAR(Z_STRVAL_P(server_name), Z_STRLEN_P(server_name), codepage TSRMLS_CC);
server_info.pAuthInfo=NULL;
pResults.pIID = &IID_IDispatch;
@@ -605,17 +587,17 @@ PHP_FUNCTION(com_load)
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
- clsid_str = php_string_from_clsid(&clsid);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
+ clsid_str = php_string_from_clsid(&clsid TSRMLS_CC);
php_error(E_WARNING,"Unable to obtain IDispatch interface for CLSID %s: %s",clsid_str,error_message);
LocalFree(error_message);
efree(clsid_str);
- php_COM_destruct(obj);
+ php_COM_destruct(obj TSRMLS_CC);
RETURN_FALSE;
}
}
- php_COM_set(obj, &C_DISPATCH(obj), TRUE);
+ php_COM_set(obj, &C_DISPATCH(obj), TRUE TSRMLS_CC);
if(INI_INT("com.autoregister_casesensitive"))
{
@@ -630,7 +612,7 @@ PHP_FUNCTION(com_load)
if(C_TYPEINFO_VT(obj)->GetContainingTypeLib(C_TYPEINFO(obj), &pTL, &idx) == S_OK)
{
- php_COM_load_typelib(pTL, mode);
+ php_COM_load_typelib(pTL, mode TSRMLS_CC);
pTL->lpVtbl->Release(pTL);
}
}
@@ -641,13 +623,13 @@ PHP_FUNCTION(com_load)
{
ITypeLib *pTL;
- if((pTL = php_COM_find_typelib(Z_STRVAL_P(typelib), mode)) != NULL)
+ if((pTL = php_COM_find_typelib(Z_STRVAL_P(typelib), mode TSRMLS_CC)) != NULL)
{
C_HASTLIB(obj) = SUCCEEDED(pTL->lpVtbl->GetTypeInfo(pTL, 0, &C_TYPEINFO(obj)));
/* idx 0 should deliver the ITypeInfo for the IDispatch Interface */
if(INI_INT("com.autoregister_typelib"))
{
- php_COM_load_typelib(pTL, mode);
+ php_COM_load_typelib(pTL, mode TSRMLS_CC);
}
pTL->lpVtbl->Release(pTL);
}
@@ -659,7 +641,7 @@ PHP_FUNCTION(com_load)
/* }}} */
-int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **arguments, int arg_count)
+int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **arguments, int arg_count TSRMLS_DC)
{
DISPID dispid;
HRESULT hr;
@@ -713,7 +695,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
if(FAILED(hr = C_ENUMVARIANT_VT(obj)->Next(C_ENUMVARIANT(obj), count, pSA->pvData, &count)))
{
- char *error_message = php_COM_error_message(hr);
+ char *error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"IEnumVariant::Next() failed: %s\n", error_message);
efree(error_message);
VariantClear(var_result);
@@ -725,7 +707,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
rgsabound[0].cElements = count;
if(FAILED(SafeArrayRedim(pSA, rgsabound)))
{
- char *error_message = php_COM_error_message(hr);
+ char *error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"IEnumVariant::Next() failed: %s\n", error_message);
efree(error_message);
VariantClear(var_result);
@@ -739,7 +721,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
{
if(FAILED(hr = C_ENUMVARIANT_VT(obj)->Reset(C_ENUMVARIANT(obj))))
{
- char *error_message = php_COM_error_message(hr);
+ char *error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"IEnumVariant::Next() failed: %s\n", error_message);
efree(error_message);
return FAILURE;
@@ -767,7 +749,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
}
if(FAILED(hr = C_ENUMVARIANT_VT(obj)->Skip(C_ENUMVARIANT(obj), count)))
{
- char *error_message = php_COM_error_message(hr);
+ char *error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"IEnumVariant::Next() failed: %s\n", error_message);
efree(error_message);
return FAILURE;
@@ -777,13 +759,13 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
}
else
{
- funcname = php_char_to_OLECHAR(Z_STRVAL_P(function_name), Z_STRLEN_P(function_name), codepage);
+ funcname = php_char_to_OLECHAR(Z_STRVAL_P(function_name), Z_STRLEN_P(function_name), codepage TSRMLS_CC);
- hr = php_COM_get_ids_of_names(obj, &funcname, &dispid);
+ hr = php_COM_get_ids_of_names(obj, &funcname, &dispid TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Unable to lookup %s: %s\n", Z_STRVAL_P(function_name), error_message);
LocalFree(error_message);
efree(funcname);
@@ -795,7 +777,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
for(current_arg=0; current_arg<arg_count; current_arg++)
{
current_variant = arg_count - current_arg - 1;
- php_pval_to_variant(arguments[current_arg], &variant_args[current_variant], codepage);
+ php_pval_to_variant(arguments[current_arg], &variant_args[current_variant], codepage TSRMLS_CC);
}
dispparams.rgvarg = variant_args;
@@ -803,7 +785,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
dispparams.cArgs = arg_count;
dispparams.cNamedArgs = 0;
- hr = php_COM_invoke(obj, dispid, DISPATCH_METHOD|DISPATCH_PROPERTYGET, &dispparams, var_result);
+ hr = php_COM_invoke(obj, dispid, DISPATCH_METHOD|DISPATCH_PROPERTYGET, &dispparams, var_result TSRMLS_CC);
efree(funcname);
for (current_arg=0;current_arg<arg_count;current_arg++)
@@ -814,7 +796,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Invoke() failed: %s\n", error_message);
LocalFree(error_message);
return FAILURE;
@@ -862,7 +844,7 @@ PHP_FUNCTION(com_invoke)
ALLOC_VARIANT(var_result);
- if(do_COM_invoke(obj, function_name, var_result, arguments+2, arg_count-2)==FAILURE)
+ if(do_COM_invoke(obj, function_name, var_result, arguments+2, arg_count-2 TSRMLS_CC)==FAILURE)
{
FREE_VARIANT(var_result);
efree(arguments);
@@ -870,7 +852,7 @@ PHP_FUNCTION(com_invoke)
RETURN_FALSE;
}
- php_variant_to_pval(var_result, return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, return_value, FALSE, codepage TSRMLS_CC);
FREE_VARIANT(var_result);
efree(arguments);
@@ -905,7 +887,7 @@ PHP_FUNCTION(com_release)
RETURN_FALSE;
}
- RETURN_LONG(php_COM_release(obj))
+ RETURN_LONG(php_COM_release(obj TSRMLS_CC))
}
/* }}} */
@@ -937,26 +919,26 @@ PHP_FUNCTION(com_addref)
RETURN_FALSE;
}
- RETURN_LONG(php_COM_addref(obj));
+ RETURN_LONG(php_COM_addref(obj TSRMLS_CC));
}
/* }}} */
-static int do_COM_offget(VARIANT *result, comval *array, pval *property, int cleanup)
+static int do_COM_offget(VARIANT *result, comval *array, pval *property, int cleanup TSRMLS_DC)
{
pval function_name;
int retval;
ZVAL_STRINGL(&function_name, "Item", 4, 0);
- retval = do_COM_invoke(array, &function_name, result, &property, 1);
+ retval = do_COM_invoke(array, &function_name, result, &property, 1 TSRMLS_CC);
if(cleanup)
{
- php_COM_destruct(array);
+ php_COM_destruct(array TSRMLS_CC);
}
return retval;
}
-static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property, int cleanup)
+static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property, int cleanup TSRMLS_DC)
{
DISPID dispid;
HRESULT hr;
@@ -966,19 +948,19 @@ static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property,
/* obtain property handler */
- propname = php_char_to_OLECHAR(Z_STRVAL_P(arg_property), Z_STRLEN_P(arg_property), codepage);
+ propname = php_char_to_OLECHAR(Z_STRVAL_P(arg_property), Z_STRLEN_P(arg_property), codepage TSRMLS_CC);
- hr = php_COM_get_ids_of_names(obj, &propname, &dispid);
+ hr = php_COM_get_ids_of_names(obj, &propname, &dispid TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Unable to lookup %s: %s\n", Z_STRVAL_P(arg_property), error_message);
LocalFree(error_message);
efree(propname);
if(cleanup)
{
- php_COM_destruct(obj);
+ php_COM_destruct(obj TSRMLS_CC);
}
return FAILURE;
}
@@ -986,17 +968,17 @@ static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property,
dispparams.cArgs = 0;
dispparams.cNamedArgs = 0;
- hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYGET, &dispparams, var_result);
+ hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYGET, &dispparams, var_result TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"PropGet() failed: %s\n", error_message);
LocalFree(error_message);
efree(propname);
if(cleanup)
{
- php_COM_destruct(obj);
+ php_COM_destruct(obj TSRMLS_CC);
}
return FAILURE;
}
@@ -1004,13 +986,13 @@ static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property,
efree(propname);
if(cleanup)
{
- php_COM_destruct(obj);
+ php_COM_destruct(obj TSRMLS_CC);
}
return SUCCESS;
}
-static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property, pval *value)
+static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property, pval *value TSRMLS_DC)
{
DISPID dispid;
HRESULT hr;
@@ -1020,18 +1002,17 @@ static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property,
DISPPARAMS dispparams;
DISPID mydispid = DISPID_PROPERTYPUT;
-
ALLOC_VARIANT(var_result);
ALLOC_VARIANT(new_value);
/* obtain property handler */
- propname = php_char_to_OLECHAR(Z_STRVAL_P(arg_property), Z_STRLEN_P(arg_property), codepage);
+ propname = php_char_to_OLECHAR(Z_STRVAL_P(arg_property), Z_STRLEN_P(arg_property), codepage TSRMLS_CC);
- hr = php_COM_get_ids_of_names(obj, &propname, &dispid);
+ hr = php_COM_get_ids_of_names(obj, &propname, &dispid TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Unable to lookup %s: %s\n", Z_STRVAL_P(arg_property), error_message);
LocalFree(error_message);
efree(propname);
@@ -1042,17 +1023,17 @@ static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property,
RETURN_FALSE;
}
- php_pval_to_variant(value, new_value, codepage);
+ php_pval_to_variant(value, new_value, codepage TSRMLS_CC);
dispparams.rgvarg = new_value;
dispparams.rgdispidNamedArgs = &mydispid;
dispparams.cArgs = 1;
dispparams.cNamedArgs = 1;
- hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYPUT, &dispparams, NULL);
+ hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYPUT, &dispparams, NULL TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"PropPut() failed: %s\n", error_message);
LocalFree(error_message);
efree(propname);
@@ -1066,11 +1047,11 @@ static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property,
dispparams.cArgs = 0;
dispparams.cNamedArgs = 0;
- hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYGET, &dispparams, var_result);
+ hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYGET, &dispparams, var_result TSRMLS_CC);
if(SUCCEEDED(hr))
{
- php_variant_to_pval(var_result, return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, return_value, FALSE, codepage TSRMLS_CC);
}
else
{
@@ -1110,13 +1091,13 @@ PHP_FUNCTION(com_propget)
ALLOC_VARIANT(var_result);
- if(do_COM_propget(var_result, obj, arg_property, FALSE) == FAILURE)
+ if(do_COM_propget(var_result, obj, arg_property, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
RETURN_FALSE;
}
- php_variant_to_pval(var_result, return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, return_value, FALSE, codepage TSRMLS_CC);
FREE_VARIANT(var_result);
}
@@ -1146,7 +1127,7 @@ PHP_FUNCTION(com_propput)
}
convert_to_string_ex(&arg_property);
- do_COM_propput(return_value, obj, arg_property, arg_value);
+ do_COM_propput(return_value, obj, arg_property, arg_value TSRMLS_CC);
}
/* }}} */
@@ -1175,8 +1156,8 @@ PHP_FUNCTION(com_load_typelib)
}
convert_to_string_ex(&arg_typelib);
- pTL = php_COM_find_typelib(Z_STRVAL_P(arg_typelib), mode);
- if(php_COM_load_typelib(pTL, mode) == SUCCESS)
+ pTL = php_COM_find_typelib(Z_STRVAL_P(arg_typelib), mode TSRMLS_CC);
+ if(php_COM_load_typelib(pTL, mode TSRMLS_CC) == SUCCESS)
{
pTL->lpVtbl->Release(pTL);
RETURN_TRUE;
@@ -1220,7 +1201,7 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
switch(overloaded_property->type)
{
case OE_IS_ARRAY:
- if(do_COM_offget(var_result, obj, &overloaded_property->element, FALSE) == FAILURE)
+ if(do_COM_offget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
@@ -1230,7 +1211,7 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
break;
case OE_IS_OBJECT:
- if(do_COM_propget(var_result, obj, &overloaded_property->element, FALSE) == FAILURE)
+ if(do_COM_propget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
@@ -1269,11 +1250,11 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
}
obj = obj_prop;
- php_COM_set(obj, &V_DISPATCH(var_result), TRUE);
+ php_COM_set(obj, &V_DISPATCH(var_result), TRUE TSRMLS_CC);
}
else
{
- php_variant_to_pval(var_result, &return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, &return_value, FALSE, codepage TSRMLS_CC);
FREE_COM(obj_prop);
obj_prop = NULL;
@@ -1317,7 +1298,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
switch(overloaded_property->type)
{
case OE_IS_ARRAY:
- if(do_COM_offget(var_result, obj, &overloaded_property->element, FALSE) == FAILURE)
+ if(do_COM_offget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
@@ -1327,7 +1308,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
break;
case OE_IS_OBJECT:
- if(do_COM_propget(var_result, obj, &overloaded_property->element, FALSE) == FAILURE)
+ if(do_COM_propget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
@@ -1353,7 +1334,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
}
obj = obj_prop;
- php_COM_set(obj, &V_DISPATCH(var_result), TRUE);
+ php_COM_set(obj, &V_DISPATCH(var_result), TRUE TSRMLS_CC);
}
else
{
@@ -1369,7 +1350,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
FREE_VARIANT(var_result);
overloaded_property = (zend_overloaded_element *) element->data;
- do_COM_propput(&result, obj, &overloaded_property->element, value);
+ do_COM_propput(&result, obj, &overloaded_property->element, value TSRMLS_CC);
FREE_COM(obj_prop);
pval_destructor(&overloaded_property->element);
@@ -1429,12 +1410,12 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
if(zend_llist_count(property_reference->elements_list)==1
&& !strcmp(Z_STRVAL_P(&function_name->element), "release"))
{
- RETVAL_LONG(php_COM_release(obj));
+ RETVAL_LONG(php_COM_release(obj TSRMLS_CC));
}
else if(zend_llist_count(property_reference->elements_list)==1
&& !strcmp(Z_STRVAL_P(&function_name->element), "addref"))
{
- RETVAL_LONG(php_COM_addref(obj));
+ RETVAL_LONG(php_COM_addref(obj TSRMLS_CC));
}
else
{
@@ -1447,13 +1428,13 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
arguments = (pval **) emalloc(sizeof(pval *)*arg_count);
getParametersArray(ht, arg_count, arguments);
- if(do_COM_invoke(obj , &function_name->element, var_result, arguments, arg_count) == FAILURE)
+ if(do_COM_invoke(obj , &function_name->element, var_result, arguments, arg_count TSRMLS_CC) == FAILURE)
{
RETVAL_FALSE;
}
else
{
- php_variant_to_pval(var_result, return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, return_value, FALSE, codepage TSRMLS_CC);
}
FREE_VARIANT(var_result);
@@ -1467,7 +1448,7 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
pval_destructor(&function_name->element);
}
-static ITypeLib *php_COM_find_typelib(char *search_string, int mode)
+static ITypeLib *php_COM_find_typelib(char *search_string, int mode TSRMLS_DC)
{
ITypeLib *TypeLib = NULL;
char *strtok_buf, *major, *minor;
@@ -1488,7 +1469,7 @@ static ITypeLib *php_COM_find_typelib(char *search_string, int mode)
major = php_strtok_r(NULL, ",", &strtok_buf);
minor = php_strtok_r(NULL, ",", &strtok_buf);
- p = php_char_to_OLECHAR(search_string, strlen(search_string), codepage);
+ p = php_char_to_OLECHAR(search_string, strlen(search_string), codepage TSRMLS_CC);
/* Is the string a GUID ? */
if(!FAILED(CLSIDFromString(p, &clsid)))
@@ -1627,7 +1608,7 @@ static ITypeLib *php_COM_find_typelib(char *search_string, int mode)
str = emalloc(strlen(keyname)+strlen(version)+20); /* 18 == safety, 2 == extra comma and \0 */
sprintf(str, "%s,%d,%d", keyname, major, minor);
efree(keyname);
- TypeLib = php_COM_find_typelib(str, mode);
+ TypeLib = php_COM_find_typelib(str, mode TSRMLS_CC);
efree(str);
/* This is probbaly much harder to read and follow */
/* But it is MUCH more effiecient than trying to */
@@ -1652,12 +1633,11 @@ static ITypeLib *php_COM_find_typelib(char *search_string, int mode)
return TypeLib;
}
-static int php_COM_load_typelib(ITypeLib *TypeLib, int mode)
+static int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC)
{
ITypeComp *TypeComp;
int i;
int interfaces;
- TSRMLS_FETCH();
if(NULL == TypeLib)
{
@@ -1704,7 +1684,7 @@ static int php_COM_load_typelib(ITypeLib *TypeLib, int mode)
j++;
continue;
}
- ids = php_OLECHAR_to_char(bstr_ids, NULL, 1, codepage);
+ ids = php_OLECHAR_to_char(bstr_ids, NULL, 1, codepage TSRMLS_CC);
SysFreeString(bstr_ids);
c.name_len = strlen(ids)+1;
c.name = ids;
@@ -1721,7 +1701,7 @@ static int php_COM_load_typelib(ITypeLib *TypeLib, int mode)
continue;
}
- php_variant_to_pval(pVarDesc->lpvarValue, &c.value, FALSE, codepage);
+ php_variant_to_pval(pVarDesc->lpvarValue, &c.value, FALSE, codepage TSRMLS_CC);
c.flags = mode;
/* Before registering the contsnt, let's see if we can find it */
@@ -1766,23 +1746,21 @@ PHP_FUNCTION(com_isenum)
}
/* }}} */
-void php_register_COM_class()
+static void php_register_COM_class(TSRMLS_D)
{
- TSRMLS_FETCH();
-
- INIT_OVERLOADED_CLASS_ENTRY(com_class_entry, "COM", NULL,
+ INIT_OVERLOADED_CLASS_ENTRY(COM_class_entry, "COM", NULL,
php_COM_call_function_handler,
php_COM_get_property_handler,
php_COM_set_property_handler);
- zend_register_internal_class(&com_class_entry TSRMLS_CC);
+ zend_register_internal_class(&COM_class_entry TSRMLS_CC);
}
PHP_MINIT_FUNCTION(COM)
{
CoInitialize(NULL);
le_comval = zend_register_list_destructors_ex(php_comval_destructor, NULL, "COM", module_number);
- php_register_COM_class();
+ php_register_COM_class(TSRMLS_C);
REGISTER_INI_ENTRIES();
return SUCCESS;
}
diff --git a/ext/com/VARIANT.c b/ext/com/VARIANT.c
index 6b68fd25fa..b8f2590101 100644
--- a/ext/com/VARIANT.c
+++ b/ext/com/VARIANT.c
@@ -28,26 +28,20 @@
#include "php.h"
#include "php_ini.h"
-#include "variant.h"
-#include "conversion.h"
#include "ext/standard/info.h"
+#include "php_VARIANT.h"
#include <unknwn.h>
-PHP_MINIT_FUNCTION(VARIANT);
-PHP_MSHUTDOWN_FUNCTION(VARIANT);
-
-int php_VARIANT_get_le_variant();
-void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference);
-pval php_VARIANT_get_property_handler(zend_property_reference *property_reference);
-static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value);
-void php_register_VARIANT_class();
-static void php_variant_destructor(zend_rsrc_list_entry *rsrc);
-void php_register_VARIANT_class();
+static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value TSRMLS_DC);
+static int php_VARIANT_set_property_handler(zend_property_reference *property_reference, pval *value);
+static pval php_VARIANT_get_property_handler(zend_property_reference *property_reference);
+static void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference);
+static void php_VARIANT_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC);
+static void php_register_VARIANT_class(TSRMLS_D);
static int le_variant;
static int codepage;
-
static zend_class_entry VARIANT_class_entry;
function_entry VARIANT_functions[] = {
@@ -67,7 +61,7 @@ zend_module_entry VARIANT_module_entry = {
PHP_MINIT_FUNCTION(VARIANT)
{
- le_variant = zend_register_list_destructors_ex(php_variant_destructor, NULL, "VARIANT", module_number);
+ le_variant = zend_register_list_destructors_ex(php_VARIANT_destructor, NULL, "VARIANT", module_number);
/* variant datatypes */
REGISTER_LONG_CONSTANT("VT_NULL", VT_NULL, CONST_CS | CONST_PERSISTENT);
@@ -111,7 +105,7 @@ PHP_MINIT_FUNCTION(VARIANT)
# error "CP_THREAD_ACP undefined"
#endif
- php_register_VARIANT_class();
+ php_register_VARIANT_class(TSRMLS_C);
return SUCCESS;
}
@@ -120,12 +114,12 @@ PHP_MSHUTDOWN_FUNCTION(VARIANT)
return SUCCESS;
}
-int php_VARIANT_get_le_variant()
+PHPAPI int php_VARIANT_get_le_variant()
{
return le_variant;
}
-void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference)
+static void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference)
{
pval *object = property_reference->object;
zend_overloaded_element *function_name = (zend_overloaded_element *) property_reference->elements_list->tail->data;
@@ -146,17 +140,17 @@ void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_proper
break;
case 1:
getParameters(ht, 1, &data);
- php_pval_to_variant(data, pVar, codepage);
+ php_pval_to_variant(data, pVar, codepage TSRMLS_CC);
codepage = CP_ACP;
break;
case 2:
getParameters(ht, 2, &data, &type);
- php_pval_to_variant_ex(data, pVar, type, codepage);
+ php_pval_to_variant_ex(data, pVar, type, codepage TSRMLS_CC);
codepage = CP_ACP;
break;
case 3:
getParameters(ht, 3, &data, &type, &code_page);
- php_pval_to_variant_ex(data, pVar, type, codepage);
+ php_pval_to_variant_ex(data, pVar, type, codepage TSRMLS_CC);
convert_to_long(code_page);
codepage = code_page->value.lval;
break;
@@ -182,8 +176,7 @@ void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_proper
}
}
-
-pval php_VARIANT_get_property_handler(zend_property_reference *property_reference)
+static pval php_VARIANT_get_property_handler(zend_property_reference *property_reference)
{
zend_overloaded_element *overloaded_property;
int type;
@@ -212,7 +205,7 @@ pval php_VARIANT_get_property_handler(zend_property_reference *property_referenc
case OE_IS_OBJECT:
if(!strcmp(overloaded_property->element.value.str.val, "value"))
{
- php_variant_to_pval(var_arg, &result, 0, codepage);
+ php_variant_to_pval(var_arg, &result, 0, codepage TSRMLS_CC);
}
else if(!strcmp(Z_STRVAL(overloaded_property->element), "type"))
{
@@ -236,7 +229,7 @@ pval php_VARIANT_get_property_handler(zend_property_reference *property_referenc
return result;
}
-int php_VARIANT_set_property_handler(zend_property_reference *property_reference, pval *value)
+static int php_VARIANT_set_property_handler(zend_property_reference *property_reference, pval *value)
{
zend_overloaded_element *overloaded_property;
int type;
@@ -253,12 +246,12 @@ int php_VARIANT_set_property_handler(zend_property_reference *property_reference
return FAILURE;
overloaded_property = (zend_overloaded_element *) property_reference->elements_list->head->data;
- do_VARIANT_propset(var_arg, &overloaded_property->element, value);
+ do_VARIANT_propset(var_arg, &overloaded_property->element, value TSRMLS_CC);
zval_dtor(&overloaded_property->element);
return SUCCESS;
}
-static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value)
+static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value TSRMLS_DC)
{
pval type;
@@ -426,20 +419,18 @@ static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value)
return FAILURE;
}
- php_pval_to_variant_ex(value, var_arg, &type, codepage);
+ php_pval_to_variant_ex(value, var_arg, &type, codepage TSRMLS_CC);
return SUCCESS;
}
-static void php_variant_destructor(zend_rsrc_list_entry *rsrc)
+static void php_VARIANT_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
FREE_VARIANT(rsrc->ptr);
}
-void php_register_VARIANT_class(void)
+static void php_register_VARIANT_class(TSRMLS_D)
{
- TSRMLS_FETCH();
-
INIT_OVERLOADED_CLASS_ENTRY(VARIANT_class_entry, "VARIANT", NULL,
php_VARIANT_call_function_handler,
php_VARIANT_get_property_handler,
diff --git a/ext/com/com.h b/ext/com/com.h
index 700526c11f..1e36d3c567 100644
--- a/ext/com/com.h
+++ b/ext/com/com.h
@@ -3,7 +3,9 @@
#if PHP_WIN32
-#include "oleauto.h"
+BEGIN_EXTERN_C()
+
+#include <oleauto.h>
typedef struct comval_ {
#ifdef _DEBUG
@@ -19,29 +21,31 @@ typedef struct comval_ {
} i;
} comval;
-#define ZVAL_COM(z,o) { \
- zval *handle; \
- \
- /* OBJECTS_FIXME */ \
- Z_TYPE_P(z) = IS_OBJECT; \
- Z_OBJCE_P(z) = &com_class_entry; \
- \
- ALLOC_HASHTABLE(Z_OBJPROP_P(z)); \
- zend_hash_init(Z_OBJPROP_P(z), 0, NULL, ZVAL_PTR_DTOR, 0); \
- \
- ALLOC_ZVAL(handle); \
- INIT_PZVAL(handle); \
- ZVAL_LONG(handle, zend_list_insert((o), IS_COM)); \
- \
- zval_copy_ctor(handle); \
+END_EXTERN_C()
+
+#define ZVAL_COM(z,o) { \
+ zval *handle; \
+ \
+ /* OBJECTS_FIXME */ \
+ Z_TYPE_P(z) = IS_OBJECT; \
+ Z_OBJCE_P(z) = &COM_class_entry; \
+ \
+ ALLOC_HASHTABLE(Z_OBJPROP_P(z)); \
+ zend_hash_init(Z_OBJPROP_P(z), 0, NULL, ZVAL_PTR_DTOR, 0); \
+ \
+ ALLOC_ZVAL(handle); \
+ INIT_PZVAL(handle); \
+ ZVAL_LONG(handle, zend_list_insert((o), IS_COM)); \
+ \
+ zval_copy_ctor(handle); \
zend_hash_index_update(Z_OBJPROP_P(z), 0, &handle, sizeof(zval *), NULL); \
}
#define RETVAL_COM(o) ZVAL_COM(&return_value, o);
-#define RETURN_COM(o) RETVAL_COM(o) \
+#define RETURN_COM(o) RETVAL_COM(o) \
return;
-#define ALLOC_COM(z) (z) = (comval *) emalloc(sizeof(comval)); \
+#define ALLOC_COM(z) (z) = (comval *) emalloc(sizeof(comval)); \
C_REFCOUNT(z) = 0;
#define FREE_COM(z) efree(z);
diff --git a/ext/com/conversion.c b/ext/com/conversion.c
index 54f6f033d0..21dace5c18 100644
--- a/ext/com/conversion.c
+++ b/ext/com/conversion.c
@@ -37,12 +37,6 @@
/* prototypes */
-PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg, int codepage TSRMLS_DC);
-PHPAPI void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type, int codepage TSRMLS_DC);
-PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage);
-PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage);
-PHPAPI char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage);
-
static void pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, int type, int codepage TSRMLS_DC);
static void comval_to_variant(pval *pval_arg, VARIANT *var_arg TSRMLS_DC);
@@ -249,20 +243,20 @@ static void pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, int type, int c
case VT_BSTR:
convert_to_string_ex(&pval_arg);
- unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage);
+ unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
V_BSTR(var_arg) = SysAllocString(unicode_str);
efree(unicode_str);
break;
case VT_DECIMAL:
convert_to_string_ex(&pval_arg);
- unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage);
+ unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
VarDecFromStr(unicode_str, LOCALE_SYSTEM_DEFAULT, 0, &V_DECIMAL(var_arg));
break;
case VT_DECIMAL|VT_BYREF:
convert_to_string_ex(&pval_arg);
- unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage);
+ unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
VarDecFromStr(unicode_str, LOCALE_SYSTEM_DEFAULT, 0, V_DECIMALREF(var_arg));
break;
@@ -349,7 +343,7 @@ static void pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, int type, int c
case VT_BSTR|VT_BYREF:
convert_to_string(pval_arg);
V_BSTRREF(var_arg) = (BSTR FAR*) emalloc(sizeof(BSTR FAR*));
- unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage);
+ unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
*V_BSTRREF(var_arg) = SysAllocString(unicode_str);
efree(unicode_str);
break;
@@ -465,7 +459,7 @@ static void pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, int type, int c
}
}
-PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage)
+PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage TSRMLS_DC)
{
/* Changed the function to return a value for recursive error testing */
/* Existing calls will be unaffected by the change - so it */
@@ -543,7 +537,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
/* If SafeArrayGetElement proclaims to allocate */
/* memory for a BSTR, so the recursive call frees */
/* the string correctly */
- if (FAILURE == php_variant_to_pval(&vv, element, persistent, codepage))
+ if (FAILURE == php_variant_to_pval(&vv, element, persistent, codepage TSRMLS_CC))
{
/* Error occurred setting up array element */
/* Error was displayed by the recursive call */
@@ -633,7 +627,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
switch(VarBstrFromDec(&V_DECIMAL(var_arg), LOCALE_SYSTEM_DEFAULT, 0, &unicode_str))
{
case S_OK:
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(unicode_str, &Z_STRLEN_P(pval_arg), persistent, codepage);
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(unicode_str, &Z_STRLEN_P(pval_arg), persistent, codepage TSRMLS_CC);
Z_TYPE_P(pval_arg) = IS_STRING;
break;
@@ -676,18 +670,18 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
break;
case VT_VARIANT:
- php_variant_to_pval(V_VARIANTREF(var_arg), pval_arg, persistent, codepage);
+ php_variant_to_pval(V_VARIANTREF(var_arg), pval_arg, persistent, codepage TSRMLS_CC);
break;
case VT_BSTR:
if(V_ISBYREF(var_arg))
{
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage);
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage TSRMLS_CC);
efree(V_BSTRREF(var_arg));
}
else
{
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage);
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage TSRMLS_CC);
}
Z_TYPE_P(pval_arg) = IS_STRING;
@@ -737,7 +731,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
{
char *error_message;
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Unable to obtain IDispatch interface: %s", error_message);
LocalFree(error_message);
@@ -757,7 +751,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
else
{
ALLOC_COM(obj);
- php_COM_set(obj, &V_DISPATCH(var_arg), TRUE);
+ php_COM_set(obj, &V_DISPATCH(var_arg), TRUE TSRMLS_CC);
ZVAL_COM(pval_arg, obj);
}
@@ -828,7 +822,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
return ret;
}
-PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage)
+PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage TSRMLS_DC)
{
OLECHAR *unicode_str;
@@ -860,7 +854,7 @@ PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage)
return unicode_str;
}
-PHPAPI char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage)
+PHPAPI char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage TSRMLS_DC)
{
char *C_str;
uint length = 0;
diff --git a/ext/com/conversion.h b/ext/com/conversion.h
index ab084baecf..a55d66c57b 100644
--- a/ext/com/conversion.h
+++ b/ext/com/conversion.h
@@ -3,12 +3,11 @@
BEGIN_EXTERN_C()
-extern void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg, int codepage);
-extern void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type, int codepage);
-extern int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage);
-
-extern OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage);
-extern char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage);
+PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg, int codepage TSRMLS_DC);
+PHPAPI void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type, int codepage TSRMLS_DC);
+PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage TSRMLS_DC);
+PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage TSRMLS_DC);
+PHPAPI char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage TSRMLS_DC);
END_EXTERN_C()
diff --git a/ext/com/php_COM.h b/ext/com/php_COM.h
index 0bb123161a..da3087eaba 100644
--- a/ext/com/php_COM.h
+++ b/ext/com/php_COM.h
@@ -10,23 +10,30 @@ BEGIN_EXTERN_C()
PHP_MINIT_FUNCTION(COM);
PHP_MSHUTDOWN_FUNCTION(COM);
-PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult);
-PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId);
-PHPAPI HRESULT php_COM_release(comval *obj);
-PHPAPI HRESULT php_COM_addref(comval *obj);
-PHPAPI HRESULT php_COM_destruct(comval *obj);
-PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* pDisp, int cleanup);
-PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup);
-
-int php_COM_get_le_comval();
+PHP_FUNCTION(com_load);
+PHP_FUNCTION(com_invoke);
+PHP_FUNCTION(com_addref);
+PHP_FUNCTION(com_release);
+PHP_FUNCTION(com_propget);
+PHP_FUNCTION(com_propput);
+PHP_FUNCTION(com_load_typelib);
+PHP_FUNCTION(com_isenum);
+
+PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult TSRMLS_DC);
+PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId TSRMLS_DC);
+PHPAPI HRESULT php_COM_release(comval *obj TSRMLS_DC);
+PHPAPI HRESULT php_COM_addref(comval *obj TSRMLS_DC);
+PHPAPI HRESULT php_COM_destruct(comval *obj TSRMLS_DC);
+PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* pDisp, int cleanup TSRMLS_DC);
+PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup TSRMLS_DC);
+PHPAPI char *php_COM_error_message(HRESULT hr TSRMLS_DC);
+PHPAPI int php_COM_get_le_comval();
+PHPAPI int php_COM_set_property_handler(zend_property_reference *property_reference, pval *value);
+PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_reference);
+PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference);
zend_module_entry COM_module_entry;
-zend_class_entry com_class_entry;
-
-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);
+zend_class_entry COM_class_entry;
#ifdef DEBUG
extern int resourcecounter;
diff --git a/ext/com/php_VARIANT.h b/ext/com/php_VARIANT.h
index 5e6d51f821..2447d066ad 100644
--- a/ext/com/php_VARIANT.h
+++ b/ext/com/php_VARIANT.h
@@ -3,14 +3,19 @@
#if PHP_WIN32
-#include "variant.h"
+BEGIN_EXTERN_C()
-extern int php_VARIANT_get_le_variant();
+#include "conversion.h"
+#include "variant.h"
PHP_MINIT_FUNCTION(VARIANT);
PHP_MSHUTDOWN_FUNCTION(VARIANT);
-extern zend_module_entry VARIANT_module_entry;
+PHPAPI int php_VARIANT_get_le_variant();
+
+zend_module_entry VARIANT_module_entry;
+
+END_EXTERN_C()
#define VARIANT_module_ptr &VARIANT_module_entry
diff --git a/ext/rpc/com/com_wrapper.c b/ext/rpc/com/com_wrapper.c
index f11c67805a..2ea7540d3c 100644
--- a/ext/rpc/com/com_wrapper.c
+++ b/ext/rpc/com/com_wrapper.c
@@ -61,32 +61,14 @@
#include "php.h"
#include "php_ini.h"
-#include "com.h"
-#include "conversion.h"
+#include "php_COM.h"
#include "php_VARIANT.h"
-zend_class_entry com_class_entry;
-
-PHP_FUNCTION(com_load);
-PHP_FUNCTION(com_invoke);
-PHP_FUNCTION(com_addref);
-PHP_FUNCTION(com_release);
-PHP_FUNCTION(com_propget);
-PHP_FUNCTION(com_propput);
-PHP_FUNCTION(com_load_typelib);
-PHP_FUNCTION(com_isenum);
-
-PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult);
-PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId);
-PHPAPI HRESULT php_COM_release(comval *obj);
-PHPAPI HRESULT php_COM_addref(comval *obj);
-PHPAPI HRESULT php_COM_destruct(comval *obj);
-PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* pDisp, int cleanup);
-PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup);
-
-PHPAPI int php_COM_get_le_comval();
-static ITypeLib *php_COM_find_typelib(char *search_string, int mode);
-static int php_COM_load_typelib(ITypeLib *TypeLib, int mode);
+static ITypeLib *php_COM_find_typelib(char *search_string, int mode TSRMLS_DC);
+static int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC);
+static int do_COM_offget(VARIANT *result, comval *array, pval *property, int cleanup TSRMLS_DC);
+static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property, int cleanup TSRMLS_DC);
+static void php_register_COM_class(TSRMLS_D);
static int le_comval;
static int codepage;
@@ -120,7 +102,7 @@ static PHP_MINFO_FUNCTION(COM)
DISPLAY_INI_ENTRIES();
}
-PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult)
+PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult TSRMLS_DC)
{
HRESULT hr;
int failed = FALSE;
@@ -162,7 +144,7 @@ PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DIS
}
}
-PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId)
+PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId TSRMLS_DC)
{
HRESULT hr;
@@ -201,7 +183,7 @@ PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames
}
}
-PHPAPI HRESULT php_COM_release(comval *obj)
+PHPAPI HRESULT php_COM_release(comval *obj TSRMLS_DC)
{
HRESULT hr;
@@ -226,7 +208,7 @@ PHPAPI HRESULT php_COM_release(comval *obj)
return obj->refcount;
}
-PHPAPI HRESULT php_COM_addref(comval *obj)
+PHPAPI HRESULT php_COM_addref(comval *obj TSRMLS_DC)
{
if(C_ISREFD(obj))
{
@@ -236,7 +218,7 @@ PHPAPI HRESULT php_COM_addref(comval *obj)
return obj->refcount;
}
-PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* ppDisp, int cleanup)
+PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* ppDisp, int cleanup TSRMLS_DC)
{
HRESULT hr = 1;
DISPPARAMS dispparams;
@@ -290,7 +272,7 @@ PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* ppDisp, int cleanup)
return hr;
}
-PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup)
+PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup TSRMLS_DC)
{
HRESULT hr;
@@ -325,7 +307,7 @@ PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup)
return hr;
}
-PHPAPI char *php_COM_error_message(HRESULT hr)
+PHPAPI char *php_COM_error_message(HRESULT hr TSRMLS_DC)
{
void *pMsgBuf;
@@ -341,35 +323,35 @@ PHPAPI char *php_COM_error_message(HRESULT hr)
return pMsgBuf;
}
-static char *php_string_from_clsid(const CLSID *clsid)
+static char *php_string_from_clsid(const CLSID *clsid TSRMLS_DC)
{
LPOLESTR ole_clsid;
char *clsid_str;
StringFromCLSID(clsid, &ole_clsid);
- clsid_str = php_OLECHAR_to_char(ole_clsid, NULL, 0, codepage);
+ clsid_str = php_OLECHAR_to_char(ole_clsid, NULL, 0, codepage TSRMLS_CC);
LocalFree(ole_clsid);
return clsid_str;
}
-PHPAPI HRESULT php_COM_destruct(comval *obj)
+PHPAPI HRESULT php_COM_destruct(comval *obj TSRMLS_DC)
{
HRESULT hr = S_OK;
if(C_ISREFD(obj))
{
C_REFCOUNT(obj) = 1;
- hr = php_COM_release(obj);
+ hr = php_COM_release(obj TSRMLS_CC);
}
efree(obj);
return hr;
}
-static void php_comval_destructor(zend_rsrc_list_entry *rsrc)
+static void php_comval_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
- php_COM_destruct(rsrc->ptr);
+ php_COM_destruct(rsrc->ptr TSRMLS_CC);
}
static PHP_INI_MH(OnTypelibFileChange)
@@ -436,9 +418,9 @@ static PHP_INI_MH(OnTypelibFileChange)
printf("\rLoading %-60s\r", typelib_name);
}
- if((pTL = php_COM_find_typelib(typelib_name, mode)) != NULL)
+ if((pTL = php_COM_find_typelib(typelib_name, mode TSRMLS_CC)) != NULL)
{
- php_COM_load_typelib(pTL, mode);
+ php_COM_load_typelib(pTL, mode TSRMLS_CC);
pTL->lpVtbl->Release(pTL);
}
}
@@ -533,7 +515,7 @@ PHP_FUNCTION(com_load)
ALLOC_COM(obj);
convert_to_string_ex(&module_name);
- ProgID = php_char_to_OLECHAR(Z_STRVAL_P(module_name), Z_STRLEN_P(module_name), codepage);
+ ProgID = php_char_to_OLECHAR(Z_STRVAL_P(module_name), Z_STRLEN_P(module_name), codepage TSRMLS_CC);
/* obtain CLSID */
if(FAILED(CLSIDFromString(ProgID, &clsid)))
@@ -566,8 +548,8 @@ PHP_FUNCTION(com_load)
if(FAILED(hr))
{
- php_COM_destruct(obj);
- error_message = php_COM_error_message(hr);
+ php_COM_destruct(obj TSRMLS_CC);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Invalid ProgID or Moniker: %s\n", error_message);
LocalFree(error_message);
RETURN_FALSE;
@@ -588,7 +570,7 @@ PHP_FUNCTION(com_load)
server_info.dwReserved1=0;
server_info.dwReserved2=0;
- server_info.pwszName = php_char_to_OLECHAR(Z_STRVAL_P(server_name), Z_STRLEN_P(server_name), codepage);
+ server_info.pwszName = php_char_to_OLECHAR(Z_STRVAL_P(server_name), Z_STRLEN_P(server_name), codepage TSRMLS_CC);
server_info.pAuthInfo=NULL;
pResults.pIID = &IID_IDispatch;
@@ -605,17 +587,17 @@ PHP_FUNCTION(com_load)
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
- clsid_str = php_string_from_clsid(&clsid);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
+ clsid_str = php_string_from_clsid(&clsid TSRMLS_CC);
php_error(E_WARNING,"Unable to obtain IDispatch interface for CLSID %s: %s",clsid_str,error_message);
LocalFree(error_message);
efree(clsid_str);
- php_COM_destruct(obj);
+ php_COM_destruct(obj TSRMLS_CC);
RETURN_FALSE;
}
}
- php_COM_set(obj, &C_DISPATCH(obj), TRUE);
+ php_COM_set(obj, &C_DISPATCH(obj), TRUE TSRMLS_CC);
if(INI_INT("com.autoregister_casesensitive"))
{
@@ -630,7 +612,7 @@ PHP_FUNCTION(com_load)
if(C_TYPEINFO_VT(obj)->GetContainingTypeLib(C_TYPEINFO(obj), &pTL, &idx) == S_OK)
{
- php_COM_load_typelib(pTL, mode);
+ php_COM_load_typelib(pTL, mode TSRMLS_CC);
pTL->lpVtbl->Release(pTL);
}
}
@@ -641,13 +623,13 @@ PHP_FUNCTION(com_load)
{
ITypeLib *pTL;
- if((pTL = php_COM_find_typelib(Z_STRVAL_P(typelib), mode)) != NULL)
+ if((pTL = php_COM_find_typelib(Z_STRVAL_P(typelib), mode TSRMLS_CC)) != NULL)
{
C_HASTLIB(obj) = SUCCEEDED(pTL->lpVtbl->GetTypeInfo(pTL, 0, &C_TYPEINFO(obj)));
/* idx 0 should deliver the ITypeInfo for the IDispatch Interface */
if(INI_INT("com.autoregister_typelib"))
{
- php_COM_load_typelib(pTL, mode);
+ php_COM_load_typelib(pTL, mode TSRMLS_CC);
}
pTL->lpVtbl->Release(pTL);
}
@@ -659,7 +641,7 @@ PHP_FUNCTION(com_load)
/* }}} */
-int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **arguments, int arg_count)
+int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **arguments, int arg_count TSRMLS_DC)
{
DISPID dispid;
HRESULT hr;
@@ -713,7 +695,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
if(FAILED(hr = C_ENUMVARIANT_VT(obj)->Next(C_ENUMVARIANT(obj), count, pSA->pvData, &count)))
{
- char *error_message = php_COM_error_message(hr);
+ char *error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"IEnumVariant::Next() failed: %s\n", error_message);
efree(error_message);
VariantClear(var_result);
@@ -725,7 +707,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
rgsabound[0].cElements = count;
if(FAILED(SafeArrayRedim(pSA, rgsabound)))
{
- char *error_message = php_COM_error_message(hr);
+ char *error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"IEnumVariant::Next() failed: %s\n", error_message);
efree(error_message);
VariantClear(var_result);
@@ -739,7 +721,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
{
if(FAILED(hr = C_ENUMVARIANT_VT(obj)->Reset(C_ENUMVARIANT(obj))))
{
- char *error_message = php_COM_error_message(hr);
+ char *error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"IEnumVariant::Next() failed: %s\n", error_message);
efree(error_message);
return FAILURE;
@@ -767,7 +749,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
}
if(FAILED(hr = C_ENUMVARIANT_VT(obj)->Skip(C_ENUMVARIANT(obj), count)))
{
- char *error_message = php_COM_error_message(hr);
+ char *error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"IEnumVariant::Next() failed: %s\n", error_message);
efree(error_message);
return FAILURE;
@@ -777,13 +759,13 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
}
else
{
- funcname = php_char_to_OLECHAR(Z_STRVAL_P(function_name), Z_STRLEN_P(function_name), codepage);
+ funcname = php_char_to_OLECHAR(Z_STRVAL_P(function_name), Z_STRLEN_P(function_name), codepage TSRMLS_CC);
- hr = php_COM_get_ids_of_names(obj, &funcname, &dispid);
+ hr = php_COM_get_ids_of_names(obj, &funcname, &dispid TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Unable to lookup %s: %s\n", Z_STRVAL_P(function_name), error_message);
LocalFree(error_message);
efree(funcname);
@@ -795,7 +777,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
for(current_arg=0; current_arg<arg_count; current_arg++)
{
current_variant = arg_count - current_arg - 1;
- php_pval_to_variant(arguments[current_arg], &variant_args[current_variant], codepage);
+ php_pval_to_variant(arguments[current_arg], &variant_args[current_variant], codepage TSRMLS_CC);
}
dispparams.rgvarg = variant_args;
@@ -803,7 +785,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
dispparams.cArgs = arg_count;
dispparams.cNamedArgs = 0;
- hr = php_COM_invoke(obj, dispid, DISPATCH_METHOD|DISPATCH_PROPERTYGET, &dispparams, var_result);
+ hr = php_COM_invoke(obj, dispid, DISPATCH_METHOD|DISPATCH_PROPERTYGET, &dispparams, var_result TSRMLS_CC);
efree(funcname);
for (current_arg=0;current_arg<arg_count;current_arg++)
@@ -814,7 +796,7 @@ int do_COM_invoke(comval *obj, pval *function_name, VARIANT *var_result, pval **
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Invoke() failed: %s\n", error_message);
LocalFree(error_message);
return FAILURE;
@@ -862,7 +844,7 @@ PHP_FUNCTION(com_invoke)
ALLOC_VARIANT(var_result);
- if(do_COM_invoke(obj, function_name, var_result, arguments+2, arg_count-2)==FAILURE)
+ if(do_COM_invoke(obj, function_name, var_result, arguments+2, arg_count-2 TSRMLS_CC)==FAILURE)
{
FREE_VARIANT(var_result);
efree(arguments);
@@ -870,7 +852,7 @@ PHP_FUNCTION(com_invoke)
RETURN_FALSE;
}
- php_variant_to_pval(var_result, return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, return_value, FALSE, codepage TSRMLS_CC);
FREE_VARIANT(var_result);
efree(arguments);
@@ -905,7 +887,7 @@ PHP_FUNCTION(com_release)
RETURN_FALSE;
}
- RETURN_LONG(php_COM_release(obj))
+ RETURN_LONG(php_COM_release(obj TSRMLS_CC))
}
/* }}} */
@@ -937,26 +919,26 @@ PHP_FUNCTION(com_addref)
RETURN_FALSE;
}
- RETURN_LONG(php_COM_addref(obj));
+ RETURN_LONG(php_COM_addref(obj TSRMLS_CC));
}
/* }}} */
-static int do_COM_offget(VARIANT *result, comval *array, pval *property, int cleanup)
+static int do_COM_offget(VARIANT *result, comval *array, pval *property, int cleanup TSRMLS_DC)
{
pval function_name;
int retval;
ZVAL_STRINGL(&function_name, "Item", 4, 0);
- retval = do_COM_invoke(array, &function_name, result, &property, 1);
+ retval = do_COM_invoke(array, &function_name, result, &property, 1 TSRMLS_CC);
if(cleanup)
{
- php_COM_destruct(array);
+ php_COM_destruct(array TSRMLS_CC);
}
return retval;
}
-static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property, int cleanup)
+static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property, int cleanup TSRMLS_DC)
{
DISPID dispid;
HRESULT hr;
@@ -966,19 +948,19 @@ static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property,
/* obtain property handler */
- propname = php_char_to_OLECHAR(Z_STRVAL_P(arg_property), Z_STRLEN_P(arg_property), codepage);
+ propname = php_char_to_OLECHAR(Z_STRVAL_P(arg_property), Z_STRLEN_P(arg_property), codepage TSRMLS_CC);
- hr = php_COM_get_ids_of_names(obj, &propname, &dispid);
+ hr = php_COM_get_ids_of_names(obj, &propname, &dispid TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Unable to lookup %s: %s\n", Z_STRVAL_P(arg_property), error_message);
LocalFree(error_message);
efree(propname);
if(cleanup)
{
- php_COM_destruct(obj);
+ php_COM_destruct(obj TSRMLS_CC);
}
return FAILURE;
}
@@ -986,17 +968,17 @@ static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property,
dispparams.cArgs = 0;
dispparams.cNamedArgs = 0;
- hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYGET, &dispparams, var_result);
+ hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYGET, &dispparams, var_result TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"PropGet() failed: %s\n", error_message);
LocalFree(error_message);
efree(propname);
if(cleanup)
{
- php_COM_destruct(obj);
+ php_COM_destruct(obj TSRMLS_CC);
}
return FAILURE;
}
@@ -1004,13 +986,13 @@ static int do_COM_propget(VARIANT *var_result, comval *obj, pval *arg_property,
efree(propname);
if(cleanup)
{
- php_COM_destruct(obj);
+ php_COM_destruct(obj TSRMLS_CC);
}
return SUCCESS;
}
-static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property, pval *value)
+static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property, pval *value TSRMLS_DC)
{
DISPID dispid;
HRESULT hr;
@@ -1020,18 +1002,17 @@ static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property,
DISPPARAMS dispparams;
DISPID mydispid = DISPID_PROPERTYPUT;
-
ALLOC_VARIANT(var_result);
ALLOC_VARIANT(new_value);
/* obtain property handler */
- propname = php_char_to_OLECHAR(Z_STRVAL_P(arg_property), Z_STRLEN_P(arg_property), codepage);
+ propname = php_char_to_OLECHAR(Z_STRVAL_P(arg_property), Z_STRLEN_P(arg_property), codepage TSRMLS_CC);
- hr = php_COM_get_ids_of_names(obj, &propname, &dispid);
+ hr = php_COM_get_ids_of_names(obj, &propname, &dispid TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Unable to lookup %s: %s\n", Z_STRVAL_P(arg_property), error_message);
LocalFree(error_message);
efree(propname);
@@ -1042,17 +1023,17 @@ static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property,
RETURN_FALSE;
}
- php_pval_to_variant(value, new_value, codepage);
+ php_pval_to_variant(value, new_value, codepage TSRMLS_CC);
dispparams.rgvarg = new_value;
dispparams.rgdispidNamedArgs = &mydispid;
dispparams.cArgs = 1;
dispparams.cNamedArgs = 1;
- hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYPUT, &dispparams, NULL);
+ hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYPUT, &dispparams, NULL TSRMLS_CC);
if(FAILED(hr))
{
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"PropPut() failed: %s\n", error_message);
LocalFree(error_message);
efree(propname);
@@ -1066,11 +1047,11 @@ static void do_COM_propput(pval *return_value, comval *obj, pval *arg_property,
dispparams.cArgs = 0;
dispparams.cNamedArgs = 0;
- hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYGET, &dispparams, var_result);
+ hr = php_COM_invoke(obj, dispid, DISPATCH_PROPERTYGET, &dispparams, var_result TSRMLS_CC);
if(SUCCEEDED(hr))
{
- php_variant_to_pval(var_result, return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, return_value, FALSE, codepage TSRMLS_CC);
}
else
{
@@ -1110,13 +1091,13 @@ PHP_FUNCTION(com_propget)
ALLOC_VARIANT(var_result);
- if(do_COM_propget(var_result, obj, arg_property, FALSE) == FAILURE)
+ if(do_COM_propget(var_result, obj, arg_property, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
RETURN_FALSE;
}
- php_variant_to_pval(var_result, return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, return_value, FALSE, codepage TSRMLS_CC);
FREE_VARIANT(var_result);
}
@@ -1146,7 +1127,7 @@ PHP_FUNCTION(com_propput)
}
convert_to_string_ex(&arg_property);
- do_COM_propput(return_value, obj, arg_property, arg_value);
+ do_COM_propput(return_value, obj, arg_property, arg_value TSRMLS_CC);
}
/* }}} */
@@ -1175,8 +1156,8 @@ PHP_FUNCTION(com_load_typelib)
}
convert_to_string_ex(&arg_typelib);
- pTL = php_COM_find_typelib(Z_STRVAL_P(arg_typelib), mode);
- if(php_COM_load_typelib(pTL, mode) == SUCCESS)
+ pTL = php_COM_find_typelib(Z_STRVAL_P(arg_typelib), mode TSRMLS_CC);
+ if(php_COM_load_typelib(pTL, mode TSRMLS_CC) == SUCCESS)
{
pTL->lpVtbl->Release(pTL);
RETURN_TRUE;
@@ -1220,7 +1201,7 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
switch(overloaded_property->type)
{
case OE_IS_ARRAY:
- if(do_COM_offget(var_result, obj, &overloaded_property->element, FALSE) == FAILURE)
+ if(do_COM_offget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
@@ -1230,7 +1211,7 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
break;
case OE_IS_OBJECT:
- if(do_COM_propget(var_result, obj, &overloaded_property->element, FALSE) == FAILURE)
+ if(do_COM_propget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
@@ -1269,11 +1250,11 @@ PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_refer
}
obj = obj_prop;
- php_COM_set(obj, &V_DISPATCH(var_result), TRUE);
+ php_COM_set(obj, &V_DISPATCH(var_result), TRUE TSRMLS_CC);
}
else
{
- php_variant_to_pval(var_result, &return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, &return_value, FALSE, codepage TSRMLS_CC);
FREE_COM(obj_prop);
obj_prop = NULL;
@@ -1317,7 +1298,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
switch(overloaded_property->type)
{
case OE_IS_ARRAY:
- if(do_COM_offget(var_result, obj, &overloaded_property->element, FALSE) == FAILURE)
+ if(do_COM_offget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
@@ -1327,7 +1308,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
break;
case OE_IS_OBJECT:
- if(do_COM_propget(var_result, obj, &overloaded_property->element, FALSE) == FAILURE)
+ if(do_COM_propget(var_result, obj, &overloaded_property->element, FALSE TSRMLS_CC) == FAILURE)
{
FREE_VARIANT(var_result);
FREE_COM(obj_prop);
@@ -1353,7 +1334,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
}
obj = obj_prop;
- php_COM_set(obj, &V_DISPATCH(var_result), TRUE);
+ php_COM_set(obj, &V_DISPATCH(var_result), TRUE TSRMLS_CC);
}
else
{
@@ -1369,7 +1350,7 @@ PHPAPI int php_COM_set_property_handler(zend_property_reference *property_refere
FREE_VARIANT(var_result);
overloaded_property = (zend_overloaded_element *) element->data;
- do_COM_propput(&result, obj, &overloaded_property->element, value);
+ do_COM_propput(&result, obj, &overloaded_property->element, value TSRMLS_CC);
FREE_COM(obj_prop);
pval_destructor(&overloaded_property->element);
@@ -1429,12 +1410,12 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
if(zend_llist_count(property_reference->elements_list)==1
&& !strcmp(Z_STRVAL_P(&function_name->element), "release"))
{
- RETVAL_LONG(php_COM_release(obj));
+ RETVAL_LONG(php_COM_release(obj TSRMLS_CC));
}
else if(zend_llist_count(property_reference->elements_list)==1
&& !strcmp(Z_STRVAL_P(&function_name->element), "addref"))
{
- RETVAL_LONG(php_COM_addref(obj));
+ RETVAL_LONG(php_COM_addref(obj TSRMLS_CC));
}
else
{
@@ -1447,13 +1428,13 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
arguments = (pval **) emalloc(sizeof(pval *)*arg_count);
getParametersArray(ht, arg_count, arguments);
- if(do_COM_invoke(obj , &function_name->element, var_result, arguments, arg_count) == FAILURE)
+ if(do_COM_invoke(obj , &function_name->element, var_result, arguments, arg_count TSRMLS_CC) == FAILURE)
{
RETVAL_FALSE;
}
else
{
- php_variant_to_pval(var_result, return_value, FALSE, codepage);
+ php_variant_to_pval(var_result, return_value, FALSE, codepage TSRMLS_CC);
}
FREE_VARIANT(var_result);
@@ -1467,7 +1448,7 @@ PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_pro
pval_destructor(&function_name->element);
}
-static ITypeLib *php_COM_find_typelib(char *search_string, int mode)
+static ITypeLib *php_COM_find_typelib(char *search_string, int mode TSRMLS_DC)
{
ITypeLib *TypeLib = NULL;
char *strtok_buf, *major, *minor;
@@ -1488,7 +1469,7 @@ static ITypeLib *php_COM_find_typelib(char *search_string, int mode)
major = php_strtok_r(NULL, ",", &strtok_buf);
minor = php_strtok_r(NULL, ",", &strtok_buf);
- p = php_char_to_OLECHAR(search_string, strlen(search_string), codepage);
+ p = php_char_to_OLECHAR(search_string, strlen(search_string), codepage TSRMLS_CC);
/* Is the string a GUID ? */
if(!FAILED(CLSIDFromString(p, &clsid)))
@@ -1627,7 +1608,7 @@ static ITypeLib *php_COM_find_typelib(char *search_string, int mode)
str = emalloc(strlen(keyname)+strlen(version)+20); /* 18 == safety, 2 == extra comma and \0 */
sprintf(str, "%s,%d,%d", keyname, major, minor);
efree(keyname);
- TypeLib = php_COM_find_typelib(str, mode);
+ TypeLib = php_COM_find_typelib(str, mode TSRMLS_CC);
efree(str);
/* This is probbaly much harder to read and follow */
/* But it is MUCH more effiecient than trying to */
@@ -1652,12 +1633,11 @@ static ITypeLib *php_COM_find_typelib(char *search_string, int mode)
return TypeLib;
}
-static int php_COM_load_typelib(ITypeLib *TypeLib, int mode)
+static int php_COM_load_typelib(ITypeLib *TypeLib, int mode TSRMLS_DC)
{
ITypeComp *TypeComp;
int i;
int interfaces;
- TSRMLS_FETCH();
if(NULL == TypeLib)
{
@@ -1704,7 +1684,7 @@ static int php_COM_load_typelib(ITypeLib *TypeLib, int mode)
j++;
continue;
}
- ids = php_OLECHAR_to_char(bstr_ids, NULL, 1, codepage);
+ ids = php_OLECHAR_to_char(bstr_ids, NULL, 1, codepage TSRMLS_CC);
SysFreeString(bstr_ids);
c.name_len = strlen(ids)+1;
c.name = ids;
@@ -1721,7 +1701,7 @@ static int php_COM_load_typelib(ITypeLib *TypeLib, int mode)
continue;
}
- php_variant_to_pval(pVarDesc->lpvarValue, &c.value, FALSE, codepage);
+ php_variant_to_pval(pVarDesc->lpvarValue, &c.value, FALSE, codepage TSRMLS_CC);
c.flags = mode;
/* Before registering the contsnt, let's see if we can find it */
@@ -1766,23 +1746,21 @@ PHP_FUNCTION(com_isenum)
}
/* }}} */
-void php_register_COM_class()
+static void php_register_COM_class(TSRMLS_D)
{
- TSRMLS_FETCH();
-
- INIT_OVERLOADED_CLASS_ENTRY(com_class_entry, "COM", NULL,
+ INIT_OVERLOADED_CLASS_ENTRY(COM_class_entry, "COM", NULL,
php_COM_call_function_handler,
php_COM_get_property_handler,
php_COM_set_property_handler);
- zend_register_internal_class(&com_class_entry TSRMLS_CC);
+ zend_register_internal_class(&COM_class_entry TSRMLS_CC);
}
PHP_MINIT_FUNCTION(COM)
{
CoInitialize(NULL);
le_comval = zend_register_list_destructors_ex(php_comval_destructor, NULL, "COM", module_number);
- php_register_COM_class();
+ php_register_COM_class(TSRMLS_C);
REGISTER_INI_ENTRIES();
return SUCCESS;
}
diff --git a/ext/rpc/com/com_wrapper.h b/ext/rpc/com/com_wrapper.h
index 700526c11f..1e36d3c567 100644
--- a/ext/rpc/com/com_wrapper.h
+++ b/ext/rpc/com/com_wrapper.h
@@ -3,7 +3,9 @@
#if PHP_WIN32
-#include "oleauto.h"
+BEGIN_EXTERN_C()
+
+#include <oleauto.h>
typedef struct comval_ {
#ifdef _DEBUG
@@ -19,29 +21,31 @@ typedef struct comval_ {
} i;
} comval;
-#define ZVAL_COM(z,o) { \
- zval *handle; \
- \
- /* OBJECTS_FIXME */ \
- Z_TYPE_P(z) = IS_OBJECT; \
- Z_OBJCE_P(z) = &com_class_entry; \
- \
- ALLOC_HASHTABLE(Z_OBJPROP_P(z)); \
- zend_hash_init(Z_OBJPROP_P(z), 0, NULL, ZVAL_PTR_DTOR, 0); \
- \
- ALLOC_ZVAL(handle); \
- INIT_PZVAL(handle); \
- ZVAL_LONG(handle, zend_list_insert((o), IS_COM)); \
- \
- zval_copy_ctor(handle); \
+END_EXTERN_C()
+
+#define ZVAL_COM(z,o) { \
+ zval *handle; \
+ \
+ /* OBJECTS_FIXME */ \
+ Z_TYPE_P(z) = IS_OBJECT; \
+ Z_OBJCE_P(z) = &COM_class_entry; \
+ \
+ ALLOC_HASHTABLE(Z_OBJPROP_P(z)); \
+ zend_hash_init(Z_OBJPROP_P(z), 0, NULL, ZVAL_PTR_DTOR, 0); \
+ \
+ ALLOC_ZVAL(handle); \
+ INIT_PZVAL(handle); \
+ ZVAL_LONG(handle, zend_list_insert((o), IS_COM)); \
+ \
+ zval_copy_ctor(handle); \
zend_hash_index_update(Z_OBJPROP_P(z), 0, &handle, sizeof(zval *), NULL); \
}
#define RETVAL_COM(o) ZVAL_COM(&return_value, o);
-#define RETURN_COM(o) RETVAL_COM(o) \
+#define RETURN_COM(o) RETVAL_COM(o) \
return;
-#define ALLOC_COM(z) (z) = (comval *) emalloc(sizeof(comval)); \
+#define ALLOC_COM(z) (z) = (comval *) emalloc(sizeof(comval)); \
C_REFCOUNT(z) = 0;
#define FREE_COM(z) efree(z);
diff --git a/ext/rpc/com/conversion.c b/ext/rpc/com/conversion.c
index 54f6f033d0..21dace5c18 100644
--- a/ext/rpc/com/conversion.c
+++ b/ext/rpc/com/conversion.c
@@ -37,12 +37,6 @@
/* prototypes */
-PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg, int codepage TSRMLS_DC);
-PHPAPI void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type, int codepage TSRMLS_DC);
-PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage);
-PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage);
-PHPAPI char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage);
-
static void pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, int type, int codepage TSRMLS_DC);
static void comval_to_variant(pval *pval_arg, VARIANT *var_arg TSRMLS_DC);
@@ -249,20 +243,20 @@ static void pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, int type, int c
case VT_BSTR:
convert_to_string_ex(&pval_arg);
- unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage);
+ unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
V_BSTR(var_arg) = SysAllocString(unicode_str);
efree(unicode_str);
break;
case VT_DECIMAL:
convert_to_string_ex(&pval_arg);
- unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage);
+ unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
VarDecFromStr(unicode_str, LOCALE_SYSTEM_DEFAULT, 0, &V_DECIMAL(var_arg));
break;
case VT_DECIMAL|VT_BYREF:
convert_to_string_ex(&pval_arg);
- unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage);
+ unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
VarDecFromStr(unicode_str, LOCALE_SYSTEM_DEFAULT, 0, V_DECIMALREF(var_arg));
break;
@@ -349,7 +343,7 @@ static void pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, int type, int c
case VT_BSTR|VT_BYREF:
convert_to_string(pval_arg);
V_BSTRREF(var_arg) = (BSTR FAR*) emalloc(sizeof(BSTR FAR*));
- unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage);
+ unicode_str = php_char_to_OLECHAR(Z_STRVAL_P(pval_arg), Z_STRLEN_P(pval_arg), codepage TSRMLS_CC);
*V_BSTRREF(var_arg) = SysAllocString(unicode_str);
efree(unicode_str);
break;
@@ -465,7 +459,7 @@ static void pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, int type, int c
}
}
-PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage)
+PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage TSRMLS_DC)
{
/* Changed the function to return a value for recursive error testing */
/* Existing calls will be unaffected by the change - so it */
@@ -543,7 +537,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
/* If SafeArrayGetElement proclaims to allocate */
/* memory for a BSTR, so the recursive call frees */
/* the string correctly */
- if (FAILURE == php_variant_to_pval(&vv, element, persistent, codepage))
+ if (FAILURE == php_variant_to_pval(&vv, element, persistent, codepage TSRMLS_CC))
{
/* Error occurred setting up array element */
/* Error was displayed by the recursive call */
@@ -633,7 +627,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
switch(VarBstrFromDec(&V_DECIMAL(var_arg), LOCALE_SYSTEM_DEFAULT, 0, &unicode_str))
{
case S_OK:
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(unicode_str, &Z_STRLEN_P(pval_arg), persistent, codepage);
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(unicode_str, &Z_STRLEN_P(pval_arg), persistent, codepage TSRMLS_CC);
Z_TYPE_P(pval_arg) = IS_STRING;
break;
@@ -676,18 +670,18 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
break;
case VT_VARIANT:
- php_variant_to_pval(V_VARIANTREF(var_arg), pval_arg, persistent, codepage);
+ php_variant_to_pval(V_VARIANTREF(var_arg), pval_arg, persistent, codepage TSRMLS_CC);
break;
case VT_BSTR:
if(V_ISBYREF(var_arg))
{
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage);
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(*V_BSTRREF(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage TSRMLS_CC);
efree(V_BSTRREF(var_arg));
}
else
{
- Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage);
+ Z_STRVAL_P(pval_arg) = php_OLECHAR_to_char(V_BSTR(var_arg), &Z_STRLEN_P(pval_arg), persistent, codepage TSRMLS_CC);
}
Z_TYPE_P(pval_arg) = IS_STRING;
@@ -737,7 +731,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
{
char *error_message;
- error_message = php_COM_error_message(hr);
+ error_message = php_COM_error_message(hr TSRMLS_CC);
php_error(E_WARNING,"Unable to obtain IDispatch interface: %s", error_message);
LocalFree(error_message);
@@ -757,7 +751,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
else
{
ALLOC_COM(obj);
- php_COM_set(obj, &V_DISPATCH(var_arg), TRUE);
+ php_COM_set(obj, &V_DISPATCH(var_arg), TRUE TSRMLS_CC);
ZVAL_COM(pval_arg, obj);
}
@@ -828,7 +822,7 @@ PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent,
return ret;
}
-PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage)
+PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage TSRMLS_DC)
{
OLECHAR *unicode_str;
@@ -860,7 +854,7 @@ PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage)
return unicode_str;
}
-PHPAPI char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage)
+PHPAPI char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage TSRMLS_DC)
{
char *C_str;
uint length = 0;
diff --git a/ext/rpc/com/conversion.h b/ext/rpc/com/conversion.h
index ab084baecf..a55d66c57b 100644
--- a/ext/rpc/com/conversion.h
+++ b/ext/rpc/com/conversion.h
@@ -3,12 +3,11 @@
BEGIN_EXTERN_C()
-extern void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg, int codepage);
-extern void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type, int codepage);
-extern int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage);
-
-extern OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage);
-extern char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage);
+PHPAPI void php_pval_to_variant(pval *pval_arg, VARIANT *var_arg, int codepage TSRMLS_DC);
+PHPAPI void php_pval_to_variant_ex(pval *pval_arg, VARIANT *var_arg, pval *pval_type, int codepage TSRMLS_DC);
+PHPAPI int php_variant_to_pval(VARIANT *var_arg, pval *pval_arg, int persistent, int codepage TSRMLS_DC);
+PHPAPI OLECHAR *php_char_to_OLECHAR(char *C_str, uint strlen, int codepage TSRMLS_DC);
+PHPAPI char *php_OLECHAR_to_char(OLECHAR *unicode_str, uint *out_length, int persistent, int codepage TSRMLS_DC);
END_EXTERN_C()
diff --git a/ext/rpc/com/php_com.h b/ext/rpc/com/php_com.h
index 0bb123161a..da3087eaba 100644
--- a/ext/rpc/com/php_com.h
+++ b/ext/rpc/com/php_com.h
@@ -10,23 +10,30 @@ BEGIN_EXTERN_C()
PHP_MINIT_FUNCTION(COM);
PHP_MSHUTDOWN_FUNCTION(COM);
-PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult);
-PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId);
-PHPAPI HRESULT php_COM_release(comval *obj);
-PHPAPI HRESULT php_COM_addref(comval *obj);
-PHPAPI HRESULT php_COM_destruct(comval *obj);
-PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* pDisp, int cleanup);
-PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup);
-
-int php_COM_get_le_comval();
+PHP_FUNCTION(com_load);
+PHP_FUNCTION(com_invoke);
+PHP_FUNCTION(com_addref);
+PHP_FUNCTION(com_release);
+PHP_FUNCTION(com_propget);
+PHP_FUNCTION(com_propput);
+PHP_FUNCTION(com_load_typelib);
+PHP_FUNCTION(com_isenum);
+
+PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult TSRMLS_DC);
+PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR* rgDispId TSRMLS_DC);
+PHPAPI HRESULT php_COM_release(comval *obj TSRMLS_DC);
+PHPAPI HRESULT php_COM_addref(comval *obj TSRMLS_DC);
+PHPAPI HRESULT php_COM_destruct(comval *obj TSRMLS_DC);
+PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* FAR* pDisp, int cleanup TSRMLS_DC);
+PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup TSRMLS_DC);
+PHPAPI char *php_COM_error_message(HRESULT hr TSRMLS_DC);
+PHPAPI int php_COM_get_le_comval();
+PHPAPI int php_COM_set_property_handler(zend_property_reference *property_reference, pval *value);
+PHPAPI pval php_COM_get_property_handler(zend_property_reference *property_reference);
+PHPAPI void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference);
zend_module_entry COM_module_entry;
-zend_class_entry com_class_entry;
-
-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);
+zend_class_entry COM_class_entry;
#ifdef DEBUG
extern int resourcecounter;
diff --git a/ext/rpc/com/php_variant.h b/ext/rpc/com/php_variant.h
index 5e6d51f821..2447d066ad 100644
--- a/ext/rpc/com/php_variant.h
+++ b/ext/rpc/com/php_variant.h
@@ -3,14 +3,19 @@
#if PHP_WIN32
-#include "variant.h"
+BEGIN_EXTERN_C()
-extern int php_VARIANT_get_le_variant();
+#include "conversion.h"
+#include "variant.h"
PHP_MINIT_FUNCTION(VARIANT);
PHP_MSHUTDOWN_FUNCTION(VARIANT);
-extern zend_module_entry VARIANT_module_entry;
+PHPAPI int php_VARIANT_get_le_variant();
+
+zend_module_entry VARIANT_module_entry;
+
+END_EXTERN_C()
#define VARIANT_module_ptr &VARIANT_module_entry
diff --git a/ext/rpc/com/variant.c b/ext/rpc/com/variant.c
index 6b68fd25fa..b8f2590101 100644
--- a/ext/rpc/com/variant.c
+++ b/ext/rpc/com/variant.c
@@ -28,26 +28,20 @@
#include "php.h"
#include "php_ini.h"
-#include "variant.h"
-#include "conversion.h"
#include "ext/standard/info.h"
+#include "php_VARIANT.h"
#include <unknwn.h>
-PHP_MINIT_FUNCTION(VARIANT);
-PHP_MSHUTDOWN_FUNCTION(VARIANT);
-
-int php_VARIANT_get_le_variant();
-void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference);
-pval php_VARIANT_get_property_handler(zend_property_reference *property_reference);
-static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value);
-void php_register_VARIANT_class();
-static void php_variant_destructor(zend_rsrc_list_entry *rsrc);
-void php_register_VARIANT_class();
+static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value TSRMLS_DC);
+static int php_VARIANT_set_property_handler(zend_property_reference *property_reference, pval *value);
+static pval php_VARIANT_get_property_handler(zend_property_reference *property_reference);
+static void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference);
+static void php_VARIANT_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC);
+static void php_register_VARIANT_class(TSRMLS_D);
static int le_variant;
static int codepage;
-
static zend_class_entry VARIANT_class_entry;
function_entry VARIANT_functions[] = {
@@ -67,7 +61,7 @@ zend_module_entry VARIANT_module_entry = {
PHP_MINIT_FUNCTION(VARIANT)
{
- le_variant = zend_register_list_destructors_ex(php_variant_destructor, NULL, "VARIANT", module_number);
+ le_variant = zend_register_list_destructors_ex(php_VARIANT_destructor, NULL, "VARIANT", module_number);
/* variant datatypes */
REGISTER_LONG_CONSTANT("VT_NULL", VT_NULL, CONST_CS | CONST_PERSISTENT);
@@ -111,7 +105,7 @@ PHP_MINIT_FUNCTION(VARIANT)
# error "CP_THREAD_ACP undefined"
#endif
- php_register_VARIANT_class();
+ php_register_VARIANT_class(TSRMLS_C);
return SUCCESS;
}
@@ -120,12 +114,12 @@ PHP_MSHUTDOWN_FUNCTION(VARIANT)
return SUCCESS;
}
-int php_VARIANT_get_le_variant()
+PHPAPI int php_VARIANT_get_le_variant()
{
return le_variant;
}
-void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference)
+static void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference *property_reference)
{
pval *object = property_reference->object;
zend_overloaded_element *function_name = (zend_overloaded_element *) property_reference->elements_list->tail->data;
@@ -146,17 +140,17 @@ void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_proper
break;
case 1:
getParameters(ht, 1, &data);
- php_pval_to_variant(data, pVar, codepage);
+ php_pval_to_variant(data, pVar, codepage TSRMLS_CC);
codepage = CP_ACP;
break;
case 2:
getParameters(ht, 2, &data, &type);
- php_pval_to_variant_ex(data, pVar, type, codepage);
+ php_pval_to_variant_ex(data, pVar, type, codepage TSRMLS_CC);
codepage = CP_ACP;
break;
case 3:
getParameters(ht, 3, &data, &type, &code_page);
- php_pval_to_variant_ex(data, pVar, type, codepage);
+ php_pval_to_variant_ex(data, pVar, type, codepage TSRMLS_CC);
convert_to_long(code_page);
codepage = code_page->value.lval;
break;
@@ -182,8 +176,7 @@ void php_VARIANT_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_proper
}
}
-
-pval php_VARIANT_get_property_handler(zend_property_reference *property_reference)
+static pval php_VARIANT_get_property_handler(zend_property_reference *property_reference)
{
zend_overloaded_element *overloaded_property;
int type;
@@ -212,7 +205,7 @@ pval php_VARIANT_get_property_handler(zend_property_reference *property_referenc
case OE_IS_OBJECT:
if(!strcmp(overloaded_property->element.value.str.val, "value"))
{
- php_variant_to_pval(var_arg, &result, 0, codepage);
+ php_variant_to_pval(var_arg, &result, 0, codepage TSRMLS_CC);
}
else if(!strcmp(Z_STRVAL(overloaded_property->element), "type"))
{
@@ -236,7 +229,7 @@ pval php_VARIANT_get_property_handler(zend_property_reference *property_referenc
return result;
}
-int php_VARIANT_set_property_handler(zend_property_reference *property_reference, pval *value)
+static int php_VARIANT_set_property_handler(zend_property_reference *property_reference, pval *value)
{
zend_overloaded_element *overloaded_property;
int type;
@@ -253,12 +246,12 @@ int php_VARIANT_set_property_handler(zend_property_reference *property_reference
return FAILURE;
overloaded_property = (zend_overloaded_element *) property_reference->elements_list->head->data;
- do_VARIANT_propset(var_arg, &overloaded_property->element, value);
+ do_VARIANT_propset(var_arg, &overloaded_property->element, value TSRMLS_CC);
zval_dtor(&overloaded_property->element);
return SUCCESS;
}
-static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value)
+static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value TSRMLS_DC)
{
pval type;
@@ -426,20 +419,18 @@ static int do_VARIANT_propset(VARIANT *var_arg, pval *arg_property, pval *value)
return FAILURE;
}
- php_pval_to_variant_ex(value, var_arg, &type, codepage);
+ php_pval_to_variant_ex(value, var_arg, &type, codepage TSRMLS_CC);
return SUCCESS;
}
-static void php_variant_destructor(zend_rsrc_list_entry *rsrc)
+static void php_VARIANT_destructor(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
FREE_VARIANT(rsrc->ptr);
}
-void php_register_VARIANT_class(void)
+static void php_register_VARIANT_class(TSRMLS_D)
{
- TSRMLS_FETCH();
-
INIT_OVERLOADED_CLASS_ENTRY(VARIANT_class_entry, "VARIANT", NULL,
php_VARIANT_call_function_handler,
php_VARIANT_get_property_handler,