]> git.proxmox.com Git - librados2-perl.git/blobdiff - RADOS.xs
bump version to 1.4.1
[librados2-perl.git] / RADOS.xs
index f3f55162dcbdb1fa2ca612c8915d57a6a7737562..45f634c3f3bfc4c87aa7b98733f2b78965a9176c 100644 (file)
--- a/RADOS.xs
+++ b/RADOS.xs
@@ -98,7 +98,7 @@ CODE:
     rados_shutdown(cluster);
 }
 
-SV *
+HV *
 pve_rados_mon_command(cluster, cmds)
 rados_t cluster
 AV *cmds
@@ -124,21 +124,27 @@ CODE:
         cmdlen++;
     }
 
-    int ret = rados_mon_command(cluster, cmd, cmdlen,
-                                NULL, 0,
-                                &outbuf, &outbuflen,
-                                &outs, &outslen);
+    int ret = rados_mon_command(
+        cluster,
+        cmd,
+        cmdlen,
+        NULL,
+        0,
+        &outbuf,
+        &outbuflen,
+        &outs,
+        &outslen
+    );
 
-    if (ret < 0) {
-        char msg[4096];
-        snprintf(msg, sizeof(msg), "mon_command failed - %s\n", outs);
-        rados_buffer_free(outs);
-        die(msg);
-    }
+    HV * rh = (HV *)sv_2mortal((SV *)newHV());
 
-    RETVAL = newSVpv(outbuf, outbuflen);
+    (void)hv_store(rh, "return_code", 11, newSViv(ret), 0);
+    (void)hv_store(rh, "status_message", 14, newSVpv(outs, outslen), 0);
+    (void)hv_store(rh, "data", 4, newSVpv(outbuf, outbuflen), 0);
+    RETVAL = rh;
 
     rados_buffer_free(outbuf);
+    rados_buffer_free(outs);
 }
 OUTPUT: RETVAL