From nobody Fri May 16 03:54:12 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1501624185986799.4450728655546; Tue, 1 Aug 2017 14:49:45 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 06EAA757A3; Tue, 1 Aug 2017 21:49:44 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id CD0006375F; Tue, 1 Aug 2017 21:49:43 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 88022180B467; Tue, 1 Aug 2017 21:49:43 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v71LkLfx007824 for ; Tue, 1 Aug 2017 17:46:21 -0400 Received: by smtp.corp.redhat.com (Postfix) id 27A945D6AA; Tue, 1 Aug 2017 21:46:21 +0000 (UTC) Received: from mx1.redhat.com (ext-mx03.extmail.prod.ext.phx2.redhat.com [10.5.110.27]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 95FA217483 for ; Tue, 1 Aug 2017 21:46:18 +0000 (UTC) Received: from mail-qk0-f193.google.com (mail-qk0-f193.google.com [209.85.220.193]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 41A6316AB0F for ; Tue, 1 Aug 2017 21:46:17 +0000 (UTC) Received: by mail-qk0-f193.google.com with SMTP id q66so2919415qki.1 for ; Tue, 01 Aug 2017 14:46:17 -0700 (PDT) Received: from dawid-fedora.datto.lan ([47.19.105.250]) by smtp.gmail.com with ESMTPSA id f56sm1892090qta.79.2017.08.01.14.46.15 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 01 Aug 2017 14:46:15 -0700 (PDT) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 06EAA757A3 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 06EAA757A3 Authentication-Results: mx1.redhat.com; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZCyuGLWD" DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 41A6316AB0F Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=dzrudy@gmail.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 41A6316AB0F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=cjF4QoWxY+RBVX5QzywK9XxtkVfZbo0cAKQMe7QbAks=; b=ZCyuGLWDTY8xuSmDZwtWgZ7HBhJ4Nc6NsmsiylT5JRmWc//+1y6CPD770tFfWWFfAS JcoiWx+elIInddYnt98FhglYbV9IbW7N0oKbpVW/4b0XAYoBB+7WAeWqikW1yiJJWbok eNsGNJKwNJcLkTMMWsVijP0TMjd3SbMNAAdCGPz93FPOYJnS4qrQ2uvnillxV275h39Q 6AF12iYlXbkyyRBmvWXB9Hj2uMO9EV6Io0UW1/mglCTF7K66RNxarbXlHqVsCBu9ApKv mKkVpdb7bb4UnCJ2nNROdsfbrz0/j8t6pqQrA9godWfpspmlYOeDXCDpd6X2OjZjDTkI ocWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=cjF4QoWxY+RBVX5QzywK9XxtkVfZbo0cAKQMe7QbAks=; b=hecoGCBySHUKLmG6u9qn/UOqpsyWb1BiHPheCxDesfu8I+JquMjz/pABC3awFyxaLg lAIBZDDj6RcUgc4aoF9BnHCwc3uK4iIwgoKDuUY5wqDrm1W8eHyD4bX9+LgmUu6/Og9u wYoqV8IPRfwnvVU8Ocm/B8EArQXnBtGYREXLmMNGHVZdXQ9gBnbQg1LW3eF7S3dRO79v U2RC7GTAM2VAlY+D1sNdngLZY3AlDmohSkz23sJwSowinTqO1vaCOxm4z/viF5WIx5bj T0MjED5suA3CVMW0pnBptBitiv8fpXf5kjnGgc25XMj7Yi3CLOOsZVNrK+19M7Zniqj2 b7OQ== X-Gm-Message-State: AIVw112D4Tgsj6M3QO86s39m6+4bVMCvvIGI9ZTlwR4P1rm3DsZ0u+XL bAwYn+PHLJnE1FuYZdE= X-Received: by 10.55.168.140 with SMTP id r134mr29343685qke.204.1501623976056; Tue, 01 Aug 2017 14:46:16 -0700 (PDT) From: Dawid Zamirski To: libvir-list@redhat.com Date: Tue, 1 Aug 2017 17:46:02 -0400 Message-Id: <20170801214614.8915-2-dzrudy@gmail.com> In-Reply-To: <20170801214614.8915-1-dzrudy@gmail.com> References: <20170801214614.8915-1-dzrudy@gmail.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 01 Aug 2017 21:46:17 +0000 (UTC) X-Greylist: inspected by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 01 Aug 2017 21:46:17 +0000 (UTC) for IP:'209.85.220.193' DOMAIN:'mail-qk0-f193.google.com' HELO:'mail-qk0-f193.google.com' FROM:'dzrudy@gmail.com' RCPT:'' X-RedHat-Spam-Score: 0.37 (DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, RCVD_IN_SORBS_SPAM, SPF_PASS) 209.85.220.193 mail-qk0-f193.google.com 209.85.220.193 mail-qk0-f193.google.com X-Scanned-By: MIMEDefang 2.78 on 10.5.110.27 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-loop: libvir-list@redhat.com Subject: [libvirt] [libvirt-php PATCH 01/13] Move PHP version compat macros to utils.h X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 01 Aug 2017 21:49:44 +0000 (UTC) X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" --- src/libvirt-php.h | 144 ++++---------------------------------------------- src/util.h | 154 ++++++++++++++++++++++++++++++++++++++++++++++++++= ++++ 2 files changed, 164 insertions(+), 134 deletions(-) diff --git a/src/libvirt-php.h b/src/libvirt-php.h index 7962e33..867eb60 100644 --- a/src/libvirt-php.h +++ b/src/libvirt-php.h @@ -119,139 +119,6 @@ typedef uint64_t arch_uint; #define UINTx PRIx64 #endif =20 -#if PHP_MAJOR_VERSION >=3D 7 -typedef size_t strsize_t; -typedef zend_resource virt_resource; -typedef virt_resource *virt_resource_handle; - -#define VIRT_RETURN_RESOURCE(_resource) \ - RETVAL_RES(_resource) - -#define VIRT_REGISTER_RESOURCE(_resource, _le_resource) \ - VIRT_RETURN_RESOURCE(zend_register_resource(_resource, _le_resource)) - -#define VIRT_REGISTER_LIST_RESOURCE(_name) do { \ - zval zret; \ - ZVAL_RES(&zret, zend_register_resource(res_##_name, le_libvirt_##_name= )); \ - add_next_index_zval(return_value, &zret); \ - } while(0) - -#define VIRT_RESOURCE_HANDLE(_resource) \ - Z_RES_P(_resource) - -#define VIRT_FETCH_RESOURCE(_state, _type, _zval, _name, _le) \ - if ((_state =3D (_type)zend_fetch_resource(Z_RES_P(*_zval), _name, _le= )) =3D=3D NULL) { \ - RETURN_FALSE; \ - } - -#define VIRT_RETVAL_STRING(_str) \ - RETVAL_STRING(_str) -#define VIRT_RETVAL_STRINGL(_str, _len) \ - RETVAL_STRINGL(_str, _len) -#define VIRT_RETURN_STRING(_str) \ - RETURN_STRING(_str) -#define VIRT_RETURN_STRINGL(_str, _len) \ - RETURN_STRINGL(_str, _len) -#define VIRT_ZVAL_STRINGL(_zv, _str, _len) \ - ZVAL_STRINGL(_zv, _str, _len) -#define VIRT_ADD_INDEX_STRING(_arg, _idx, _str) \ - add_index_string(_arg, _idx, _str) -#define VIRT_ADD_NEXT_INDEX_STRING(_arg, _str) \ - add_next_index_string(_arg, _str) -#define VIRT_ADD_ASSOC_STRING(_arg, _key, _str) \ - add_assoc_string(_arg, _key, _str) -#define VIRT_ADD_ASSOC_STRING_EX(_arg, _key, _key_len, _value) \ - add_assoc_string_ex(_arg, _key, _key_len, _value) - -#define VIRT_FOREACH(_ht, _pos, _zv) \ - for (zend_hash_internal_pointer_reset_ex(_ht, &_pos); \ - (_zv =3D zend_hash_get_current_data_ex(_ht, &_pos)) !=3D NULL; \ - zend_hash_move_forward_ex(_ht, &_pos)) \ - -#define VIRT_FOREACH_END(_dummy) - -#define VIRT_HASH_CURRENT_KEY_INFO(_ht, _pos, _idx, _info) \ - do { \ - zend_string *tmp_key_info; \ - _info.type =3D zend_hash_get_current_key_ex(_ht, &tmp_key_info, &_idx,= &_pos); \ - _info.name =3D ZSTR_VAL(tmp_key_info); \ - _info.length =3D ZSTR_LEN(tmp_key_info); \ - } while(0) - -#define VIRT_ARRAY_INIT(_name) do { \ - zval z##_name; \ - _name =3D &z##_name; \ - array_init(_name); \ - } while(0) - -#else /* PHP_MAJOR_VERSION < 7 */ -typedef int strsize_t; -typedef long zend_long; -typedef unsigned long zend_ulong; -typedef zend_rsrc_list_entry virt_resource; -typedef long virt_resource_handle; - -#define VIRT_RETURN_RESOURCE(_resource) \ - RETVAL_RESOURCE((long) _resource) - -#define VIRT_REGISTER_RESOURCE(_resource, _le_resource) \ - ZEND_REGISTER_RESOURCE(return_value, _resource, _le_resource) - -#define VIRT_REGISTER_LIST_RESOURCE(_name) do { \ - zval *zret; \ - ALLOC_INIT_ZVAL(zret); \ - ZEND_REGISTER_RESOURCE(zret, res_##_name, le_libvirt_##_name); \ - add_next_index_zval(return_value, zret); \ - } while(0) - -#define VIRT_RESOURCE_HANDLE(_resource) \ - Z_LVAL_P(_resource) - -#define VIRT_FETCH_RESOURCE(_state, _type, _zval, _name, _le) \ - ZEND_FETCH_RESOURCE(_state, _type, _zval, -1, _name, _le); - -#define VIRT_RETVAL_STRING(_str) \ - RETVAL_STRING(_str, 1) -#define VIRT_RETVAL_STRINGL(_str, _len) \ - RETVAL_STRINGL(_str, _len, 1) -#define VIRT_RETURN_STRING(_str) \ - RETURN_STRING(_str, 1) -#define VIRT_RETURN_STRINGL(_str, _len) \ - RETURN_STRINGL(_str, _len, 1) -#define VIRT_ZVAL_STRINGL(_zv, _str, _len) \ - ZVAL_STRINGL(_zv, _str, _len, 1) -#define VIRT_ADD_INDEX_STRING(_arg, _idx, _str) \ - add_index_string(_arg, _idx, _str, 1) -#define VIRT_ADD_NEXT_INDEX_STRING(_arg, _str) \ - add_next_index_string(_arg, _str, 1) -#define VIRT_ADD_ASSOC_STRING(_arg, _key, _str) \ - add_assoc_string(_arg, _key, _str, 1) -#define VIRT_ADD_ASSOC_STRING_EX(_arg, _key, _key_len, _value) \ - add_assoc_string_ex(_arg, _key, _key_len, _value, 1) - -#define VIRT_FOREACH(_ht, _pos, _zv) \ - { \ - zval **pzv =3D &_zv; \ - for (zend_hash_internal_pointer_reset_ex(_ht, &_pos); \ - zend_hash_get_current_data_ex(_ht, (void **) &pzv, &_pos) =3D=3D = SUCCESS; \ - zend_hash_move_forward_ex(_ht, &_pos)) { \ - _zv =3D *pzv; - -#define VIRT_FOREACH_END(_dummy) \ - }} - -#define VIRT_HASH_CURRENT_KEY_INFO(_ht, _pos, _idx, _info) \ - do { \ - _info.type =3D zend_hash_get_current_key_ex(_ht, &_info.name, &_info.l= ength, &_idx, 0, &_pos); \ - } while(0) - -#define VIRT_ARRAY_INIT(_name) do {\ - ALLOC_INIT_ZVAL(_name); \ - array_init(_name); \ - } while(0) - -#endif /* PHP_MAJOR_VERSION < 7 */ - typedef struct tTokenizer { char **tokens; int numTokens; @@ -315,6 +182,16 @@ typedef struct tVMNetwork { char *model; } tVMNetwork; =20 +/* TODO: Temporary due to code movement to util.h - will be removed when + * libvirt-connection.h is separated out + */ +#if PHP_MAJOR_VERSION >=3D 7 +typedef zend_resource virt_resource; +typedef virt_resource *virt_resource_handle; +#else +typedef long virt_resource_handle; +#endif + /* Libvirt-php types */ typedef struct _php_libvirt_connection { virConnectPtr conn; @@ -376,7 +253,6 @@ typedef struct _php_libvirt_hash_key_info { =20 /* Private definitions */ int set_logfile(char *filename, long maxsize TSRMLS_DC); -char *get_datetime(void); char *get_string_from_xpath(char *xml, char *xpath, zval **val, int *retVa= l); char **get_array_from_xpath(char *xml, char *xpath, int *num); =20 diff --git a/src/util.h b/src/util.h index c2b7324..533505d 100644 --- a/src/util.h +++ b/src/util.h @@ -11,6 +11,7 @@ # define __UTIL_H__ =20 # include +# include "libvirt-php.h" =20 # define DEBUG_SUPPORT =20 @@ -65,6 +66,159 @@ ((uint32_t)var[2] << 8) + \ ((uint32_t)var[3])) =20 +# if PHP_MAJOR_VERSION >=3D 7 + typedef size_t strsize_t; + typedef zend_resource virt_resource; + typedef virt_resource *virt_resource_handle; + +# define VIRT_RETURN_RESOURCE(_resource) \ + RETVAL_RES(_resource) + +# define VIRT_REGISTER_RESOURCE(_resource, _le_resource) \ + VIRT_RETURN_RESOURCE(zend_register_resource(_resource, _le_resource)) + +# define VIRT_REGISTER_LIST_RESOURCE(_name) do { \ + zval zret; \ + ZVAL_RES(&zret, zend_register_resource(res_##_name, le_libvirt_##_name= )); \ + add_next_index_zval(return_value, &zret); \ + } while(0) + +# define VIRT_RESOURCE_HANDLE(_resource) \ + Z_RES_P(_resource) + +# define VIRT_FETCH_RESOURCE(_state, _type, _zval, _name, _le) \ + if ((_state =3D (_type)zend_fetch_resource(Z_RES_P(*_zval), _name, _le= )) =3D=3D NULL) { \ + RETURN_FALSE; \ + } + +# define VIRT_RETVAL_STRING(_str) \ + RETVAL_STRING(_str) + +# define VIRT_RETVAL_STRINGL(_str, _len) \ + RETVAL_STRINGL(_str, _len) + +# define VIRT_RETURN_STRING(_str) \ + RETURN_STRING(_str) + +# define VIRT_RETURN_STRINGL(_str, _len) \ + RETURN_STRINGL(_str, _len) + +# define VIRT_ZVAL_STRINGL(_zv, _str, _len) \ + ZVAL_STRINGL(_zv, _str, _len) + +# define VIRT_ADD_INDEX_STRING(_arg, _idx, _str) \ + add_index_string(_arg, _idx, _str) + +# define VIRT_ADD_NEXT_INDEX_STRING(_arg, _str) \ + add_next_index_string(_arg, _str) + +# define VIRT_ADD_ASSOC_STRING(_arg, _key, _str) \ + add_assoc_string(_arg, _key, _str) + +# define VIRT_ADD_ASSOC_STRING_EX(_arg, _key, _key_len, _value) \ + add_assoc_string_ex(_arg, _key, _key_len, _value) + +# define VIRT_FOREACH(_ht, _pos, _zv) \ + for (zend_hash_internal_pointer_reset_ex(_ht, &_pos); \ + (_zv =3D zend_hash_get_current_data_ex(_ht, &_pos)) !=3D NULL; \ + zend_hash_move_forward_ex(_ht, &_pos)) \ + +# define VIRT_FOREACH_END(_dummy) + +# define VIRT_HASH_CURRENT_KEY_INFO(_ht, _pos, _idx, _info) \ + do { \ + zend_string *tmp_key_info; \ + _info.type =3D zend_hash_get_current_key_ex(_ht, &tmp_key_info, &_idx,= &_pos); \ + _info.name =3D ZSTR_VAL(tmp_key_info); \ + _info.length =3D ZSTR_LEN(tmp_key_info); \ + } while(0) + +# define VIRT_ARRAY_INIT(_name) do { \ + zval z##_name; \ + _name =3D &z##_name; \ + array_init(_name); \ + } while(0) + +# else /* PHP_MAJOR_VERSION < 7 */ + typedef int strsize_t; + typedef long zend_long; + typedef unsigned long zend_ulong; + typedef zend_rsrc_list_entry virt_resource; + typedef long virt_resource_handle; + +# define VIRT_RETURN_RESOURCE(_resource) \ + RETVAL_RESOURCE((long) _resource) + +# define VIRT_REGISTER_RESOURCE(_resource, _le_resource) \ + ZEND_REGISTER_RESOURCE(return_value, _resource, _le_resource) + +# define VIRT_REGISTER_LIST_RESOURCE(_name) do { \ + zval *zret; \ + ALLOC_INIT_ZVAL(zret); \ + ZEND_REGISTER_RESOURCE(zret, res_##_name, le_libvirt_##_name); \ + add_next_index_zval(return_value, zret); \ + } while(0) + +# define VIRT_RESOURCE_HANDLE(_resource) \ + Z_LVAL_P(_resource) + +# define VIRT_FETCH_RESOURCE(_state, _type, _zval, _name, _le) \ + ZEND_FETCH_RESOURCE(_state, _type, _zval, -1, _name, _le); + +# define VIRT_RETVAL_STRING(_str) \ + RETVAL_STRING(_str, 1) + +# define VIRT_RETVAL_STRINGL(_str, _len) \ + RETVAL_STRINGL(_str, _len, 1) + +# define VIRT_RETURN_STRING(_str) \ + RETURN_STRING(_str, 1) + +# define VIRT_RETURN_STRINGL(_str, _len) \ + RETURN_STRINGL(_str, _len, 1) + +# define VIRT_ZVAL_STRINGL(_zv, _str, _len) \ + ZVAL_STRINGL(_zv, _str, _len, 1) + +# define VIRT_ADD_INDEX_STRING(_arg, _idx, _str) \ + add_index_string(_arg, _idx, _str, 1) + +# define VIRT_ADD_NEXT_INDEX_STRING(_arg, _str) \ + add_next_index_string(_arg, _str, 1) + +# define VIRT_ADD_ASSOC_STRING(_arg, _key, _str) \ + add_assoc_string(_arg, _key, _str, 1) + +# define VIRT_ADD_ASSOC_STRING_EX(_arg, _key, _key_len, _value) \ + add_assoc_string_ex(_arg, _key, _key_len, _value, 1) + +# define VIRT_FOREACH(_ht, _pos, _zv) \ + { \ + zval **pzv =3D &_zv; \ + for (zend_hash_internal_pointer_reset_ex(_ht, &_pos); \ + zend_hash_get_current_data_ex(_ht, (void **) &pzv, &_pos) =3D=3D = SUCCESS; \ + zend_hash_move_forward_ex(_ht, &_pos)) { \ + _zv =3D *pzv; + +# define VIRT_FOREACH_END(_dummy) \ + }} + +# define VIRT_HASH_CURRENT_KEY_INFO(_ht, _pos, _idx, _info) \ + do { \ + _info.type =3D zend_hash_get_current_key_ex(_ht, &_info.name, &_info.l= ength, &_idx, 0, &_pos); \ + } while(0) + +# define VIRT_ARRAY_INIT(_name) do {\ + ALLOC_INIT_ZVAL(_name); \ + array_init(_name); \ + } while(0) + +# endif /* PHP_MAJOR_VERSION < 7 */ + +# ifndef PHP_FE_END +# define PHP_FE_END {NULL, NULL, NULL} +# endif + void debugPrint(const char *source, const char *fmt, ...); =20 --=20 2.13.3 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list