On 01/10/2015 12:03 AM, Jim Fehlig wrote: > This reverts commit 2c78051a14acfb7aba078d569b1632dfe0ca0853. > > Conflicts: > src/Makefile.am > > Signed-off-by: Jim Fehlig <jfehlig@xxxxxxxx> > --- > .gitignore | 1 - > cfg.mk | 3 +- > configure.ac | 1 - > po/POTFILES.in | 1 - > src/Makefile.am | 25 +-- > src/libvirt_xenconfig.syms | 4 - > src/xenconfig/xen_common.c | 3 +- > src/xenconfig/xen_xl.c | 499 ------------------------------------------ > src/xenconfig/xen_xl.h | 33 --- > src/xenconfig/xen_xl_disk.l | 256 ---------------------- > src/xenconfig/xen_xl_disk_i.h | 39 ---- > 11 files changed, 4 insertions(+), 861 deletions(-) > OK - so reverting is fine; however, xen_xl_disk.{c,h} still exist... Simple enough solution, but they will show up in someone's git status output since they are also removed from .gitignore. There are a couple Coverity issues from the next 3 patches - I'll note them for those directly. ACK John > diff --git a/.gitignore b/.gitignore > index eac2203..9d09709 100644 > --- a/.gitignore > +++ b/.gitignore > @@ -140,7 +140,6 @@ > /src/remote/*_protocol.[ch] > /src/rpc/virkeepaliveprotocol.[ch] > /src/rpc/virnetprotocol.[ch] > -/src/xenconfig/xen_xl_disk.[ch] > /src/test_libvirt*.aug > /src/test_virtlockd.aug > /src/util/virkeymaps.h > diff --git a/cfg.mk b/cfg.mk > index 3df3dcb..21f83c3 100644 > --- a/cfg.mk > +++ b/cfg.mk > @@ -89,9 +89,8 @@ distdir: sc_vulnerable_makefile_CVE-2012-3386.z > endif > > # Files that should never cause syntax check failures. > -# (^(HACKING|docs/(news\.html\.in|.*\.patch))|\.(po|fig|gif|ico|png))$$ > VC_LIST_ALWAYS_EXCLUDE_REGEX = \ > - (^(HACKING|docs/(news\.html\.in|.*\.patch)|src/xenconfig/xen_xl_disk.[chl])|\.(po|fig|gif|ico|png))$$ > + (^(HACKING|docs/(news\.html\.in|.*\.patch))|\.(po|fig|gif|ico|png))$$ > > # Functions like free() that are no-ops on NULL arguments. > useless_free_options = \ > diff --git a/configure.ac b/configure.ac > index 167b875..9d12079 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -146,7 +146,6 @@ m4_ifndef([LT_INIT], [ > ]) > AM_PROG_CC_C_O > AM_PROG_LD > -AM_PROG_LEX > > AC_MSG_CHECKING([for how to mark DSO non-deletable at runtime]) > LIBVIRT_NODELETE= > diff --git a/po/POTFILES.in b/po/POTFILES.in > index 094c8e3..e7cb2cc 100644 > --- a/po/POTFILES.in > +++ b/po/POTFILES.in > @@ -247,7 +247,6 @@ src/xenapi/xenapi_driver.c > src/xenapi/xenapi_utils.c > src/xenconfig/xen_common.c > src/xenconfig/xen_sxpr.c > -src/xenconfig/xen_xl.c > src/xenconfig/xen_xm.c > tests/virpolkittest.c > tools/libvirt-guests.sh.in > diff --git a/src/Makefile.am b/src/Makefile.am > index c7975e5..e0e47d0 100644 > --- a/src/Makefile.am > +++ b/src/Makefile.am > @@ -1000,22 +1000,11 @@ CPU_SOURCES = \ > VMX_SOURCES = \ > vmx/vmx.c vmx/vmx.h > > -AM_LFLAGS = -Pxl_disk_ --header-file=../$*.h > -LEX_OUTPUT_ROOT = lex.xl_disk_ > -BUILT_SOURCES += xenconfig/xen_xl_disk.c xenconfig/xen_xl_disk.h > -# Generated header file is not implicitly added to dist > -EXTRA_DIST += xenconfig/xen_xl_disk.h > -CLEANFILES += xenconfig/xen_xl_disk.h xenconfig/xen_xl_disk.c > - > -XENXLDISKPARSER_SOURCES = xenconfig/xen_xl_disk.l > - > XENCONFIG_SOURCES = \ > xenconfig/xenxs_private.h \ > - xenconfig/xen_common.c xenconfig/xen_common.h \ > + xenconfig/xen_common.c xenconfig/xen_common.h \ > xenconfig/xen_sxpr.c xenconfig/xen_sxpr.h \ > - xenconfig/xen_xm.c xenconfig/xen_xm.h \ > - xenconfig/xen_xl.c xenconfig/xen_xl.h \ > - xenconfig/xen_xl_disk_i.h > + xenconfig/xen_xm.c xenconfig/xen_xm.h > > pkgdata_DATA = cpu/cpu_map.xml > > @@ -1070,19 +1059,10 @@ libvirt_vmx_la_SOURCES = $(VMX_SOURCES) > endif WITH_VMX > > if WITH_XENCONFIG > -# Flex generated XL disk parser needs to be compiled without WARN_FLAGS > -# Add the generated object to its own library to control CFLAGS > -noinst_LTLIBRARIES += libvirt_xenxldiskparser.la > -libvirt_xenxldiskparser_la_CFLAGS = \ > - -I$(srcdir)/conf $(AM_CFLAGS) -Wno-unused-parameter > -libvirt_xenxldiskparser_la_SOURCES = \ > - $(XENXLDISKPARSER_SOURCES) > - > noinst_LTLIBRARIES += libvirt_xenconfig.la > libvirt_la_BUILT_LIBADD += libvirt_xenconfig.la > libvirt_xenconfig_la_CFLAGS = \ > -I$(srcdir)/conf $(AM_CFLAGS) > -libvirt_xenconfig_la_LIBADD = libvirt_xenxldiskparser.la > libvirt_xenconfig_la_SOURCES = $(XENCONFIG_SOURCES) > endif WITH_XENCONFIG > > @@ -1844,7 +1824,6 @@ EXTRA_DIST += \ > $(VBOX_DRIVER_EXTRA_DIST) \ > $(VMWARE_DRIVER_SOURCES) \ > $(XENCONFIG_SOURCES) \ > - $(XENXLDISKPARSER_SOURCES) \ > $(ACCESS_DRIVER_POLKIT_POLICY) > > check-local: check-augeas > diff --git a/src/libvirt_xenconfig.syms b/src/libvirt_xenconfig.syms > index 3e2e5d6..6541685 100644 > --- a/src/libvirt_xenconfig.syms > +++ b/src/libvirt_xenconfig.syms > @@ -16,10 +16,6 @@ xenParseSxprChar; > xenParseSxprSound; > xenParseSxprString; > > -#xenconfig/xen_xl.h > -xenFormatXL; > -xenParseXL; > - > # xenconfig/xen_xm.h > xenFormatXM; > xenParseXM; > diff --git a/src/xenconfig/xen_common.c b/src/xenconfig/xen_common.c > index a2a1474..b40a722 100644 > --- a/src/xenconfig/xen_common.c > +++ b/src/xenconfig/xen_common.c > @@ -1812,8 +1812,7 @@ xenFormatVfb(virConfPtr conf, virDomainDefPtr def, int xendConfigVersion) > { > int hvm = STREQ(def->os.type, "hvm") ? 1 : 0; > > - if (def->ngraphics == 1 && > - def->graphics[0]->type != VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { > + if (def->ngraphics == 1) { > if (hvm || (xendConfigVersion < XEND_CONFIG_MIN_VERS_PVFB_NEWCONF)) { > if (def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SDL) { > if (xenConfigSetInt(conf, "sdl", 1) < 0) > diff --git a/src/xenconfig/xen_xl.c b/src/xenconfig/xen_xl.c > deleted file mode 100644 > index 8d1d2a7..0000000 > --- a/src/xenconfig/xen_xl.c > +++ /dev/null > @@ -1,499 +0,0 @@ > -/* > - * xen_xl.c: Xen XL parsing functions > - * > - * This library is free software; you can redistribute it and/or > - * modify it under the terms of the GNU Lesser General Public > - * License as published by the Free Software Foundation; either > - * version 2.1 of the License, or (at your option) any later version. > - * > - * This library is distributed in the hope that it will be useful, > - * but WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - * Lesser General Public License for more details. > - * > - * You should have received a copy of the GNU Lesser General Public > - * License along with this library. If not, see > - * <http://www.gnu.org/licenses/>. > - * > - * Author: Kiarie Kahurani <davidkiarie4@xxxxxxxxx> > - */ > - > -#include <config.h> > - > -#include "virconf.h" > -#include "virerror.h" > -#include "domain_conf.h" > -#include "viralloc.h" > -#include "virstring.h" > -#include "xen_xl.h" > -#include "xen_xl_disk.h" > -#include "xen_xl_disk_i.h" > - > -#define VIR_FROM_THIS VIR_FROM_NONE > - > - > -static int > -xenParseXLSpice(virConfPtr conf, virDomainDefPtr def) > -{ > - virDomainGraphicsDefPtr graphics = NULL; > - unsigned long port; > - char *listenAddr = NULL; > - int val; > - > - if (STREQ(def->os.type, "hvm")) { > - if (xenConfigGetBool(conf, "spice", &val, 0) < 0) > - return -1; > - > - if (val) { > - if (VIR_ALLOC(graphics) < 0) > - return -1; > - > - graphics->type = VIR_DOMAIN_GRAPHICS_TYPE_SPICE; > - if (xenConfigCopyStringOpt(conf, "spicehost", &listenAddr) < 0) > - goto cleanup; > - if (listenAddr && > - virDomainGraphicsListenSetAddress(graphics, 0, listenAddr, > - -1, true) < 0) { > - goto cleanup; > - } > - VIR_FREE(listenAddr); > - > - if (xenConfigGetULong(conf, "spicetls_port", &port, 0) < 0) > - goto cleanup; > - graphics->data.spice.tlsPort = (int)port; > - > - if (xenConfigGetULong(conf, "spiceport", &port, 0) < 0) > - goto cleanup; > - > - graphics->data.spice.port = (int)port; > - > - if (!graphics->data.spice.tlsPort && > - !graphics->data.spice.port) > - graphics->data.spice.autoport = 1; > - > - if (xenConfigGetBool(conf, "spicedisable_ticketing", &val, 0) < 0) > - goto cleanup; > - if (val) { > - if (xenConfigCopyStringOpt(conf, "spicepasswd", > - &graphics->data.spice.auth.passwd) < 0) > - goto cleanup; > - } > - > - if (xenConfigGetBool(conf, "spiceagent_mouse", > - &graphics->data.spice.mousemode, 0) < 0) > - goto cleanup; > - if (xenConfigGetBool(conf, "spicedvagent", &val, 0) < 0) > - goto cleanup; > - if (val) { > - if (xenConfigGetBool(conf, "spice_clipboard_sharing", > - &graphics->data.spice.copypaste, > - 0) < 0) > - goto cleanup; > - } > - > - if (VIR_ALLOC_N(def->graphics, 1) < 0) > - goto cleanup; > - def->graphics[0] = graphics; > - def->ngraphics = 1; > - } > - } > - > - return 0; > - > - cleanup: > - virDomainGraphicsDefFree(graphics); > - return -1; > -} > - > - > -void > -xenXLDiskParserError(xenXLDiskParserContext *dpc, > - const char *erroneous, > - const char *message) > -{ > - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, > - _("disk config %s not supported: %s"), > - erroneous, message); > - > - if (!dpc->err) > - dpc->err = EINVAL; > -} > - > - > -static int > -xenXLDiskParserPrep(xenXLDiskParserContext *dpc, > - const char *spec, > - virDomainDiskDefPtr disk) > -{ > - int err; > - > - dpc->spec = spec; > - dpc->disk = disk; > - dpc->access_set = 0; > - > - err = xl_disk_lex_init_extra(dpc, &dpc->scanner); > - if (err) > - goto fail; > - > - dpc->buf = xl_disk__scan_bytes(spec, strlen(spec), dpc->scanner); > - if (!dpc->buf) { > - err = ENOMEM; > - goto fail; > - } > - > - return 0; > - > - fail: > - virReportSystemError(errno, "%s", > - _("failed to initialize disk configuration parser")); > - return err; > -} > - > - > -static void > -xenXLDiskParserCleanup(xenXLDiskParserContext *dpc) > -{ > - if (dpc->buf) { > - xl_disk__delete_buffer(dpc->buf, dpc->scanner); > - dpc->buf = NULL; > - } > - > - if (dpc->scanner) { > - xl_disk_lex_destroy(dpc->scanner); > - dpc->scanner = NULL; > - } > -} > - > - > -/* > - * positional parameters > - * (If the <diskspec> strings are not separated by "=" > - * the string is split following ',' and assigned to > - * the following options in the following order) > - * target,format,vdev,access > - * ================================================================ > - * > - * The parameters below cannot be specified as positional parameters: > - * > - * other parameters > - * devtype = <devtype> > - * backendtype = <backend-type> > - * parameters not taken care of > - * backend = <domain-name> > - * script = <script> > - * direct-io-safe > - * > - * ================================================================ > - * The parser does not take any deprecated parameters > - * > - * For more information refer to /xen/docs/misc/xl-disk-configuration.txt > - */ > -static int > -xenParseXLDisk(virConfPtr conf, virDomainDefPtr def) > -{ > - virConfValuePtr list = virConfGetValue(conf, "disk"); > - xenXLDiskParserContext dpc; > - virDomainDiskDefPtr disk; > - > - memset(&dpc, 0, sizeof(dpc)); > - > - if (list && list->type == VIR_CONF_LIST) { > - list = list->list; > - while (list) { > - char *disk_spec = list->str; > - const char *driver; > - > - if ((list->type != VIR_CONF_STRING) || (list->str == NULL)) > - goto skipdisk; > - > - if (!(disk = virDomainDiskDefNew())) > - return -1; > - > - disk->src->readonly = 0; > - disk->src->format = VIR_STORAGE_FILE_LAST; > - > - if (xenXLDiskParserPrep(&dpc, disk_spec, disk)) > - goto fail; > - > - xl_disk_lex(dpc.scanner); > - > - if (dpc.err) > - goto fail; > - > - if (disk->src->format == VIR_STORAGE_FILE_LAST) > - disk->src->format = VIR_STORAGE_FILE_RAW; > - > - if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) { > - disk->removable = true; > - disk->src->readonly = true; > - if (virDomainDiskSetDriver(disk, "qemu") < 0) > - goto fail; > - > - virDomainDiskSetType(disk, VIR_STORAGE_TYPE_FILE); > - if (!disk->src->path || STREQ(disk->src->path, "")) > - disk->src->format = VIR_STORAGE_FILE_NONE; > - } > - > - if (STRPREFIX(disk->dst, "xvd") || !STREQ(def->os.type, "hvm")) > - disk->bus = VIR_DOMAIN_DISK_BUS_XEN; > - else if (STRPREFIX(disk->dst, "sd")) > - disk->bus = VIR_DOMAIN_DISK_BUS_SCSI; > - else > - disk->bus = VIR_DOMAIN_DISK_BUS_IDE; > - > - driver = virDomainDiskGetDriver(disk); > - if (!driver) { > - switch (disk->src->format) { > - case VIR_STORAGE_FILE_QCOW: > - case VIR_STORAGE_FILE_QCOW2: > - case VIR_STORAGE_FILE_VHD: > - driver = "qemu"; > - if (virDomainDiskSetDriver(disk, "qemu") < 0) > - goto fail; > - break; > - default: > - driver = "phy"; > - if (virDomainDiskSetDriver(disk, "phy") < 0) > - goto fail; > - } > - } > - > - if (STREQ(driver, "phy")) > - virDomainDiskSetType(disk, VIR_STORAGE_TYPE_BLOCK); > - else > - virDomainDiskSetType(disk, VIR_STORAGE_TYPE_FILE); > - > - if (VIR_APPEND_ELEMENT(def->disks, def->ndisks, disk) < 0) > - goto fail; > - > - skipdisk: > - list = list->next; > - xenXLDiskParserCleanup(&dpc); > - } > - } > - return 0; > - > - fail: > - xenXLDiskParserCleanup(&dpc); > - virDomainDiskDefFree(disk); > - return -1; > -} > - > - > -virDomainDefPtr > -xenParseXL(virConfPtr conf, virCapsPtr caps, int xendConfigVersion) > -{ > - virDomainDefPtr def = NULL; > - > - if (VIR_ALLOC(def) < 0) > - return NULL; > - > - def->virtType = VIR_DOMAIN_VIRT_XEN; > - def->id = -1; > - > - if (xenParseConfigCommon(conf, def, caps, xendConfigVersion) < 0) > - goto cleanup; > - > - if (xenParseXLDisk(conf, def) < 0) > - goto cleanup; > - > - if (xenParseXLSpice(conf, def) < 0) > - goto cleanup; > - > - return def; > - > - cleanup: > - virDomainDefFree(def); > - return NULL; > -} > - > - > -static int > -xenFormatXLDisk(virConfValuePtr list, virDomainDiskDefPtr disk) > -{ > - virBuffer buf = VIR_BUFFER_INITIALIZER; > - virConfValuePtr val, tmp; > - const char *src = virDomainDiskGetSource(disk); > - int format = virDomainDiskGetFormat(disk); > - > - /* target */ > - virBufferAsprintf(&buf, "%s,", src); > - /* format */ > - switch (format) { > - case VIR_STORAGE_FILE_RAW: > - virBufferAddLit(&buf, "raw,"); > - break; > - case VIR_STORAGE_FILE_VHD: > - virBufferAddLit(&buf, "xvhd,"); > - break; > - case VIR_STORAGE_FILE_QCOW: > - virBufferAddLit(&buf, "qcow,"); > - break; > - case VIR_STORAGE_FILE_QCOW2: > - virBufferAddLit(&buf, "qcow2,"); > - break; > - /* set default */ > - default: > - virBufferAddLit(&buf, "raw,"); > - } > - > - /* device */ > - virBufferAdd(&buf, disk->dst, -1); > - > - virBufferAddLit(&buf, ","); > - > - if (disk->src->readonly) > - virBufferAddLit(&buf, "r,"); > - else if (disk->src->shared) > - virBufferAddLit(&buf, "!,"); > - else > - virBufferAddLit(&buf, "w,"); > - if (disk->transient) { > - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", > - _("transient disks not supported yet")); > - goto cleanup; > - } > - > - if (disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM) > - virBufferAddLit(&buf, "devtype=cdrom"); > - > - if (virBufferCheckError(&buf) < 0) > - goto cleanup; > - > - if (VIR_ALLOC(val) < 0) > - goto cleanup; > - > - val->type = VIR_CONF_STRING; > - val->str = virBufferContentAndReset(&buf); > - tmp = list->list; > - while (tmp && tmp->next) > - tmp = tmp->next; > - if (tmp) > - tmp->next = val; > - else > - list->list = val; > - return 0; > - > - cleanup: > - virBufferFreeAndReset(&buf); > - return -1; > -} > - > - > -static int > -xenFormatXLDomainDisks(virConfPtr conf, virDomainDefPtr def) > -{ > - virConfValuePtr diskVal = NULL; > - size_t i = 0; > - > - if (VIR_ALLOC(diskVal) < 0) > - return -1; > - > - diskVal->type = VIR_CONF_LIST; > - diskVal->list = NULL; > - > - for (i = 0; i < def->ndisks; i++) { > - if (def->disks[i]->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) > - continue; > - if (xenFormatXLDisk(diskVal, def->disks[i]) < 0) > - > - goto cleanup; > - } > - > - if (diskVal->list != NULL) { > - int ret = virConfSetValue(conf, "disk", diskVal); > - diskVal = NULL; > - if (ret < 0) > - goto cleanup; > - } > - > - return 0; > - > - cleanup: > - virConfFreeValue(diskVal); > - return 0; > -} > - > - > -static int > -xenFormatXLSpice(virConfPtr conf, virDomainDefPtr def) > -{ > - const char *listenAddr = NULL; > - > - if (STREQ(def->os.type, "hvm")) { > - if (def->graphics[0]->type == VIR_DOMAIN_GRAPHICS_TYPE_SPICE) { > - /* set others to false but may not be necessary */ > - if (xenConfigSetInt(conf, "sdl", 0) < 0) > - return -1; > - > - if (xenConfigSetInt(conf, "vnc", 0) < 0) > - return -1; > - > - if (xenConfigSetInt(conf, "spice", 1) < 0) > - return -1; > - > - if (xenConfigSetInt(conf, "spiceport", > - def->graphics[0]->data.spice.port) < 0) > - return -1; > - > - if (xenConfigSetInt(conf, "spicetls_port", > - def->graphics[0]->data.spice.tlsPort) < 0) > - return -1; > - > - if (def->graphics[0]->data.spice.auth.passwd) { > - if (xenConfigSetInt(conf, "spicedisable_ticketing", 1) < 0) > - return -1; > - > - if (def->graphics[0]->data.spice.auth.passwd && > - xenConfigSetString(conf, "spicepasswd", > - def->graphics[0]->data.spice.auth.passwd) < 0) > - return -1; > - } > - > - listenAddr = virDomainGraphicsListenGetAddress(def->graphics[0], 0); > - if (listenAddr && > - xenConfigSetString(conf, "spicehost", listenAddr) < 0) > - return -1; > - > - if (xenConfigSetInt(conf, "spicemouse_mouse", > - def->graphics[0]->data.spice.mousemode) < 0) > - return -1; > - > - if (def->graphics[0]->data.spice.copypaste) { > - if (xenConfigSetInt(conf, "spicedvagent", 1) < 0) > - return -1; > - if (xenConfigSetInt(conf, "spice_clipboard_sharing", > - def->graphics[0]->data.spice.copypaste) < 0) > - return -1; > - } > - } > - } > - > - return 0; > -} > - > - > -virConfPtr > -xenFormatXL(virDomainDefPtr def, virConnectPtr conn, int xendConfigVersion) > -{ > - virConfPtr conf = NULL; > - > - if (!(conf = virConfNew())) > - goto cleanup; > - > - if (xenFormatConfigCommon(conf, def, conn, xendConfigVersion) < 0) > - goto cleanup; > - > - if (xenFormatXLDomainDisks(conf, def) < 0) > - goto cleanup; > - > - if (xenFormatXLSpice(conf, def) < 0) > - goto cleanup; > - > - return conf; > - > - cleanup: > - if (conf) > - virConfFree(conf); > - return NULL; > -} > diff --git a/src/xenconfig/xen_xl.h b/src/xenconfig/xen_xl.h > deleted file mode 100644 > index 536e9b7..0000000 > --- a/src/xenconfig/xen_xl.h > +++ /dev/null > @@ -1,33 +0,0 @@ > -/* > - * xen_xl.h: Xen XL parsing functions > - * > - * This library is free software; you can redistribute it and/or > - * modify it under the terms of the GNU Lesser General Public > - * License as published by the Free Software Foundation; either > - * version 2.1 of the License, or (at your option) any later version. > - * > - * This library is distributed in the hope that it will be useful, > - * but WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > - * Lesser General Public License for more details. > - * > - * You should have received a copy of the GNU Lesser General Public > - * License along with this library. If not, see > - * <http://www.gnu.org/licenses/>. > - * > - * Author: Kiarie Kahurani<davidkiarie4@xxxxxxxxx> > - */ > - > -#ifndef __VIR_XEN_XL_H__ > -# define __VIR_XEN_XL_H__ > - > -# include "virconf.h" > -# include "domain_conf.h" > -# include "xen_common.h" > - > -virDomainDefPtr xenParseXL(virConfPtr conn, virCapsPtr caps, > - int xendConfigVersion); > -virConfPtr xenFormatXL(virDomainDefPtr def, > - virConnectPtr, int xendConfigVersion); > - > -#endif /* __VIR_XEN_XL_H__ */ > diff --git a/src/xenconfig/xen_xl_disk.l b/src/xenconfig/xen_xl_disk.l > deleted file mode 100644 > index 164aa32..0000000 > --- a/src/xenconfig/xen_xl_disk.l > +++ /dev/null > @@ -1,256 +0,0 @@ > -/* > - * xen_xl_disk.l - parser for disk specification strings > - * > - * Copyright (C) 2011 Citrix Ltd. > - * Author Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > - * > - * This program is free software; you can redistribute it and/or modify > - * it under the terms of the GNU Lesser General Public License as published > - * by the Free Software Foundation; version 2.1 only. with the special > - * exception on linking described in file LICENSE. > - * > - * This program is distributed in the hope that it will be useful, > - * but WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > - * GNU Lesser General Public License for more details. > - */ > - > -/* > - * Parsing the old xm/xend/xl-4.1 disk specs is a tricky problem, > - * because the target string might in theory contain "," which is the > - * delimiter we use for stripping off things on the RHS, and ":", > - * which is the delimiter we use for stripping off things on the LHS. > - * > - * In this parser we do not support such target strings in the old > - * syntax; if the target string has to contain "," or ":" the new > - * syntax's "target=" should be used. > - */ > -%{ > -# include <config.h> > - > -# include <stdio.h> > - > -# include "viralloc.h" > -# include "virstoragefile.h" > -# include "virstring.h" > -# include "domain_conf.h" > -# include "xen_xl.h" > -# include "xen_xl_disk_i.h" > - > -#define YY_NO_INPUT > -#define VIR_FROM_THIS VIR_FROM_NONE > - > -/* Some versions of flex have a bug (Fedora bugzilla 612465) which causes > - * it to fail to declare these functions, which it defines. So declare > - * them ourselves. Hopefully we won't have to simultaneously support > - * a flex version which declares these differently somehow. */ > -int xl_disk_lexget_column(yyscan_t yyscanner); > -void xl_disk_lexset_column(int column_no, yyscan_t yyscanner); > - > - > -/*----- useful macros and functions used in actions ----- > - * we use macros in the actual rules to keep the actions short > - * and particularly to avoid repeating boilerplate values such as > - * DPC->disk, yytext, etc. */ > - > -/* For actions whose patterns contain '=', finds the start of the value */ > -#define FROMEQUALS (strchr(yytext,'=')+1) > - > -/* Chops the delimiter off, modifying yytext and yyleng. */ > -#define STRIP(delim) do{ \ > - if (yyleng>0 && yytext[yyleng-1]==(delim)) \ > - yytext[--yyleng] = 0; \ > - }while(0) > - > -/* Sets a string value, checking it hasn't been set already. */ > -#define SAVESTRING(what,loc,val) do{ \ > - savestring(DPC, what " respecified", &DPC->disk->loc, (val)); \ > - }while(0) > - > - > -static void > -savestring(xenXLDiskParserContext *dpc, > - const char *what_respecified, > - char **update, > - const char *value) > -{ > - if (*update) { > - if (**update) { > - xenXLDiskParserError(dpc, value, what_respecified); > - return; > - } > - > - VIR_FREE(*update); /* do not complain about overwriting empty strings */ > - } > - > - ignore_value(VIR_STRDUP(*update, value)); > -} > - > -#define DPC dpc /* our convention in lexer helper functions */ > - > -/* Sets ->readwrite from the string. */ > -static void > -setaccess(xenXLDiskParserContext *dpc, const char *str) > -{ > - if (STREQ(str, "rw") || STREQ(str, "w")) { > - dpc->disk->src->readonly = 0; > - } else if (STREQ(str, "r") || STREQ(str, "ro")) { > - dpc->disk->src->readonly = 1; > - } else if (STREQ(str, "w!") || STREQ(str, "!")) { > - dpc->disk->src->readonly = 0; > - dpc->disk->src->shared = 1; > - } else { > - xenXLDiskParserError(dpc, str, "unknown value for access"); > - } > - dpc->access_set = 1; > -} > - > -/* Sets ->format from the string. IDL should provide something for this. */ > -static void > -setformat(xenXLDiskParserContext *dpc, const char *str) > -{ > - if (STREQ(str, "") || STREQ(str, "raw")) > - virDomainDiskSetFormat(dpc->disk, VIR_STORAGE_FILE_RAW); > - else if (STREQ(str, "qcow")) > - virDomainDiskSetFormat(dpc->disk, VIR_STORAGE_FILE_QCOW); > - else if (STREQ(str, "qcow2")) > - virDomainDiskSetFormat(dpc->disk, VIR_STORAGE_FILE_QCOW2); > - else if (STREQ(str, "vhd")) > - virDomainDiskSetFormat(dpc->disk, VIR_STORAGE_FILE_VHD); > - else > - xenXLDiskParserError(dpc, str, "unknown value for format"); > -} > - > - > -/* Sets ->backend from the string. IDL should provide something for this. */ > -static void > -setdrivertype(xenXLDiskParserContext *dpc, const char *str) > -{ > - if (STREQ(str, "phy")) > - ignore_value(virDomainDiskSetDriver(dpc->disk, "phy")); > - else if (STREQ(str, "tap")) > - ignore_value(virDomainDiskSetDriver(dpc->disk, "tap")); > - else if (STREQ(str, "file") || STREQ(str, "")) > - ignore_value(virDomainDiskSetDriver(dpc->disk, "qemu")); > - else > - xenXLDiskParserError(dpc, str, "unknown value for backendtype"); > -} > - > - > -/* Handles a vdev positional parameter which includes a devtype. */ > -static int > -vdev_and_devtype(xenXLDiskParserContext *dpc, char *str) > -{ > - /* returns 1 if it was <vdev>:<devtype>, 0 (doing nothing) otherwise */ > - char *colon = strrchr(str, ':'); > - if (!colon) > - return 0; > - > - *colon++ = 0; > - SAVESTRING("vdev", dst, str); > - > - if (STREQ(colon,"cdrom")) { > - DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM; > - } else if (STREQ(colon, "disk")) { > - DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_DISK; > - } else { > - xenXLDiskParserError(DPC, colon, "unknown deprecated type"); > - } > - return 1; > -} > - > -#undef DPC /* needs to be defined differently the actual lexer */ > -#define DPC ((xenXLDiskParserContext*)yyextra) > - > -%} > - > -%option warn > -%option nodefault > -%option batch > -%option 8bit > -%option noyywrap > -%option reentrant > -%option nounput > - > -%x LEXERR > - > -%% > - > - /*----- the scanner rules which do the parsing -----*/ > - > -[ \t\n]+/([^ \t\n].*)? { /* ignore whitespace before parameters */ } > - > - /* ordinary parameters setting enums or strings */ > - > -format=[^,]*,? { STRIP(','); setformat(DPC, FROMEQUALS); } > - > -cdrom,? { DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM; } > -devtype=cdrom,? { DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_CDROM; } > -devtype=disk,? { DPC->disk->device = VIR_DOMAIN_DISK_DEVICE_DISK; } > -devtype=[^,]*,? { xenXLDiskParserError(DPC, yytext,"unknown value for type"); } > - > -access=[^,]*,? { STRIP(','); setaccess(DPC, FROMEQUALS); } > -backendtype=[^,]*,? { STRIP(','); setdrivertype(DPC, FROMEQUALS); } > - > -vdev=[^,]*,? { STRIP(','); SAVESTRING("vdev", dst, FROMEQUALS); } > - > - /* the target magic parameter, eats the rest of the string */ > - > -target=.* { STRIP(','); SAVESTRING("target", src->path, FROMEQUALS); } > - > - /* unknown parameters */ > - > -[a-z][-a-z0-9]*=[^,],? { xenXLDiskParserError(DPC, yytext, "unknown parameter"); } > - > - /* the "/.*" in these patterns ensures that they count as if they > - * matched the whole string, so these patterns take precedence */ > - > -(raw|qcow2?|vhd):/.* { > - STRIP(':'); > - DPC->had_depr_prefix=1; > - setformat(DPC, yytext); > - } > - > -tapdisk:/.* { DPC->had_depr_prefix=1; } > -tap2?:/.* { DPC->had_depr_prefix=1; } > -aio:/.* { DPC->had_depr_prefix=1; } > -ioemu:/.* { DPC->had_depr_prefix=1; } > -file:/.* { DPC->had_depr_prefix=1; } > -phy:/.* { DPC->had_depr_prefix=1; } > -[a-z][a-z0-9]*:/([^a-z0-9].*)? { > - xenXLDiskParserError(DPC, yytext, "unknown deprecated disk prefix"); > - return 0; > - } > - > - /* positional parameters */ > - > -[^=,]*,|[^=,]+,? { > - STRIP(','); > - > - if (DPC->err) { > - /* previous errors may just lead to subsequent ones */ > - } else if (!DPC->disk->src->path) { > - SAVESTRING("target", src->path, yytext); > - } else if (DPC->disk->src->format == VIR_STORAGE_FILE_LAST){ > - setformat(DPC, yytext); > - } > - else if (!DPC->disk->dst) { > - if (!vdev_and_devtype(DPC, yytext)) > - SAVESTRING("vdev", dst, yytext); > - } else if (!DPC->access_set) { > - DPC->access_set = 1; > - setaccess(DPC, yytext); > - } else { > - xenXLDiskParserError(DPC, yytext, "too many positional parameters"); > - return 0; /* don't print any more errors */ > - } > -} > - > -. { > - BEGIN(LEXERR); > - yymore(); > -} > -<LEXERR>.* { > - xenXLDiskParserError(DPC, yytext, "bad disk syntax"); > - return 0; > -} > diff --git a/src/xenconfig/xen_xl_disk_i.h b/src/xenconfig/xen_xl_disk_i.h > deleted file mode 100644 > index 063dedf..0000000 > --- a/src/xenconfig/xen_xl_disk_i.h > +++ /dev/null > @@ -1,39 +0,0 @@ > -/* > - * xen_xl_disk_i.h - common header for disk spec parser > - * > - * Copyright (C) 2011 Citrix Ltd. > - * Author Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > - * > - * This program is free software; you can redistribute it and/or modify > - * it under the terms of the GNU Lesser General Public License as published > - * by the Free Software Foundation; version 2.1 only. with the special > - * exception on linking described in file LICENSE. > - * > - * This program is distributed in the hope that it will be useful, > - * but WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > - * GNU Lesser General Public License for more details. > - */ > - > -#ifndef __VIR_XEN_XL_DISK_I_H__ > -# define __VIR_XEN_XL_DISK_I_H__ > - > -# include "virconf.h" > -# include "domain_conf.h" > - > - > -typedef struct { > - int err; > - void *scanner; > - YY_BUFFER_STATE buf; > - virDomainDiskDefPtr disk; > - int access_set; > - int had_depr_prefix; > - const char *spec; > -} xenXLDiskParserContext; > - > -void xenXLDiskParserError(xenXLDiskParserContext *dpc, > - const char *erroneous, > - const char *message); > - > -#endif /* __VIR_XEN_XL_DISK_I_H__ */ > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list