]> granicus.if.org Git - php/commitdiff
ported ext/com_dotnet
authorAnatol Belski <ab@php.net>
Tue, 19 Aug 2014 20:23:03 +0000 (22:23 +0200)
committerAnatol Belski <ab@php.net>
Tue, 19 Aug 2014 20:23:03 +0000 (22:23 +0200)
ext/com_dotnet/com_com.c
ext/com_dotnet/com_extension.c
ext/com_dotnet/com_iterator.c
ext/com_dotnet/com_misc.c
ext/com_dotnet/com_persist.c
ext/com_dotnet/com_saproxy.c
ext/com_dotnet/com_variant.c
ext/com_dotnet/com_wrapper.c
ext/com_dotnet/php_com_dotnet_internal.h

index 7f1cadabde72347f80389392de4ea6ad0fbf0b03..00b62bb2d2e1b034b66498e101836c9af8e06be9 100644 (file)
@@ -57,11 +57,11 @@ PHP_FUNCTION(com_create_instance)
        obj = CDNO_FETCH(object);
 
        if (FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
-                       ZEND_NUM_ARGS() TSRMLS_CC, "s|s!ls",
+                       ZEND_NUM_ARGS() TSRMLS_CC, "s|s!is",
                        &module_name, &module_name_len, &server_name, &server_name_len,
                        &obj->code_page, &typelib_name, &typelib_name_len) &&
                FAILURE == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
-                       ZEND_NUM_ARGS() TSRMLS_CC, "sa|ls",
+                       ZEND_NUM_ARGS() TSRMLS_CC, "sa|is",
                        &module_name, &module_name_len, &server_params, &obj->code_page,
                        &typelib_name, &typelib_name_len)) {
 
@@ -289,14 +289,14 @@ PHP_FUNCTION(com_get_active_object)
        CLSID clsid;
        char *module_name;
        int module_name_len;
-       long code_page = COMG(code_page);
+       php_int_t code_page = COMG(code_page);
        IUnknown *unk = NULL;
        IDispatch *obj = NULL;
        HRESULT res;
        OLECHAR *module = NULL;
 
        php_com_initialize(TSRMLS_C);
-       if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l",
+       if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|i",
                                &module_name, &module_name_len, &code_page)) {
                php_com_throw_exception(E_INVALIDARG, "Invalid arguments!" TSRMLS_CC);
                return;
@@ -784,11 +784,11 @@ PHP_FUNCTION(com_print_typeinfo)
    Process COM messages, sleeping for up to timeoutms milliseconds */
 PHP_FUNCTION(com_message_pump)
 {
-       long timeoutms = 0;
+       php_int_t timeoutms = 0;
        MSG msg;
        DWORD result;
        
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|l", &timeoutms) == FAILURE)
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|i", &timeoutms) == FAILURE)
                RETURN_FALSE;
        
        php_com_initialize(TSRMLS_C);
index ce891ebf3e80db723f155006dfdccda7045e8aef..db9f5b21f9ff92538fe5116ee9e56742d8bd0541 100644 (file)
@@ -22,6 +22,8 @@
 #include "config.h"
 #endif
 
+#include <intsafe.h>
+
 #include "php.h"
 #include "php_ini.h"
 #include "ext/standard/info.h"
@@ -382,6 +384,12 @@ PHP_MINIT_FUNCTION(com_dotnet)
        REGISTER_INI_ENTRIES();
 
 #define COM_CONST(x) REGISTER_INT_CONSTANT(#x, x, CONST_CS|CONST_PERSISTENT)
+
+#define COM_ERR_CONST(x) { \
+       php_int_t __tmp; \
+       ULongToUIntPtr(x, &__tmp); \
+       REGISTER_INT_CONSTANT(#x, __tmp, CONST_CS|CONST_PERSISTENT); \
+}
        
        COM_CONST(CLSCTX_INPROC_SERVER);
        COM_CONST(CLSCTX_INPROC_HANDLER);
@@ -441,10 +449,10 @@ PHP_MINIT_FUNCTION(com_dotnet)
 #ifdef NORM_IGNOREKASHIDA
        COM_CONST(NORM_IGNOREKASHIDA);
 #endif
-       COM_CONST(DISP_E_DIVBYZERO);
-       COM_CONST(DISP_E_OVERFLOW);
-       COM_CONST(DISP_E_BADINDEX);
-       COM_CONST(MK_E_UNAVAILABLE);
+       COM_ERR_CONST(DISP_E_DIVBYZERO);
+       COM_ERR_CONST(DISP_E_OVERFLOW);
+       COM_ERR_CONST(DISP_E_BADINDEX);
+       COM_ERR_CONST(MK_E_UNAVAILABLE);
 
        return SUCCESS;
 }
index 80323a8797f2b666d0cefd4e0d2220731e03a4ab..d22bf1efded89195c55ba2ebff8087c67d61e668 100644 (file)
@@ -32,7 +32,7 @@
 struct php_com_iterator {
        zend_object_iterator iter;
        IEnumVARIANT *ev;
-       ulong key;
+       php_uint_t key;
        VARIANT v; /* cached element */
        int code_page;
        VARIANT safe_array;
@@ -75,7 +75,7 @@ static void com_iter_get_key(zend_object_iterator *iter, zval *key TSRMLS_DC)
 {
        struct php_com_iterator *I = (struct php_com_iterator*)Z_PTR(iter->data);
 
-       if (I->key == (ulong)-1) {
+       if (I->key == (php_uint_t)-1) {
                ZVAL_NULL(key);
        } else {
                ZVAL_INT(key, I->key);
index 5cd6808b36f363062177888410632143ddb60dec..294ff26fe7c2680b06d29b3de5ae8232ad6e17ff 100644 (file)
@@ -36,7 +36,7 @@ void php_com_throw_exception(HRESULT code, char *message TSRMLS_DC)
                message = php_win32_error_to_msg(code);
                free_msg = 1;
        }
-       zend_throw_exception(php_com_exception_class_entry, message, (long)code TSRMLS_CC);
+       zend_throw_exception(php_com_exception_class_entry, message, (php_int_t)code TSRMLS_CC);
        if (free_msg) {
                LocalFree(message);
        }
index 4a85a7c8df15f6c4b34f05beb0e3d281f45cbe7c..2a2657ae3c8e742bef708c6f5272343a1f984ef5 100644 (file)
@@ -439,7 +439,7 @@ CPH_METHOD(LoadFromFile)
        HRESULT res;
        char *filename, *fullpath;
        int filename_len;
-       long flags = 0;
+       php_int_t flags = 0;
        OLECHAR *olefilename;
        CPH_FETCH();
        
@@ -448,7 +448,7 @@ CPH_METHOD(LoadFromFile)
        res = get_persist_file(helper);
        if (helper->ipf) {
 
-               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|l",
+               if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "p|i",
                                        &filename, &filename_len, &flags)) {
                        php_com_throw_exception(E_INVALIDARG, "Invalid arguments" TSRMLS_CC);
                        return;
@@ -506,7 +506,7 @@ CPH_METHOD(GetMaxStreamSize)
                php_com_throw_exception(res, NULL TSRMLS_CC);
        } else {
                /* TODO: handle 64 bit properly */
-               RETURN_INT((LONG)size.QuadPart);
+               RETURN_INT((php_int_t)size.QuadPart);
        }
 }
 /* }}} */
index d8aabeeca0b3ecbf56d494de92f89cbcad80b26a..886bd808f9673779c97179c3b228f2cc1a115214 100644 (file)
@@ -353,7 +353,7 @@ static int saproxy_object_cast(zval *readobj, zval *writeobj, int type TSRMLS_DC
        return FAILURE;
 }
 
-static int saproxy_count_elements(zval *object, long *count TSRMLS_DC)
+static int saproxy_count_elements(zval *object, php_int_t *count TSRMLS_DC)
 {
        php_com_saproxy *proxy = SA_FETCH(object);
        LONG ubound, lbound;
index ee013ee0e7716c55a5b1f9693e8884bdd1ba7e19..27583e5dc931ae8c12359b5492e29c336de37237 100644 (file)
@@ -39,8 +39,8 @@ static void safe_array_from_zval(VARIANT *v, zval *z, int codepage TSRMLS_DC)
        HashPosition pos;
        int keytype;
        zend_string *strindex;
-       long intindex = -1;
-       long max_index = 0;
+       php_int_t intindex = -1;
+       php_int_t max_index = 0;
        VARIANT *va;
        zval *item;
                
@@ -187,28 +187,28 @@ PHP_COM_DOTNET_API int php_com_zval_from_variant(zval *z, VARIANT *v, int codepa
                        ZVAL_NULL(z);
                        break;
                case VT_UI1:
-                       ZVAL_INT(z, (long)V_UI1(v));
+                       ZVAL_INT(z, (php_int_t)V_UI1(v));
                        break;
                case VT_I1:
-                       ZVAL_INT(z, (long)V_I1(v));
+                       ZVAL_INT(z, (php_int_t)V_I1(v));
                        break;
                case VT_UI2:
-                       ZVAL_INT(z, (long)V_UI2(v));
+                       ZVAL_INT(z, (php_int_t)V_UI2(v));
                        break;
                case VT_I2:
-                       ZVAL_INT(z, (long)V_I2(v));
+                       ZVAL_INT(z, (php_int_t)V_I2(v));
                        break;
                case VT_UI4:  /* TODO: promote to double if large? */
-                       ZVAL_INT(z, (long)V_UI4(v));
+                       ZVAL_INT(z, (php_int_t)V_UI4(v));
                        break;
                case VT_I4:
-                       ZVAL_INT(z, (long)V_I4(v));
+                       ZVAL_INT(z, (php_int_t)V_I4(v));
                        break;
                case VT_INT:
                        ZVAL_INT(z, V_INT(v));
                        break;
                case VT_UINT: /* TODO: promote to double if large? */
-                       ZVAL_INT(z, (long)V_UINT(v));
+                       ZVAL_INT(z, (php_int_t)V_UINT(v));
                        break;
                case VT_R4:
                        ZVAL_DOUBLE(z, (double)V_R4(v));
@@ -406,8 +406,8 @@ PHP_COM_DOTNET_API int php_com_copy_variant(VARIANT *dstvar, VARIANT *srcvar TSR
 /* {{{ com_variant_create_instance - ctor for new VARIANT() */
 PHP_FUNCTION(com_variant_create_instance)
 {
-       /* VARTYPE == unsigned short */ long vt = VT_EMPTY;
-       long codepage = CP_ACP;
+       /* VARTYPE == unsigned short */ php_int_t vt = VT_EMPTY;
+       php_int_t codepage = CP_ACP;
        zval *object = getThis();
        php_com_dotnet_object *obj;
        zval *zvalue = NULL;
@@ -421,7 +421,7 @@ PHP_FUNCTION(com_variant_create_instance)
        obj = CDNO_FETCH(object);
        
        if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-               "z!|ll", &zvalue, &vt, &codepage)) {
+               "z!|ii", &zvalue, &vt, &codepage)) {
                        php_com_throw_exception(E_INVALIDARG, "Invalid arguments" TSRMLS_CC);
                        return;
        }
@@ -444,7 +444,7 @@ PHP_FUNCTION(com_variant_create_instance)
                          but will probably fail (original behavior)
                */
                if ((vt & VT_ARRAY) && (V_VT(&obj->v) & VT_ARRAY)) {
-                       long orig_vt = vt;
+                       php_int_t orig_vt = vt;
 
                        vt &= ~VT_ARRAY;
                        if (vt) {
@@ -832,7 +832,7 @@ PHP_FUNCTION(variant_round)
        zval *zleft = NULL;
        php_com_dotnet_object *obj;
        int codepage = CP_ACP;
-       long decimals = 0;
+       php_int_t decimals = 0;
 
        VariantInit(&left_val);
        VariantInit(&vres);
@@ -867,8 +867,8 @@ PHP_FUNCTION(variant_cmp)
        zval *zleft = NULL, *zright = NULL;
        php_com_dotnet_object *obj;
        int codepage = CP_ACP;
-       long lcid = LOCALE_SYSTEM_DEFAULT;
-       long flags = 0;
+       php_int_t lcid = LOCALE_SYSTEM_DEFAULT;
+       php_int_t flags = 0;
        /* it is safe to ignore the warning for this line; see the comments in com_handlers.c */
        STDAPI VarCmp(LPVARIANT pvarLeft, LPVARIANT pvarRight, LCID lcid, DWORD flags);
 
@@ -876,28 +876,28 @@ PHP_FUNCTION(variant_cmp)
        VariantInit(&right_val);
 
        if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
-                       ZEND_NUM_ARGS() TSRMLS_CC, "OO|ll", &zleft, php_com_variant_class_entry,
+                       ZEND_NUM_ARGS() TSRMLS_CC, "OO|ii", &zleft, php_com_variant_class_entry,
                        &zright, php_com_variant_class_entry, &lcid, &flags)) {
                obj = CDNO_FETCH(zleft);
                vleft = &obj->v;
                obj = CDNO_FETCH(zright);
                vright = &obj->v;
        } else if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
-                       ZEND_NUM_ARGS() TSRMLS_CC, "Oz!|ll", &zleft, php_com_variant_class_entry,
+                       ZEND_NUM_ARGS() TSRMLS_CC, "Oz!|ii", &zleft, php_com_variant_class_entry,
                        &zright, &lcid, &flags)) {
                obj = CDNO_FETCH(zleft);
                vleft = &obj->v;
                vright = &right_val;
                php_com_variant_from_zval(vright, zright, codepage TSRMLS_CC);
        } else if (SUCCESS == zend_parse_parameters_ex(ZEND_PARSE_PARAMS_QUIET,
-                       ZEND_NUM_ARGS() TSRMLS_CC, "z!O|ll", &zleft, &zright, php_com_variant_class_entry,
+                       ZEND_NUM_ARGS() TSRMLS_CC, "z!O|ii", &zleft, &zright, php_com_variant_class_entry,
                        &lcid, &flags)) {
                obj = CDNO_FETCH(zright);
                vright = &obj->v;
                vleft = &left_val;
                php_com_variant_from_zval(vleft, zleft, codepage TSRMLS_CC);
        } else if (SUCCESS == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-                       "z!z!|ll", &zleft, &zright, &lcid, &flags)) {
+                       "z!z!|ii", &zleft, &zright, &lcid, &flags)) {
 
                vleft = &left_val;
                php_com_variant_from_zval(vleft, zleft, codepage TSRMLS_CC);
@@ -959,13 +959,13 @@ PHP_FUNCTION(variant_date_to_timestamp)
    Returns a variant date representation of a unix timestamp */
 PHP_FUNCTION(variant_date_from_timestamp)
 {
-       long timestamp;
+       php_int_t timestamp;
        time_t ttstamp;
        SYSTEMTIME systime;
        struct tm *tmv;
        VARIANT res;
 
-       if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l",
+       if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "i",
                        &timestamp)) {
                return;
        }
@@ -1020,11 +1020,11 @@ PHP_FUNCTION(variant_set_type)
 {
        zval *zobj;
        php_com_dotnet_object *obj;
-       /* VARTYPE == unsigned short */ long vt;
+       /* VARTYPE == unsigned short */ php_int_t vt;
        HRESULT res;
 
        if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-               "Ol", &zobj, php_com_variant_class_entry, &vt)) {
+               "Oi", &zobj, php_com_variant_class_entry, &vt)) {
                return;
        }
        obj = CDNO_FETCH(zobj);
@@ -1055,12 +1055,12 @@ PHP_FUNCTION(variant_cast)
 {
        zval *zobj;
        php_com_dotnet_object *obj;
-       /* VARTYPE == unsigned short */ long vt;
+       /* VARTYPE == unsigned short */ php_int_t vt;
        VARIANT vres;
        HRESULT res;
 
        if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,
-               "Ol", &zobj, php_com_variant_class_entry, &vt)) {
+               "Oi", &zobj, php_com_variant_class_entry, &vt)) {
                return;
        }
        obj = CDNO_FETCH(zobj);
index 45eab34a690db13afe3d803ff5f6e282b45cb50c..27ea773748dac76eb5b86ec83caa34e89b0e5b55 100644 (file)
@@ -450,7 +450,7 @@ static void generate_dispids(php_dispatchex *disp TSRMLS_DC)
        zend_string *name = NULL;
        zval *tmp, tmp2;
        int keytype;
-       ulong pid;
+       php_uint_t pid;
 
        if (disp->dispid_to_name == NULL) {
                ALLOC_HASHTABLE(disp->dispid_to_name);
@@ -467,7 +467,7 @@ static void generate_dispids(php_dispatchex *disp TSRMLS_DC)
                                &pid, 0, &pos))) {
                        char namebuf[32];
                        if (keytype == HASH_KEY_IS_INT) {
-                               snprintf(namebuf, sizeof(namebuf), "%d", pid);
+                               snprintf(namebuf, sizeof(namebuf), ZEND_UINT_FMT, pid);
                                name = STR_INIT(namebuf, strlen(namebuf), 0);
                        } else {
                                STR_ADDREF(name);
@@ -590,7 +590,7 @@ PHP_COM_DOTNET_API IDispatch *php_com_wrapper_export_as_sink(zval *val, GUID *si
        zend_string *name = NULL;
        zval tmp, *ntmp;
        int keytype;
-       ulong pid;
+       php_uint_t pid;
 
        disp->dispid_to_name = id_to_name;
 
index d093e3c37b1bc0db7e8307982948e23c5c1c108c..5d4e75b3f8cf595cffe262108e64acd11c4df0ea 100644 (file)
@@ -38,7 +38,7 @@ typedef struct _php_com_dotnet_object {
        int modified;
 
        ITypeInfo *typeinfo;
-       long code_page;
+       php_int_t code_page;
 
        zend_class_entry *ce;