2008-01-08 Robert Millan <rmh@aybabtu.com>

* kern/device.c (grub_device_iterate): Do not abort device iteration
        when one of the devices cannot be opened.
        * kern/disk.c (grub_disk_open): Do not account previous failures of
        unrelated functions when grub_errno is checked for.
This commit is contained in:
robertmh 2008-01-09 23:25:54 +00:00
parent 5aa541e6eb
commit de9993e01c
3 changed files with 13 additions and 3 deletions

View file

@ -1,3 +1,10 @@
2008-01-08 Robert Millan <rmh@aybabtu.com>
* kern/device.c (grub_device_iterate): Do not abort device iteration
when one of the devices cannot be opened.
* kern/disk.c (grub_disk_open): Do not account previous failures of
unrelated functions when grub_errno is checked for.
2008-01-08 Robert Millan <rmh@aybabtu.com>
* loader/i386/pc/linux.c (grub_rescue_cmd_linux): For

View file

@ -1,7 +1,7 @@
/* device.c - device manager */
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2005,2007 Free Software Foundation, Inc.
* Copyright (C) 2002,2005,2007,2008 Free Software Foundation, Inc.
*
* GRUB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -95,7 +95,7 @@ grub_device_iterate (int (*hook) (const char *name))
dev = grub_device_open (disk_name);
if (! dev)
return 1;
return 0;
if (dev->disk && dev->disk->has_partitions)
if (grub_partition_iterate (dev->disk, iterate_partition))

View file

@ -1,6 +1,6 @@
/*
* GRUB -- GRand Unified Bootloader
* Copyright (C) 2002,2003,2004,2006,2007 Free Software Foundation, Inc.
* Copyright (C) 2002,2003,2004,2006,2007,2008 Free Software Foundation, Inc.
*
* GRUB is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@ -217,6 +217,9 @@ grub_disk_open (const char *name)
char *raw = (char *) name;
unsigned long current_time;
/* Do not account previous failures when grub_errno is checked for. */
grub_errno = GRUB_ERR_NONE;
grub_dprintf ("disk", "Opening `%s'...\n", name);
disk = (grub_disk_t) grub_malloc (sizeof (*disk));