diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 7b7ffd33a1..4ecdbbbbe2 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -894,17 +894,23 @@ int libxl__domain_pvcontrol_available(libxl__gc *gc, uint32_t domid) return !!pvdriver; } -char * libxl__domain_pvcontrol_read(libxl__gc *gc, xs_transaction_t t, - uint32_t domid) +const char *libxl__domain_pvcontrol_xspath(libxl__gc *gc, uint32_t domid) { - const char *shutdown_path; const char *dom_path; dom_path = libxl__xs_get_dompath(gc, domid); if (!dom_path) return NULL; - shutdown_path = libxl__sprintf(gc, "%s/control/shutdown", dom_path); + return GCSPRINTF("%s/control/shutdown", dom_path); +} + +char * libxl__domain_pvcontrol_read(libxl__gc *gc, xs_transaction_t t, + uint32_t domid) +{ + const char *shutdown_path; + + shutdown_path = libxl__domain_pvcontrol_xspath(gc, domid); if (!shutdown_path) return NULL; @@ -915,13 +921,8 @@ int libxl__domain_pvcontrol_write(libxl__gc *gc, xs_transaction_t t, uint32_t domid, const char *cmd) { const char *shutdown_path; - const char *dom_path; - dom_path = libxl__xs_get_dompath(gc, domid); - if (!dom_path) - return ERROR_FAIL; - - shutdown_path = libxl__sprintf(gc, "%s/control/shutdown", dom_path); + shutdown_path = libxl__domain_pvcontrol_xspath(gc, domid); if (!shutdown_path) return ERROR_FAIL; diff --git a/tools/libxl/libxl_internal.h b/tools/libxl/libxl_internal.h index 923ad27b7e..9ec0d0b26a 100644 --- a/tools/libxl/libxl_internal.h +++ b/tools/libxl/libxl_internal.h @@ -999,6 +999,7 @@ _hidden int libxl__domain_resume(libxl__gc *gc, uint32_t domid, /* returns 0 or 1, or a libxl error code */ _hidden int libxl__domain_pvcontrol_available(libxl__gc *gc, uint32_t domid); +_hidden const char *libxl__domain_pvcontrol_xspath(libxl__gc*, uint32_t domid); _hidden char * libxl__domain_pvcontrol_read(libxl__gc *gc, xs_transaction_t t, uint32_t domid); _hidden int libxl__domain_pvcontrol_write(libxl__gc *gc, xs_transaction_t t,