libxl_device_disk *disk;
libxl_domain_config_init(dc);
+ char *env_var_name = 0;
+ void *data = 0;
+
+ asprintf(&env_var_name, "XLTEST_CFG_%s", name);
+ const char *file_name = getenv(env_var_name);
+ if (file_name) {
+ int datalen;
+ errno = libxl_read_file_contents(ctx, file_name, &data, &datalen);
+ if (errno) {
+ fprintf(stderr,"config (%s): %s: %s\n",
+ env_var_name, file_name, strerror(errno));
+ exit(-1);
+ }
+ char *config = data = realloc(data, datalen+1);
+ config[datalen] = 0;
+ int rc = libxl_domain_config_from_json(ctx, dc, config);
+ if (rc) {
+ fprintf(stderr,"config (%s): %s: rc=%d\n",
+ env_var_name, file_name, rc);
+ exit(-1);
+ }
+ printf("got domain config (%s) from %s (%d bytes)\n",
+ env_var_name, file_name, datalen);
+ goto out;
+ }
dc->c_info.name = strdup(name);
dc->c_info.type = LIBXL_DOMAIN_TYPE_PV;
disk->format = LIBXL_DISK_FORMAT_RAW;
disk->removable = 1;
disk->is_cdrom = 1;
+
+ out:
+ free(env_var_name);
+ free(data);
}
void generic_callback(libxl_ctx * ctx