rados_shutdown(cluster);
}
-SV *
+HV *
pve_rados_mon_command(cluster, cmds)
rados_t cluster
AV *cmds
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];
- if (outslen > sizeof(msg)) {
- outslen = sizeof(msg);
- }
- snprintf(msg, sizeof(msg), "mon_command failed - %.*s\n", (int)outslen, outs);
- rados_buffer_free(outs);
- if (outbuf != NULL) {
- rados_buffer_free(outbuf);
- }
- 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);
-
- if (outs != NULL) {
- rados_buffer_free(outs);
- }
+ rados_buffer_free(outs);
}
OUTPUT: RETVAL