OSDN Git Service

parted: make align-check work in interactive mode
authorPetr Uzel <petr.uzel@suse.cz>
Wed, 26 May 2010 12:29:01 +0000 (14:29 +0200)
committerJim Meyering <meyering@redhat.com>
Wed, 26 May 2010 17:15:52 +0000 (19:15 +0200)
* parted/parted.c (do_align_check): rework the function so that
it reports partition alignment in interactive mode as described in
documentation.

parted/parted.c

index 830075b..7723d18 100644 (file)
@@ -2078,18 +2078,29 @@ do_align_check (PedDevice **dev)
 {
   PedDisk *disk = ped_disk_new (*dev);
   if (!disk)
-    return 0;
+    goto error;
 
   enum AlignmentType align_type = PA_OPTIMUM;
   PedPartition *part = NULL;
-  bool aligned =
-    (command_line_get_align_type (_("alignment type(min/opt)"), &align_type)
-     && command_line_get_partition (_("Partition number?"), disk, &part)
-     && partition_align_check (disk, part, align_type));
+
+  if (!command_line_get_align_type (_("alignment type(min/opt)"), &align_type))
+    goto error_destroy_disk;
+  if (!command_line_get_partition (_("Partition number?"), disk, &part))
+    goto error_destroy_disk;
+
+  bool aligned = partition_align_check (disk, part, align_type);
+  if (!opt_script_mode)
+    printf(aligned ? _("%d aligned\n") : _("%d not aligned\n"), part->num);
 
   ped_disk_destroy (disk);
 
+  /* FIXME: perhaps we should always return 1 when in interactive mode???  */
   return aligned ? 1 : 0;
+
+error_destroy_disk:
+  ped_disk_destroy (disk);
+error:
+  return 0;
 }
 
 static int