This is a revised patch to also fix the call to libvirt_version without
arguments and without Xen.

Currently libvirt_connect fails if libvirt has no Xen support.
This is because virGetVersion checks for Xen if typeVer!=NULL.
The same applies for libvirt_version if called without arguments
and no Xen available.

---
 src/libvirt.c |   24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)

diff --git a/src/libvirt.c b/src/libvirt.c
index ce39a28..9636166 100644
--- a/src/libvirt.c
+++ b/src/libvirt.c
@@ -173,13 +173,12 @@ PHP_RSHUTDOWN_FUNCTION(libvirt)
 PHP_MINFO_FUNCTION(libvirt)
 {
        unsigned long libVer;
-       unsigned long typeVer;
        char *version;
        php_info_print_table_start();
        php_info_print_table_row(2, "Libvirt support", "enabled");
        php_info_print_table_row(2, "Extension version", 
PHP_LIBVIRT_WORLD_VERSION);
 
-       if (virGetVersion(&libVer,NULL,&typeVer)== 0)
+       if (virGetVersion(&libVer,NULL,NULL)== 0)
        {
                version=emalloc(100);
                snprintf(version, 100, "%i.%i.%i", (long)((libVer/1000000) % 
1000),(long)((libVer/1000) % 1000),(long)(libVer % 1000));
@@ -590,13 +589,12 @@ PHP_FUNCTION(libvirt_connect)
        unsigned long index;
 
        unsigned long libVer;
-       unsigned long typeVer;
 
        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|sba", 
&url,&url_len,&readonly,&zcreds) == FAILURE) {
                RETURN_FALSE;
        }
 
-       if (virGetVersion(&libVer,NULL,&typeVer)!= 0)
+       if (virGetVersion(&libVer,NULL,NULL)!= 0)
                RETURN_FALSE;
 
        if (libVer<6002)
@@ -3358,8 +3356,13 @@ PHP_FUNCTION(libvirt_version)
                RETURN_FALSE;
        }
 
-       if (virGetVersion(&libVer,type,&typeVer) != 0)
-               RETURN_FALSE;
+       if (ZEND_NUM_ARGS() == 0) {
+               if (virGetVersion(&libVer,NULL,NULL) != 0)
+                       RETURN_FALSE;
+    } else {
+               if (virGetVersion(&libVer,type,&typeVer) != 0)
+                       RETURN_FALSE;
+       }
 
        /* The version is returned as: major * 1,000,000 + minor * 1,000 + 
release. */
        array_init(return_value);
@@ -3372,9 +3375,12 @@ PHP_FUNCTION(libvirt_version)
        add_assoc_long(return_value, "connector.major", VERSION_MAJOR);
        add_assoc_long(return_value, "connector.minor", VERSION_MINOR);
        add_assoc_long(return_value, "connector.release", VERSION_MICRO);
-       add_assoc_long(return_value, "type.release",(long)(typeVer %1000));
-       add_assoc_long(return_value, "type.minor",(long)((typeVer/1000) % 
1000));
-       add_assoc_long(return_value, "type.major",(long)((typeVer/1000000) % 
1000));
+
+    if (ZEND_NUM_ARGS() > 0) {
+               add_assoc_long(return_value, "type.release",(long)(typeVer 
%1000));
+               add_assoc_long(return_value, "type.minor",(long)((typeVer/1000) 
% 1000));
+               add_assoc_long(return_value, 
"type.major",(long)((typeVer/1000000) % 1000));
+    }
 }
 
 /*
-- 
1.7.4.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to