+2008-06-19 Robert Millan <rmh@aybabtu.com>
+
+ * commands/search.c (search_label, search_fs_uuid, search_file): Print
+ search result when not saving to variable, not the other way around.
+ When saving to variable, abort iteration as soon as a match is found.
+
2008-06-19 Robert Millan <rmh@aybabtu.com>
* util/update-grub_lib.in (prepare_grub_to_access_device): Remove
int iterate_device (const char *name)
{
grub_device_t dev;
+ int abort = 0;
dev = grub_device_open (name);
if (dev)
if (grub_strcmp (label, key) == 0)
{
/* Found! */
+ count++;
if (var)
{
- grub_printf (" %s", name);
- if (count++ == 0)
- grub_env_set (var, name);
+ grub_env_set (var, name);
+ abort = 1;
}
+ else
+ grub_printf (" %s", name);
}
grub_free (label);
}
grub_errno = GRUB_ERR_NONE;
- return 0;
+ return abort;
}
grub_device_iterate (iterate_device);
int iterate_device (const char *name)
{
grub_device_t dev;
+ int abort = 0;
dev = grub_device_open (name);
if (dev)
if (grub_strcmp (uuid, key) == 0)
{
/* Found! */
+ count++;
if (var)
{
- grub_printf (" %s", name);
- if (count++ == 0)
- grub_env_set (var, name);
+ grub_env_set (var, name);
+ abort = 1;
}
+ else
+ grub_printf (" %s", name);
}
grub_free (uuid);
}
grub_errno = GRUB_ERR_NONE;
- return 0;
+ return abort;
}
grub_device_iterate (iterate_device);
grub_size_t len;
char *p;
grub_file_t file;
+ int abort = 0;
len = grub_strlen (name) + 2 + grub_strlen (key) + 1;
p = grub_realloc (buf, len);
if (file)
{
/* Found! */
+ count++;
if (var)
{
- grub_printf (" %s", name);
- if (count++ == 0)
- grub_env_set (var, name);
+ grub_env_set (var, name);
+ abort = 1;
}
+ else
+ grub_printf (" %s", name);
grub_file_close (file);
}
grub_errno = GRUB_ERR_NONE;
- return 0;
+ return abort;
}
grub_device_iterate (iterate_device);