]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
merge mainline into usb
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 16 Jul 2010 23:14:13 +0000 (01:14 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Fri, 16 Jul 2010 23:14:13 +0000 (01:14 +0200)
1  2 
disk/usbms.c

diff --cc disk/usbms.c
index 0a781ccec9ed3bd690fb80458c2452714acaf256,1301791e5d87b89e869e7a325c8f7dc5fc6480c4..225761e0f18f1d7b0b00418d5f8740c4d898a253
@@@ -205,25 -222,17 +205,18 @@@ grub_usbms_attach (grub_usb_device_t us
  \f
  
  static int
- grub_usbms_iterate (int (*hook) (const char *name, int luns))
+ grub_usbms_iterate (int (*hook) (int bus, int luns))
  {
 -  grub_usbms_dev_t p;
 -  int cnt = 0;
 +  unsigned i;
  
 -  for (p = grub_usbms_dev_list; p; p = p->next)
 -    {
 -      if (hook (cnt, p->luns))
 -      return 1;
 -      cnt++;
 -    }
 +  grub_usb_poll_devices ();
 +
 +  for (i = 0; i < ARRAY_SIZE (grub_usbms_devices); i++)
 +    if (grub_usbms_devices[i])
 +      {
-       char *devname;
-       devname = grub_xasprintf ("usb%d", i);
-       if (hook (devname, grub_usbms_devices[i]->luns))
-         {
-           grub_free (devname);
-           return 1;
-         }
-       grub_free (devname);
++      if (hook (i, grub_usbms_devices[i]->luns))
++        return 1;
 +      }
  
    return 0;
  }
@@@ -391,37 -391,28 +384,20 @@@ grub_usbms_write (struct grub_scsi *scs
  }
  
  static grub_err_t
- grub_usbms_open (const char *name, struct grub_scsi *scsi)
+ grub_usbms_open (int devnum, struct grub_scsi *scsi)
  {
-   int devnum;
-   if (grub_strncmp (name, "usb", 3))
-     return grub_error (GRUB_ERR_UNKNOWN_DEVICE,
-                      "not a USB Mass Storage device");
-   devnum = grub_strtoul (name + 3, NULL, 10);
 -  grub_usbms_dev_t p;
 -  int i = 0;
 +  grub_usb_poll_devices ();
  
 -  for (p = grub_usbms_dev_list; p; p = p->next)
 -    {
 -      /* Check if this is the devnumth device.  */
 -      if (devnum == i)
 -      {
 -        scsi->data = p;
 -        scsi->luns = p->luns;
 -        return GRUB_ERR_NONE;
 -      }
 +  if (!grub_usbms_devices[devnum])
 +    return grub_error (GRUB_ERR_UNKNOWN_DEVICE,
-                      "not a USB Mass Storage device");
++                     "unknown USB Mass Storage device");
  
 -      i++;
 -    }
 +  scsi->data = grub_usbms_devices[devnum];
-   scsi->name = grub_strdup (name);
 +  scsi->luns = grub_usbms_devices[devnum]->luns;
-   if (! scsi->name)
-     return grub_errno;
  
 -  return grub_error (GRUB_ERR_UNKNOWN_DEVICE,
 -                   "not a USB Mass Storage device");
 +  return GRUB_ERR_NONE;
  }
  
- static void
- grub_usbms_close (struct grub_scsi *scsi)
- {
-   grub_free (scsi->name);
- }
  static struct grub_scsi_dev grub_usbms_dev =
    {
      .name = "usb",