X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=daemon%2Fscrub.c;h=e37a1e110b63e90e8afa79b2318e6fde159a69d9;hb=1c0ab7ab954c01cac2c87425a4b027e44c80e645;hp=2f14bcbe689f4c81b71e381999e5160c019a568e;hpb=a7b73d4a1e09f12b2002083618056f0c823c1dcf;p=libguestfs.git diff --git a/daemon/scrub.c b/daemon/scrub.c index 2f14bcb..e37a1e1 100644 --- a/daemon/scrub.c +++ b/daemon/scrub.c @@ -26,15 +26,21 @@ #include "daemon.h" #include "actions.h" +#include "optgroups.h" int -do_scrub_device (char *device) +optgroup_scrub_available (void) +{ + int r = access ("/usr/bin/scrub", X_OK); + return r == 0; +} + +int +do_scrub_device (const char *device) { char *err; int r; - IS_DEVICE (device, -1); - r = command (NULL, &err, "scrub", device, NULL); if (r == -1) { reply_with_error ("scrub_device: %s: %s", device, err); @@ -48,24 +54,18 @@ do_scrub_device (char *device) } int -do_scrub_file (char *file) +do_scrub_file (const char *file) { char *buf; - int len; char *err; int r; - NEED_ROOT (-1); - ABS_PATH (file, -1); - /* Make the path relative to /sysroot. */ - len = strlen (file) + 9; - buf = malloc (len); + buf = sysroot_path (file); if (!buf) { reply_with_perror ("malloc"); return -1; } - snprintf (buf, len, "/sysroot%s", file); r = command (NULL, &err, "scrub", "-r", buf, NULL); free (buf); @@ -81,24 +81,18 @@ do_scrub_file (char *file) } int -do_scrub_freespace (char *dir) +do_scrub_freespace (const char *dir) { char *buf; - int len; char *err; int r; - NEED_ROOT (-1); - ABS_PATH (dir, -1); - /* Make the path relative to /sysroot. */ - len = strlen (dir) + 9; - buf = malloc (len); + buf = sysroot_path (dir); if (!buf) { reply_with_perror ("malloc"); return -1; } - snprintf (buf, len, "/sysroot%s", dir); r = command (NULL, &err, "scrub", "-X", buf, NULL); free (buf);