#include <stdio.h> #include <stdlib.h> #include <libvirt/libvirt.h> #define MAXLEN 1000 char *read_xml_desc(char *xml_desc, int len, FILE *in) { int c; while ((--len > 0) && (c = getc(in)) != EOF) *xml_desc++ = c; *xml_desc = '\0'; return (len >= 0 && c == EOF) ? xml_desc : NULL; } int main(int argc, char *argv[]) { virConnect *conn; virDomain *dom; char *xml; int ret = -1; conn = virConnectOpen(NULL); if (!conn) return ret; xml = malloc(MAXLEN); if (!xml) goto out; if (!read_xml_desc(xml, MAXLEN, stdin)) goto out; dom = virDomainCreateXML(conn, xml, 0); if (!dom) goto out; printf("created domain %s\n", virDomainGetName(dom)); virDomainFree(dom); ret = 0; out: free(xml); virConnectClose(conn); return ret; }