Go to file
Eric Blake 8aecd35126 virsh: detect programming errors with option parsing
Noticed while reviewing another patch that had an accidental
mismatch due to refactoring.  An audit of the code showed that
very few callers of vshCommandOpt were expecting a return of
-2, indicating programmer error, and of those that DID check,
they just propagated that status to yet another caller that
did not check.  Fix this by making the code blatantly warn
the programmer, rather than silently ignoring it and possibly
doing the wrong thing downstream.

I know that we frown on assert()/abort() inside libvirtd
(libraries should NEVER kill the program that linked them),
but as virsh is an app rather than the library, and as this
is not the first use of assert() in virsh, I think this
approach is okay.

* tools/virsh.h (vshCommandOpt): Drop declaration.
* tools/virsh.c (vshCommandOpt): Make static, and add a
parameter.  Abort on programmer errors rather than making callers
repeat that logic.
(vshCommandOptInt, vshCommandOptUInt, vshCommandOptUL)
(vshCommandOptString, vshCommandOptStringReq)
(vshCommandOptLongLong, vshCommandOptULongLong)
(vshCommandOptBool): Adjust callers.

Signed-off-by: Eric Blake <eblake@redhat.com>
2013-08-28 14:48:24 -06:00
.gnulib@0ba087759d maint: update gnulib submodule 2013-08-15 16:54:30 -06:00
build-aux Add API for calling systemd-machined's DBus API 2013-07-22 13:09:58 +01:00
daemon Check for --no-copy-dt-needed linker flag 2013-08-22 16:17:36 +02:00
docs Add pcihole64 element to root PCI controllers 2013-08-27 17:42:29 +02:00
examples Test for object identity when checking for None in Python 2013-08-23 08:12:26 +02:00
gnulib build: add configure option to disable gnulib tests 2013-08-12 10:02:38 -06:00
include Add flag to BaselineCPU API to return detailed CPU features 2013-08-16 15:31:18 -06:00
m4 Check for --no-copy-dt-needed linker flag 2013-08-22 16:17:36 +02:00
po virBitmapParse: Fix behavior in case of error and fix up callers 2013-08-22 11:38:36 +02:00
python python: simplify complicated conditional assignment 2013-08-23 10:54:58 +02:00
src Test network update XML parsing 2013-08-28 08:05:46 +02:00
tests Test network update XML parsing 2013-08-28 08:05:46 +02:00
tools virsh: detect programming errors with option parsing 2013-08-28 14:48:24 -06:00
.ctags maint: Make ctags work out of the box 2013-07-18 08:47:21 +02:00
.dir-locals.el build: avoid tabs that failed syntax-check 2012-09-06 09:43:46 -06:00
.gitignore Add documentation for access control system 2013-08-09 17:13:02 +01:00
.gitmodules make .gnulib a submodule 2009-07-08 16:17:51 +02:00
.mailmap Autogenerate AUTHORS 2012-10-19 12:44:56 -04:00
AUTHORS.in Add John Ferlan to the committers list 2013-02-05 10:59:32 -05:00
COPYING maint: follow recommended practice for using LGPL 2013-05-20 14:15:21 -06:00
COPYING.LESSER maint: follow recommended practice for using LGPL 2013-05-20 14:15:21 -06:00
ChangeLog-old virterror.c: Fix several spelling mistakes 2012-02-03 11:32:51 -07:00
HACKING docs: mention VIR_TEST_RANGE 2013-08-12 20:44:41 -06:00
Makefile.am maint: split long lines in Makefiles 2013-07-19 05:25:35 -06:00
Makefile.nonreentrant maint: use LGPL correctly 2013-05-20 14:03:48 -06:00
README Correct typos in the documentation (Atsushi SAKAI) 2008-01-24 10:15:13 +00:00
README-hacking maint: relax git minimum version 2010-02-24 14:29:27 -05:00
TODO Update todo list file to point at bugzilla/website 2010-10-13 16:45:26 +01:00
autobuild.sh build: add configure option to disable gnulib tests 2013-08-12 10:02:38 -06:00
autogen.sh autogen: Handle case when libvirt's submodule 2013-07-19 13:45:22 +02:00
bootstrap maint: update gnulib submodule 2013-08-15 16:54:30 -06:00
bootstrap.conf maint: avoid bootstrap warning 2013-08-15 16:54:06 -06:00
cfg.mk Split TLS test into two separate tests 2013-08-08 10:00:42 +01:00
configure.ac Check for --no-copy-dt-needed linker flag 2013-08-22 16:17:36 +02:00
libvirt.pc.in build: silence warning from autoconf 2012-05-30 09:22:02 -06:00
libvirt.spec.in build: add configure option to disable gnulib tests 2013-08-12 10:02:38 -06:00
mingw-libvirt.spec.in build: add configure option to disable gnulib tests 2013-08-12 10:02:38 -06:00
run.in run: license as LGPL 2013-02-23 14:03:19 -07:00

README

         LibVirt : simple API for virtualization

  Libvirt is a C toolkit to interact with the virtualization capabilities
of recent versions of Linux (and other OSes). It is free software
available under the GNU Lesser General Public License. Virtualization of
the Linux Operating System means the ability to run multiple instances of
Operating Systems concurrently on a single hardware system where the basic
resources are driven by a Linux instance. The library aim at providing
long term stable C API initially for the Xen paravirtualization but
should be able to integrate other virtualization mechanisms if needed.

Daniel Veillard <veillard@redhat.com>