[2207] 2009-05-13 Robert Millan <[email protected]>

Robert Millan <[email protected]>
Newsgroups gmane.comp.boot-loaders.grub.cvs
Message-ID <[email protected]>
Revision: 2207
          http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2207
Author:   robertmh
Date:     2009-05-13 20:59:45 +0000 (Wed, 13 May 2009)
Log Message:
-----------
2009-05-13  Robert Millan  <[email protected]>

        * util/i386/pc/grub-setup.c (setup): Restructure code flow to make
        it easier to understand / work with.

Modified Paths:
--------------
    trunk/grub2/ChangeLog
    trunk/grub2/util/i386/pc/grub-setup.c

Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog	2009-05-13 20:52:35 UTC (rev 2206)
+++ trunk/grub2/ChangeLog	2009-05-13 20:59:45 UTC (rev 2207)
@@ -1,3 +1,8 @@
+2009-05-13  Robert Millan  <[email protected]>
+
+	* util/i386/pc/grub-setup.c (setup): Restructure code flow to make
+	it easier to understand / work with.
+
 2009-05-13  Pavel Roskin  <[email protected]>
 
 	* loader/i386/pc/multiboot2.c: Add necessary includes for

Modified: trunk/grub2/util/i386/pc/grub-setup.c
===================================================================
--- trunk/grub2/util/i386/pc/grub-setup.c	2009-05-13 20:52:35 UTC (rev 2206)
+++ trunk/grub2/util/i386/pc/grub-setup.c	2009-05-13 20:59:45 UTC (rev 2207)
@@ -310,17 +310,19 @@
 		  dos_part, bsd_part);
 
   if (! dest_dev->disk->has_partitions)
+    {
     grub_util_warn ("Attempting to install GRUB to a partitionless disk.  This is a BAD idea.");
+      goto unable_to_embed;
+    }
 
   if (dest_dev->disk->partition)
+    {
     grub_util_warn ("Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea.");
+      goto unable_to_embed;
+    }
   
-  /* If the destination device can have partitions and it is the MBR,
-     try to embed the core image into after the MBR.  */
-  if (dest_dev->disk->has_partitions && ! dest_dev->disk->partition)
-    {
       /* Unlike root_dev, with dest_dev we're interested in the partition map even
-	 if dest_dev itself is a whole disk.  */
+         if dest_dev itself is a whole disk.  */
       auto int NESTED_FUNC_ATTR identify_partmap (grub_disk_t disk,
 						  const grub_partition_t p);
       int NESTED_FUNC_ATTR identify_partmap (grub_disk_t disk __attribute__ ((unused)),
@@ -330,16 +332,22 @@
 	  return 1;
 	}
       grub_partition_iterate (dest_dev->disk, identify_partmap);
-
+      
       grub_partition_iterate (dest_dev->disk, (strcmp (dest_partmap, "pc_partition_map") ?
 					       find_usable_region_gpt : find_usable_region_msdos));
-      
-      if (embed_region.end != embed_region.start)
-	embedding_area_exists = 1;
-      
-      /* If there is enough space...  */
-      if ((unsigned long) core_sectors <= embed_region.end - embed_region.start)
-	{
+  if (embed_region.end == embed_region.start)
+    {
+      grub_util_warn ("Embedding area is not present at all!");
+      goto unable_to_embed;
+    }
+
+  if ((unsigned long) core_sectors > embed_region.end - embed_region.start)
+    {
+      grub_util_warn ("Embedding area is too small for core.img.");
+      goto unable_to_embed;
+    }
+
+
 	  grub_util_info ("will embed the core image at sector 0x%llx", embed_region.start);
 
 	  *install_dos_part = grub_cpu_to_le32 (dos_part);
@@ -374,16 +382,9 @@
 	    grub_util_error ("%s", grub_errmsg);
 
 	  goto finish;
-	}
-    }
   
-  /* If we reached this point, it means we were unable to embed.  */
+unable_to_embed:
   
-  if (embedding_area_exists)
-    grub_util_warn ("Embedding area is too small for core.img.");
-  else
-    grub_util_warn ("Embedding area is not present at all!");
-  
   if (must_embed)
     grub_util_error ("Embedding is not possible, but this is required when "
 		     "the root device is on a RAID array or LVM volume.");
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.