+static void zero_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_zero_args args;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_zero_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "zero");
+ return;
+ }
+ device = args.device;
+
+ r = do_zero (device);
+ if (r == -1)
+ /* do_zero has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_zero_args, (char *) &args);
+}
+
+static void grub_install_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_grub_install_args args;
+ char *root;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_grub_install_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "grub_install");
+ return;
+ }
+ root = args.root;
+ device = args.device;
+
+ r = do_grub_install (root, device);
+ if (r == -1)
+ /* do_grub_install has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_grub_install_args, (char *) &args);
+}
+
+static void cp_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_cp_args args;
+ char *src;
+ char *dest;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_cp_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "cp");
+ return;
+ }
+ src = args.src;
+ dest = args.dest;
+
+ r = do_cp (src, dest);
+ if (r == -1)
+ /* do_cp has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_cp_args, (char *) &args);
+}
+
+static void cp_a_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_cp_a_args args;
+ char *src;
+ char *dest;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_cp_a_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "cp_a");
+ return;
+ }
+ src = args.src;
+ dest = args.dest;
+
+ r = do_cp_a (src, dest);
+ if (r == -1)
+ /* do_cp_a has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_cp_a_args, (char *) &args);
+}
+
+static void mv_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_mv_args args;
+ char *src;
+ char *dest;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_mv_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "mv");
+ return;
+ }
+ src = args.src;
+ dest = args.dest;
+
+ r = do_mv (src, dest);
+ if (r == -1)
+ /* do_mv has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_mv_args, (char *) &args);
+}
+
+static void drop_caches_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_drop_caches_args args;
+ int whattodrop;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_drop_caches_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "drop_caches");
+ return;
+ }
+ whattodrop = args.whattodrop;
+
+ r = do_drop_caches (whattodrop);
+ if (r == -1)
+ /* do_drop_caches has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_drop_caches_args, (char *) &args);
+}
+
+static void dmesg_stub (XDR *xdr_in)
+{
+ char *r;
+
+ r = do_dmesg ();
+ if (r == NULL)
+ /* do_dmesg has already called reply_with_error */
+ goto done;
+
+ struct guestfs_dmesg_ret ret;
+ ret.kmsgs = r;
+ reply ((xdrproc_t) &xdr_guestfs_dmesg_ret, (char *) &ret);
+ free (r);
+done: ;
+}
+
+static void ping_daemon_stub (XDR *xdr_in)
+{
+ int r;
+
+ r = do_ping_daemon ();
+ if (r == -1)
+ /* do_ping_daemon has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done: ;
+}
+
+static void equal_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_equal_args args;
+ char *file1;
+ char *file2;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_equal_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "equal");
+ return;
+ }
+ file1 = args.file1;
+ file2 = args.file2;
+
+ r = do_equal (file1, file2);
+ if (r == -1)
+ /* do_equal has already called reply_with_error */
+ goto done;
+
+ struct guestfs_equal_ret ret;
+ ret.equality = r;
+ reply ((xdrproc_t) &xdr_guestfs_equal_ret, (char *) &ret);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_equal_args, (char *) &args);
+}
+
+static void strings_stub (XDR *xdr_in)
+{
+ char **r;
+ struct guestfs_strings_args args;
+ char *path;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_strings_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "strings");
+ return;
+ }
+ path = args.path;
+
+ r = do_strings (path);
+ if (r == NULL)
+ /* do_strings has already called reply_with_error */
+ goto done;
+
+ struct guestfs_strings_ret ret;
+ ret.stringsout.stringsout_len = count_strings (r);
+ ret.stringsout.stringsout_val = r;
+ reply ((xdrproc_t) &xdr_guestfs_strings_ret, (char *) &ret);
+ free_strings (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_strings_args, (char *) &args);
+}
+
+static void strings_e_stub (XDR *xdr_in)
+{
+ char **r;
+ struct guestfs_strings_e_args args;
+ char *encoding;
+ char *path;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_strings_e_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "strings_e");
+ return;
+ }
+ encoding = args.encoding;
+ path = args.path;
+
+ r = do_strings_e (encoding, path);
+ if (r == NULL)
+ /* do_strings_e has already called reply_with_error */
+ goto done;
+
+ struct guestfs_strings_e_ret ret;
+ ret.stringsout.stringsout_len = count_strings (r);
+ ret.stringsout.stringsout_val = r;
+ reply ((xdrproc_t) &xdr_guestfs_strings_e_ret, (char *) &ret);
+ free_strings (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_strings_e_args, (char *) &args);
+}
+
+static void hexdump_stub (XDR *xdr_in)
+{
+ char *r;
+ struct guestfs_hexdump_args args;
+ char *path;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_hexdump_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "hexdump");
+ return;
+ }
+ path = args.path;
+
+ r = do_hexdump (path);
+ if (r == NULL)
+ /* do_hexdump has already called reply_with_error */
+ goto done;
+
+ struct guestfs_hexdump_ret ret;
+ ret.dump = r;
+ reply ((xdrproc_t) &xdr_guestfs_hexdump_ret, (char *) &ret);
+ free (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_hexdump_args, (char *) &args);
+}
+
+static void zerofree_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_zerofree_args args;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_zerofree_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "zerofree");
+ return;
+ }
+ device = args.device;
+
+ r = do_zerofree (device);
+ if (r == -1)
+ /* do_zerofree has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_zerofree_args, (char *) &args);
+}
+
+static void pvresize_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_pvresize_args args;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_pvresize_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "pvresize");
+ return;
+ }
+ device = args.device;
+
+ r = do_pvresize (device);
+ if (r == -1)
+ /* do_pvresize has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_pvresize_args, (char *) &args);
+}
+
+static void sfdisk_N_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_sfdisk_N_args args;
+ char *device;
+ int n;
+ int cyls;
+ int heads;
+ int sectors;
+ char *line;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_sfdisk_N_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "sfdisk_N");
+ return;
+ }
+ device = args.device;
+ n = args.n;
+ cyls = args.cyls;
+ heads = args.heads;
+ sectors = args.sectors;
+ line = args.line;
+
+ r = do_sfdisk_N (device, n, cyls, heads, sectors, line);
+ if (r == -1)
+ /* do_sfdisk_N has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_sfdisk_N_args, (char *) &args);
+}
+
+static void sfdisk_l_stub (XDR *xdr_in)
+{
+ char *r;
+ struct guestfs_sfdisk_l_args args;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_sfdisk_l_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "sfdisk_l");
+ return;
+ }
+ device = args.device;
+
+ r = do_sfdisk_l (device);
+ if (r == NULL)
+ /* do_sfdisk_l has already called reply_with_error */
+ goto done;
+
+ struct guestfs_sfdisk_l_ret ret;
+ ret.partitions = r;
+ reply ((xdrproc_t) &xdr_guestfs_sfdisk_l_ret, (char *) &ret);
+ free (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_sfdisk_l_args, (char *) &args);
+}
+
+static void sfdisk_kernel_geometry_stub (XDR *xdr_in)
+{
+ char *r;
+ struct guestfs_sfdisk_kernel_geometry_args args;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_sfdisk_kernel_geometry_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "sfdisk_kernel_geometry");
+ return;
+ }
+ device = args.device;
+
+ r = do_sfdisk_kernel_geometry (device);
+ if (r == NULL)
+ /* do_sfdisk_kernel_geometry has already called reply_with_error */
+ goto done;
+
+ struct guestfs_sfdisk_kernel_geometry_ret ret;
+ ret.partitions = r;
+ reply ((xdrproc_t) &xdr_guestfs_sfdisk_kernel_geometry_ret, (char *) &ret);
+ free (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_sfdisk_kernel_geometry_args, (char *) &args);
+}
+
+static void sfdisk_disk_geometry_stub (XDR *xdr_in)
+{
+ char *r;
+ struct guestfs_sfdisk_disk_geometry_args args;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_sfdisk_disk_geometry_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "sfdisk_disk_geometry");
+ return;
+ }
+ device = args.device;
+
+ r = do_sfdisk_disk_geometry (device);
+ if (r == NULL)
+ /* do_sfdisk_disk_geometry has already called reply_with_error */
+ goto done;
+
+ struct guestfs_sfdisk_disk_geometry_ret ret;
+ ret.partitions = r;
+ reply ((xdrproc_t) &xdr_guestfs_sfdisk_disk_geometry_ret, (char *) &ret);
+ free (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_sfdisk_disk_geometry_args, (char *) &args);
+}
+
+static void vg_activate_all_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_vg_activate_all_args args;
+ int activate;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_vg_activate_all_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "vg_activate_all");
+ return;
+ }
+ activate = args.activate;
+
+ r = do_vg_activate_all (activate);
+ if (r == -1)
+ /* do_vg_activate_all has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_vg_activate_all_args, (char *) &args);
+}
+
+static void vg_activate_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_vg_activate_args args;
+ int activate;
+ char **volgroups;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_vg_activate_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "vg_activate");
+ return;
+ }
+ activate = args.activate;
+ volgroups = realloc (args.volgroups.volgroups_val,
+ sizeof (char *) * (args.volgroups.volgroups_len+1));
+ if (volgroups == NULL) {
+ reply_with_perror ("realloc");
+ goto done;
+ }
+ volgroups[args.volgroups.volgroups_len] = NULL;
+ args.volgroups.volgroups_val = volgroups;
+
+ r = do_vg_activate (activate, volgroups);
+ if (r == -1)
+ /* do_vg_activate has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_vg_activate_args, (char *) &args);
+}
+
+static void lvresize_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_lvresize_args args;
+ char *device;
+ int mbytes;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_lvresize_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "lvresize");
+ return;
+ }
+ device = args.device;
+ mbytes = args.mbytes;
+
+ r = do_lvresize (device, mbytes);
+ if (r == -1)
+ /* do_lvresize has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_lvresize_args, (char *) &args);
+}
+
+static void resize2fs_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_resize2fs_args args;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_resize2fs_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "resize2fs");
+ return;
+ }
+ device = args.device;
+
+ r = do_resize2fs (device);
+ if (r == -1)
+ /* do_resize2fs has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_resize2fs_args, (char *) &args);
+}
+
+static void find_stub (XDR *xdr_in)
+{
+ char **r;
+ struct guestfs_find_args args;
+ char *directory;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_find_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "find");
+ return;
+ }
+ directory = args.directory;
+
+ r = do_find (directory);
+ if (r == NULL)
+ /* do_find has already called reply_with_error */
+ goto done;
+
+ struct guestfs_find_ret ret;
+ ret.names.names_len = count_strings (r);
+ ret.names.names_val = r;
+ reply ((xdrproc_t) &xdr_guestfs_find_ret, (char *) &ret);
+ free_strings (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_find_args, (char *) &args);
+}
+
+static void e2fsck_f_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_e2fsck_f_args args;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_e2fsck_f_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "e2fsck_f");
+ return;
+ }
+ device = args.device;
+
+ r = do_e2fsck_f (device);
+ if (r == -1)
+ /* do_e2fsck_f has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_e2fsck_f_args, (char *) &args);
+}
+
+static void sleep_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_sleep_args args;
+ int secs;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_sleep_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "sleep");
+ return;
+ }
+ secs = args.secs;
+
+ r = do_sleep (secs);
+ if (r == -1)
+ /* do_sleep has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_sleep_args, (char *) &args);
+}
+
+static void ntfs_3g_probe_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_ntfs_3g_probe_args args;
+ int rw;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_ntfs_3g_probe_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "ntfs_3g_probe");
+ return;
+ }
+ rw = args.rw;
+ device = args.device;
+
+ r = do_ntfs_3g_probe (rw, device);
+ if (r == -1)
+ /* do_ntfs_3g_probe has already called reply_with_error */
+ goto done;
+
+ struct guestfs_ntfs_3g_probe_ret ret;
+ ret.status = r;
+ reply ((xdrproc_t) &xdr_guestfs_ntfs_3g_probe_ret, (char *) &ret);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_ntfs_3g_probe_args, (char *) &args);
+}
+
+static void sh_stub (XDR *xdr_in)
+{
+ char *r;
+ struct guestfs_sh_args args;
+ char *command;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_sh_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "sh");
+ return;
+ }
+ command = args.command;
+
+ r = do_sh (command);
+ if (r == NULL)
+ /* do_sh has already called reply_with_error */
+ goto done;
+
+ struct guestfs_sh_ret ret;
+ ret.output = r;
+ reply ((xdrproc_t) &xdr_guestfs_sh_ret, (char *) &ret);
+ free (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_sh_args, (char *) &args);
+}
+
+static void sh_lines_stub (XDR *xdr_in)
+{
+ char **r;
+ struct guestfs_sh_lines_args args;
+ char *command;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_sh_lines_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "sh_lines");
+ return;
+ }
+ command = args.command;
+
+ r = do_sh_lines (command);
+ if (r == NULL)
+ /* do_sh_lines has already called reply_with_error */
+ goto done;
+
+ struct guestfs_sh_lines_ret ret;
+ ret.lines.lines_len = count_strings (r);
+ ret.lines.lines_val = r;
+ reply ((xdrproc_t) &xdr_guestfs_sh_lines_ret, (char *) &ret);
+ free_strings (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_sh_lines_args, (char *) &args);
+}
+
+static void glob_expand_stub (XDR *xdr_in)
+{
+ char **r;
+ struct guestfs_glob_expand_args args;
+ char *pattern;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_glob_expand_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "glob_expand");
+ return;
+ }
+ pattern = args.pattern;
+
+ r = do_glob_expand (pattern);
+ if (r == NULL)
+ /* do_glob_expand has already called reply_with_error */
+ goto done;
+
+ struct guestfs_glob_expand_ret ret;
+ ret.paths.paths_len = count_strings (r);
+ ret.paths.paths_val = r;
+ reply ((xdrproc_t) &xdr_guestfs_glob_expand_ret, (char *) &ret);
+ free_strings (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_glob_expand_args, (char *) &args);
+}
+
+static void scrub_device_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_scrub_device_args args;
+ char *device;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_scrub_device_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "scrub_device");
+ return;
+ }
+ device = args.device;
+
+ r = do_scrub_device (device);
+ if (r == -1)
+ /* do_scrub_device has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_scrub_device_args, (char *) &args);
+}
+
+static void scrub_file_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_scrub_file_args args;
+ char *file;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_scrub_file_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "scrub_file");
+ return;
+ }
+ file = args.file;
+
+ r = do_scrub_file (file);
+ if (r == -1)
+ /* do_scrub_file has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_scrub_file_args, (char *) &args);
+}
+
+static void scrub_freespace_stub (XDR *xdr_in)
+{
+ int r;
+ struct guestfs_scrub_freespace_args args;
+ char *dir;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_scrub_freespace_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "scrub_freespace");
+ return;
+ }
+ dir = args.dir;
+
+ r = do_scrub_freespace (dir);
+ if (r == -1)
+ /* do_scrub_freespace has already called reply_with_error */
+ goto done;
+
+ reply (NULL, NULL);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_scrub_freespace_args, (char *) &args);
+}
+
+static void mkdtemp_stub (XDR *xdr_in)
+{
+ char *r;
+ struct guestfs_mkdtemp_args args;
+ char *template;
+
+ memset (&args, 0, sizeof args);
+
+ if (!xdr_guestfs_mkdtemp_args (xdr_in, &args)) {
+ reply_with_error ("%s: daemon failed to decode procedure arguments", "mkdtemp");
+ return;
+ }
+ template = args.template;
+
+ r = do_mkdtemp (template);
+ if (r == NULL)
+ /* do_mkdtemp has already called reply_with_error */
+ goto done;
+
+ struct guestfs_mkdtemp_ret ret;
+ ret.dir = r;
+ reply ((xdrproc_t) &xdr_guestfs_mkdtemp_ret, (char *) &ret);
+ free (r);
+done:
+ xdr_free ((xdrproc_t) xdr_guestfs_mkdtemp_args, (char *) &args);
+}
+