/*----- globals -----*/
static const char *program = "libxl-save-helper";
-static xentoollog_logger *logger;
+static xentoollog_logger logger = {
+ tellparent_vmessage,
+ tellparent_progress,
+ tellparent_destroy,
+};
static xc_interface *xch;
/*----- error handling -----*/
{
va_list al;
va_start(al,fmt);
- xtl_logv(logger,XTL_ERROR,errnoval,program,fmt,al);
+ xtl_logv(&logger,XTL_ERROR,errnoval,program,fmt,al);
exit(-1);
}
return r;
}
-typedef struct {
- xentoollog_logger vtable;
-} xentoollog_logger_tellparent;
-
-static xentoollog_logger_tellparent *createlogger_tellparent(void)
-{
- xentoollog_logger_tellparent newlogger;
- return XTL_NEW_LOGGER(tellparent, newlogger);
-}
-
/*----- helper functions called by autogenerated stubs -----*/
unsigned char * helper_allocbuf(int len, void *user)
}
static void startup(const char *op) {
- logger = (xentoollog_logger*)createlogger_tellparent();
- if (!logger) {
- fprintf(stderr, "%s: cannot initialise logger\n", program);
- exit(-1);
- }
-
- xtl_log(logger,XTL_DEBUG,0,program,"starting %s",op);
+ xtl_log(&logger,XTL_DEBUG,0,program,"starting %s",op);
- xch = xc_interface_open(logger,logger,0);
+ xch = xc_interface_open(&logger,&logger,0);
if (!xch) fail(errno,"xc_interface_open failed");
}
static void complete(int retval) {
int errnoval = retval ? errno : 0; /* suppress irrelevant errnos */
- xtl_log(logger,XTL_DEBUG,errnoval,program,"complete r=%d",retval);
+ xtl_log(&logger,XTL_DEBUG,errnoval,program,"complete r=%d",retval);
helper_stub_complete(retval,errnoval,0);
+ xc_interface_close(xch);
exit(0);
}