[libvirt] [libvirt-php PATCH v2 01/11] Move PHP version compat macros to utils.h

Dawid Zamirski dzrudy at gmail.com
Thu Aug 3 23:58:21 UTC 2017


On Thu, 2017-08-03 at 14:34 -0400, Dawid Zamirski wrote:
> Also util now includes all the PHP headers.
> ---
>  src/libvirt-php.c |   1 -
>  src/libvirt-php.h | 157 +-------------------------------------------
> ----
>  src/util.h        | 174
> ++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 175 insertions(+), 157 deletions(-)
> 
> diff --git a/src/libvirt-php.c b/src/libvirt-php.c
> index 0e0c620..504a8f2 100644
> --- a/src/libvirt-php.c
> +++ b/src/libvirt-php.c
> @@ -17,7 +17,6 @@
>  #endif
>  
>  #include "libvirt-php.h"
> -#include "util.h"
>  #include "vncfunc.h"
>  #include "sockets.h"
>  
> diff --git a/src/libvirt-php.h b/src/libvirt-php.h
> index bfc1934..aa3fbf3 100644
> --- a/src/libvirt-php.h
> +++ b/src/libvirt-php.h
> @@ -7,7 +7,6 @@
>  #ifndef PHP_LIBVIRT_H
>  #define PHP_LIBVIRT_H 1
>  
> -
>  /* Network constants */
>  #define VIR_NETWORKS_ACTIVE     1
>  #define VIR_NETWORKS_INACTIVE       2
> @@ -28,27 +27,6 @@
>  #include "config.h"
>  #endif
>  
> -#ifdef COMPILE_DL_LIBVIRT
> -#undef PACKAGE_BUGREPORT
> -#undef PACKAGE_NAME
> -#undef PACKAGE_STRING
> -#undef PACKAGE_TARNAME
> -#undef PACKAGE_URL
> -#undef PACKAGE_VERSION
> -#include "php.h"
> -
> -#ifdef ZTS
> -#include "TSRM.h"
> -#endif
> -
> -#include "php_ini.h"
> -#ifdef EXTWIN
> -#include "ext/standard/info.h"
> -#else
> -#include "standard/info.h"
> -#endif
> -#endif
> -
>  #ifndef VERSION
>  #define VERSION "0.5.1"
>  #define VERSION_MAJOR 0
> @@ -63,6 +41,7 @@
>  #include <libxml/xpath.h>
>  #include <fcntl.h>
>  #include <sys/types.h>
> +#include "util.h"
>  
>  #ifndef EXTWIN
>  #include <inttypes.h>
> @@ -109,139 +88,6 @@ typedef uint64_t arch_uint;
>  #define UINTx PRIx64
>  #endif
>  
> -#if PHP_MAJOR_VERSION >= 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 = (_type)zend_fetch_resource(Z_RES_P(*_zval), _name,
> _le)) == 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 = zend_hash_get_current_data_ex(_ht, &_pos)) != 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 = zend_hash_get_current_key_ex(_ht, &tmp_key_info,
> &_idx, &_pos); \
> -    _info.name = ZSTR_VAL(tmp_key_info); \
> -    _info.length = ZSTR_LEN(tmp_key_info); \
> -    } while(0)
> -
> -#define VIRT_ARRAY_INIT(_name) do { \
> -    zval z##_name; \
> -    _name = &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 = &_zv; \
> -    for (zend_hash_internal_pointer_reset_ex(_ht, &_pos); \
> -         zend_hash_get_current_data_ex(_ht, (void **) &pzv, &_pos)
> == SUCCESS; \
> -         zend_hash_move_forward_ex(_ht, &_pos)) { \
> -        _zv = *pzv;
> -
> -#define VIRT_FOREACH_END(_dummy) \
> -    }}
> -
> -#define VIRT_HASH_CURRENT_KEY_INFO(_ht, _pos, _idx, _info) \
> -    do { \
> -    _info.type = zend_hash_get_current_key_ex(_ht, &_info.name,
> &_info.length, &_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;
> @@ -366,7 +212,6 @@ typedef struct _php_libvirt_hash_key_info {
>  
>  /* 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
> *retVal);
>  char **get_array_from_xpath(char *xml, char *xpath, int *num);
>  
> diff --git a/src/util.h b/src/util.h
> index 836b13f..949dea3 100644
> --- a/src/util.h
> +++ b/src/util.h
> @@ -9,6 +9,27 @@
>  
>  # include <stdint.h>
>  
> +# ifdef COMPILE_DL_LIBVIRT
> +#  undef PACKAGE_BUGREPORT
> +#  undef PACKAGE_NAME
> +#  undef PACKAGE_STRING
> +#  undef PACKAGE_TARNAME
> +#  undef PACKAGE_URL
> +#  undef PACKAGE_VERSION
> +#  include <php.h>
> +

starting from here...

> +# ifdef ZTS
> +#  include <TSRM.h>
> +# endif
> +
> +# include <php_ini.h>
> +# ifdef EXTWIN
> +#  include <ext/standard/info.h>
> +# else
> +#  include <standard/info.h>
> +# endif
> +#endif
> +

...to here, the preprocessor directives need one more space of
indentation.

>  # define DEBUG_SUPPORT
>  
>  # ifdef DEBUG_SUPPORT
> @@ -62,6 +83,159 @@
>                 ((uint32_t)var[2] <<  8) +   \
>                 ((uint32_t)var[3]))
>  
> +# if PHP_MAJOR_VERSION >= 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 = (_type)zend_fetch_resource(Z_RES_P(*_zval), _name,
> _le)) == 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 = zend_hash_get_current_data_ex(_ht, &_pos)) != 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 = zend_hash_get_current_key_ex(_ht, &tmp_key_info,
> &_idx, &_pos); \
> +    _info.name = ZSTR_VAL(tmp_key_info); \
> +    _info.length = ZSTR_LEN(tmp_key_info); \
> +    } while(0)
> +
> +#  define VIRT_ARRAY_INIT(_name) do { \
> +    zval z##_name; \
> +    _name = &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 = &_zv; \
> +    for (zend_hash_internal_pointer_reset_ex(_ht, &_pos); \
> +         zend_hash_get_current_data_ex(_ht, (void **) &pzv, &_pos)
> == SUCCESS; \
> +         zend_hash_move_forward_ex(_ht, &_pos)) { \
> +        _zv = *pzv;
> +
> +#  define VIRT_FOREACH_END(_dummy) \
> +    }}
> +
> +#  define VIRT_HASH_CURRENT_KEY_INFO(_ht, _pos, _idx, _info) \
> +    do { \
> +    _info.type = zend_hash_get_current_key_ex(_ht, &_info.name,
> &_info.length, &_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, ...);
>  




More information about the libvir-list mailing list