libvirt/src/vbox
Eric Blake 00ef048f62 fdstream: drop delete argument
Revert 6a1f5f568f.  Now that libvirt_iohelper takes fds by
inheritance rather than by open() (commit 1eb66479), there is
no longer a race where the parent can unlink() a file prior to
the iohelper open()ing the same file.  From there, it makes
more sense to have the callers both create and unlink, rather
than the caller create and the stream unlink, since the latter
was only needed when iohelper had to do the unlink.

* src/fdstream.h (virFDStreamOpenFile, virFDStreamCreateFile):
Callers are responsible for deletion.
* src/fdstream.c (virFDStreamOpenFileInternal): Don't leak created
file on failure.
(virFDStreamOpenFile, virFDStreamCreateFile): Drop parameter.
* src/lxc/lxc_driver.c (lxcDomainOpenConsole): Update callers.
* src/qemu/qemu_driver.c (qemuDomainScreenshot)
(qemuDomainOpenConsole): Likewise.
* src/storage/storage_driver.c (storageVolumeDownload)
(storageVolumeUpload): Likewise.
* src/uml/uml_driver.c (umlDomainOpenConsole): Likewise.
* src/vbox/vbox_tmpl.c (vboxDomainScreenshot): Likewise.
* src/xen/xen_driver.c (xenUnifiedDomainOpenConsole): Likewise.
2011-08-02 14:53:43 -06:00
..
README
vbox_CAPI_v2_2.h vbox: Handle different IID representation in Version 2.2 on Windows 2010-12-27 23:53:39 +01:00
vbox_CAPI_v3_0.h vbox: Match struct layout of the MSCOM implementation on Windows 2010-12-17 22:15:24 +01:00
vbox_CAPI_v3_1.h vbox: Match struct layout of the MSCOM implementation on Windows 2010-12-17 22:15:24 +01:00
vbox_CAPI_v3_2.h vbox: Match struct layout of the MSCOM implementation on Windows 2010-12-17 22:15:24 +01:00
vbox_CAPI_v4_0.h vbox: Add support for VirtualBox 4.0 2010-12-28 00:18:46 +01:00
vbox_driver.c vbox: reject unknown flags 2011-07-13 16:40:07 -06:00
vbox_driver.h build: consistently indent preprocessor directives 2010-03-09 19:22:28 +01:00
vbox_glue.c vbox: Add glue layer for MSCOM on Windows 2010-12-17 22:51:33 +01:00
vbox_glue.h vbox: Add glue layer for MSCOM on Windows 2010-12-17 22:51:33 +01:00
vbox_MSCOMGlue.c util: choose whether to require micro in version strings 2011-07-01 11:22:11 -06:00
vbox_MSCOMGlue.h vbox: Add support for VirtualBox 4.0 2010-12-28 00:18:46 +01:00
vbox_tmpl.c fdstream: drop delete argument 2011-08-02 14:53:43 -06:00
vbox_V2_2.c
vbox_V3_0.c Add support for VBox 3 and event callbacks on vbox 2009-07-24 18:12:16 +02:00
vbox_V3_1.c vbox: Add support for version 3.1 2009-12-04 14:49:45 +01:00
vbox_V3_2.c Support for VirtualBox version 3.2 2010-05-27 01:28:21 +02:00
vbox_V4_0.c vbox: Add support for VirtualBox 4.0 2010-12-28 00:18:46 +01:00
vbox_XPCOMCGlue.c vbox: Fix typo in error message 2011-06-04 22:41:49 +02:00
vbox_XPCOMCGlue.h vbox: Add support for VirtualBox 4.0 2010-12-28 00:18:46 +01:00

    Explanation about the how multi-version support
    for VirtualBox libvirt driver is implemented.

Since VirtualBox adds multiple new features for each release, it is but
natural that the C API which VirtualBox exposes is volatile across
versions and thus needs a good mechanism to handle multiple versions
during runtime. The solution was something like this:

Firstly the file structure is as below:

vbox_CAPI_v2_2.h
vbox_XPCOMCGlue.h
vbox_XPCOMCGlue.c
These files are C API/glue code files directly taken from the
VirtualBox OSE source and is needed for C API to work as expected.

vbox_driver.h
vbox_driver.c
These files have the main logic for registering the virtualbox driver
with libvirt.

vbox_V2_2.c
The file which has version dependent changes and includes the template
file for given below for all of its functionality.

vbox_tmpl.c
The file where all the real driver implementation code exists.

Now there would be a vbox_V*.c file (for eg: vbox_V2_2.c for V2.2) for
each major virtualbox version which would do some preprocessor magic
and include the template file (vbox_tmpl.c) in it for the functionality
it offers.