]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/disk/ieee1275/ofdisk.c (scan): Fix improper use of device
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 26 Feb 2012 15:51:25 +0000 (16:51 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 26 Feb 2012 15:51:25 +0000 (16:51 +0100)
name as if it was an alias.

ChangeLog
grub-core/disk/ieee1275/ofdisk.c

index 63b4fe5c09d8afcca235911062d6e2fb63020c20..447231df6a3aa2d9d69b83dd2f4b28cd8137e3d2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-25  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/disk/ieee1275/ofdisk.c (scan): Fix improper use of device
+       name as if it was an alias.
+
 2012-02-25  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/commands/lsacpi.c (options): Fix typo.
index 80bc06a456d3245280ef49ec640cb5bed4430797..56fed0a6a36914e8622e3daeafefa2995ae78b45 100644 (file)
@@ -115,26 +115,24 @@ ofdisk_hash_add (char *devpath, char *curcan)
 static void
 scan (void)
 {
-  auto int dev_iterate (struct grub_ieee1275_devalias *alias);
+  auto int dev_iterate_real (struct grub_ieee1275_devalias *alias,
+                            int use_name);
 
-  int dev_iterate (struct grub_ieee1275_devalias *alias)
+  int dev_iterate_real (struct grub_ieee1275_devalias *alias, int use_name)
     {
       struct ofdisk_hash_ent *op;
 
-      grub_dprintf ("disk", "device name = %s type = %s\n", alias->name,
-                   alias->type);
 
       if (grub_strcmp (alias->type, "block") != 0)
        return 0;
 
-      grub_dprintf ("disk", "disk name = %s\n", alias->name);
       grub_dprintf ("disk", "disk name = %s, path = %s\n", alias->name,
                    alias->path);
 
-      op = ofdisk_hash_find (alias->name);
+      op = ofdisk_hash_find (alias->path);
       if (!op)
        {
-         char *name = grub_strdup (alias->name);
+         char *name = grub_strdup (use_name ? alias->name : alias->path);
          char *can = grub_strdup (alias->path);
          if (!name || !can)
            {
@@ -148,7 +146,19 @@ scan (void)
       return 0;
     }
 
-  grub_devalias_iterate (dev_iterate);
+  auto int dev_iterate_alias (struct grub_ieee1275_devalias *alias);
+  int dev_iterate_alias (struct grub_ieee1275_devalias *alias)
+  {
+    return dev_iterate_real (alias, 1);
+  }
+
+  auto int dev_iterate (struct grub_ieee1275_devalias *alias);
+  int dev_iterate (struct grub_ieee1275_devalias *alias)
+  {
+    return dev_iterate_real (alias, 0);
+  }
+
+  grub_devalias_iterate (dev_iterate_alias);
   grub_ieee1275_devices_iterate (dev_iterate);
 }