Lib.pm: Use 'file' as replacement for 'zfile'.
[libguestfs.git] / daemon / ext2.c
index 99c12f0..5a1d0fd 100644 (file)
@@ -1,5 +1,5 @@
 /* libguestfs - the guestfsd daemon
- * Copyright (C) 2009 Red Hat Inc. 
+ * 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
@@ -28,7 +28,7 @@
 #include "actions.h"
 
 char **
-do_tune2fs_l (const char *device)
+do_tune2fs_l (char *device)
 {
   int r;
   char *out, *err;
@@ -117,11 +117,13 @@ do_tune2fs_l (const char *device)
 }
 
 int
-do_set_e2label (const char *device, const char *label)
+do_set_e2label (char *device, char *label)
 {
   int r;
   char *err;
 
+  IS_DEVICE (device, -1);
+
   r = command (NULL, &err, "/sbin/e2label", device, label, NULL);
   if (r == -1) {
     reply_with_error ("e2label: %s", err);
@@ -134,11 +136,13 @@ do_set_e2label (const char *device, const char *label)
 }
 
 char *
-do_get_e2label (const char *device)
+do_get_e2label (char *device)
 {
   int r, len;
   char *out, *err;
 
+  IS_DEVICE (device, NULL);
+
   r = command (&out, &err, "/sbin/e2label", device, NULL);
   if (r == -1) {
     reply_with_error ("e2label: %s", err);
@@ -158,11 +162,13 @@ do_get_e2label (const char *device)
 }
 
 int
-do_set_e2uuid (const char *device, const char *uuid)
+do_set_e2uuid (char *device, char *uuid)
 {
   int r;
   char *err;
 
+  IS_DEVICE (device, -1);
+
   r = command (NULL, &err, "/sbin/tune2fs", "-U", uuid, device, NULL);
   if (r == -1) {
     reply_with_error ("tune2fs -U: %s", err);
@@ -175,11 +181,13 @@ do_set_e2uuid (const char *device, const char *uuid)
 }
 
 char *
-do_get_e2uuid (const char *device)
+do_get_e2uuid (char *device)
 {
   int r;
   char *out, *err, *p, *q;
 
+  IS_DEVICE (device, NULL);
+
   /* It's not so straightforward to get the volume UUID.  We have
    * to use tune2fs -l and then look for a particular string in
    * the output.
@@ -234,3 +242,41 @@ do_get_e2uuid (const char *device)
   free (out);
   return p;                    /* caller frees */
 }
+
+int
+do_resize2fs (char *device)
+{
+  char *err;
+  int r;
+
+  IS_DEVICE (device, -1);
+
+  r = command (NULL, &err, "/sbin/resize2fs", device, NULL);
+  if (r == -1) {
+    reply_with_error ("resize2fs: %s", err);
+    free (err);
+    return -1;
+  }
+
+  free (err);
+  return 0;
+}
+
+int
+do_e2fsck_f (char *device)
+{
+  char *err;
+  int r;
+
+  IS_DEVICE (device, -1);
+
+  r = command (NULL, &err, "/sbin/e2fsck", "-p", "-f", device, NULL);
+  if (r == -1) {
+    reply_with_error ("e2fsck: %s", err);
+    free (err);
+    return -1;
+  }
+
+  free (err);
+  return 0;
+}