X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fstubs.c;h=e51349aee1d4a20162d8a5de60722638bf28167f;hb=5b0fcfffc1872f335a2a6da9505f2e8926b1a740;hp=e9d9f594f4bed34c56e657e3eaf9fb1342f33c65;hpb=79cdf81e2fb717ea4372a55170d16800cdbddf23;p=libguestfs.git diff --git a/daemon/stubs.c b/daemon/stubs.c index e9d9f59..e51349a 100644 --- a/daemon/stubs.c +++ b/daemon/stubs.c @@ -19,7 +19,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#define _GNU_SOURCE // for strchrnul +#include #include #include @@ -1841,6 +1841,37 @@ done: xdr_free ((xdrproc_t) xdr_guestfs_mount_vfs_args, (char *) &args); } +static void debug_stub (XDR *xdr_in) +{ + char *r; + struct guestfs_debug_args args; + const char *subcmd; + char **extraargs; + + memset (&args, 0, sizeof args); + + if (!xdr_guestfs_debug_args (xdr_in, &args)) { + reply_with_error ("%s: daemon failed to decode procedure arguments", "debug"); + return; + } + subcmd = args.subcmd; + args.extraargs.extraargs_val = realloc (args.extraargs.extraargs_val, sizeof (char *) * (args.extraargs.extraargs_len+1)); + args.extraargs.extraargs_val[args.extraargs.extraargs_len] = NULL; + extraargs = args.extraargs.extraargs_val; + + r = do_debug (subcmd, extraargs); + if (r == NULL) + /* do_debug has already called reply_with_error */ + goto done; + + struct guestfs_debug_ret ret; + ret.result = r; + reply ((xdrproc_t) &xdr_guestfs_debug_ret, (char *) &ret); + free (r); +done: + xdr_free ((xdrproc_t) xdr_guestfs_debug_args, (char *) &args); +} + void dispatch_incoming_message (XDR *xdr_in) { switch (proc_nr) { @@ -2069,6 +2100,9 @@ void dispatch_incoming_message (XDR *xdr_in) case GUESTFS_PROC_MOUNT_VFS: mount_vfs_stub (xdr_in); break; + case GUESTFS_PROC_DEBUG: + debug_stub (xdr_in); + break; default: reply_with_error ("dispatch_incoming_message: unknown procedure number %d", proc_nr); }