diff options
-rw-r--r-- | daemon/Makefile.am | 1 | ||||
-rw-r--r-- | daemon/available.c | 38 | ||||
-rw-r--r-- | po/POTFILES.in | 1 | ||||
-rw-r--r-- | src/MAX_PROC_NR | 2 | ||||
-rwxr-xr-x | src/generator.ml | 61 |
5 files changed, 101 insertions, 2 deletions
diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 1716c2f5..d851e527 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -41,6 +41,7 @@ $(libsrcdir)/guestfs_protocol.o: force noinst_PROGRAMS = guestfsd guestfsd_SOURCES = \ actions.h \ + available.c \ augeas.c \ blkid.c \ blockdev.c \ diff --git a/daemon/available.c b/daemon/available.c new file mode 100644 index 00000000..b43d1820 --- /dev/null +++ b/daemon/available.c @@ -0,0 +1,38 @@ +/* libguestfs - the guestfsd daemon + * Copyright (C) 2009 Red Hat Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <config.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "../src/guestfs_protocol.h" +#include "daemon.h" +#include "actions.h" + +int +do_available (char *const *groups) +{ + if (groups[0] != NULL) { + reply_with_error ("%s: unknown group", groups[0]); + return -1; + } + + return 0; +} diff --git a/po/POTFILES.in b/po/POTFILES.in index cf632fcf..2c7998d7 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,4 +1,5 @@ daemon/augeas.c +daemon/available.c daemon/blkid.c daemon/blockdev.c daemon/checksum.c diff --git a/src/MAX_PROC_NR b/src/MAX_PROC_NR index c34a8046..a817176f 100644 --- a/src/MAX_PROC_NR +++ b/src/MAX_PROC_NR @@ -1 +1 @@ -215 +216 diff --git a/src/generator.ml b/src/generator.ml index 6bc9b28c..cceb1915 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -758,7 +758,8 @@ To construct the original version string: C<$major.$minor.$release$extra> I<Note:> Don't use this call to test for availability -of features. Distro backports makes this unreliable."); +of features. Distro backports makes this unreliable. Use +C<guestfs_available> instead."); ("set_selinux", (RErr, [Bool "selinux"]), -1, [FishAlias "selinux"], [InitNone, Always, TestOutputTrue ( @@ -4102,6 +4103,64 @@ must be a number in the range C<[0..255]>. To fill a file with zero bytes (sparsely), it is much more efficient to use C<guestfs_truncate_size>."); + ("available", (RErr, [StringList "groups"]), 216, [], + [], + "test availability of some parts of the API", + "\ +This command is used to check the availability of some +groups of libguestfs functions which not all builds of +libguestfs will be able to provide. + +The precise libguestfs function groups that may be checked by this +command are listed in L<guestfs(3)/AVAILABILITY>. + +The argument C<groups> is a list of API group names, eg: +C<[\"inotify\", \"part\"]> would check for the availability of +the C<guestfs_inotify_*> functions and C<guestfs_part_*> +(partition editing) functions. + +The command returns no error if I<all> requested groups are available. + +It returns an error if one or more of the requested +groups is unavailable. + +If an unknown group name is included in the +list of C<groups> then an error is always returned. + +I<Notes:> + +=over 4 + +=item * + +You must call C<guestfs_launch> before calling this function. +The reason is because we don't know what function groups are +supported by the appliance/daemon until it is running and can +be queried. + +=item * + +If a group of functions is available, this does not necessarily +mean that they will work. You still have to check for errors +when calling individual API functions even if they are +available. + +=item * + +It is usually the job of distro packagers to build +complete functionality into the libguestfs appliance. +Upstream libguestfs, if built from source with all +requirements satisfied, will support everything. + +=item * + +This call was added in version C<1.0.80>. In previous +versions of libguestfs all you could do would be to speculatively +execute a command to find out if the daemon implemented it. +See also C<guestfs_version>. + +=back"); + ] let all_functions = non_daemon_functions @ daemon_functions |