New API: list-9p lists 9p filesystem mount tags (RHBZ#714981).
[libguestfs.git] / daemon / parted.c
index 89cc0d6..d52ad2c 100644 (file)
@@ -1,5 +1,5 @@
 /* libguestfs - the guestfsd daemon
- * Copyright (C) 2009 Red Hat Inc.
+ * Copyright (C) 2009-2011 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
@@ -287,21 +287,21 @@ test_parted_m_opt (void)
   if (result >= 0)
     return result;
 
-  if (verbose)
-    fprintf (stderr, "Testing if this parted supports '-m' option.\n");
-
   char *err = NULL;
   int r = commandr (NULL, &err, "parted", "-s", "-m", "/dev/null", NULL);
   if (r == -1) {
     /* Test failed, eg. missing or completely unusable parted binary. */
     reply_with_error ("could not run 'parted' command");
+    free (err);
     return -1;
   }
 
   if (err && strstr (err, "invalid option -- m"))
-    return result = 0;
-
-  return result = 1;
+    result = 0;
+  else
+    result = 1;
+  free (err);
+  return result;
 }
 
 static char *
@@ -328,9 +328,6 @@ print_partition_table (const char *device, int parted_has_m_opt)
   }
   free (err);
 
-  if (verbose)
-    fprintf (stderr, "parted output:\n%s<END>\n", out);
-
   return out;
 }
 
@@ -378,6 +375,14 @@ do_part_get_parttype (const char *device)
     }
 
     free_strings (lines);
+
+    /* If "loop" return an error (RHBZ#634246). */
+    if (STREQ (r, "loop")) {
+      free (r);
+      reply_with_error ("not a partitioned device");
+      return NULL;
+    }
+
     return r;
   }
   else {
@@ -406,6 +411,13 @@ do_part_get_parttype (const char *device)
       return NULL;
     }
 
+    /* If "loop" return an error (RHBZ#634246). */
+    if (STREQ (p, "loop")) {
+      free (p);
+      reply_with_error ("not a partitioned device");
+      return NULL;
+    }
+
     return p;                   /* caller frees */
   }
 }