[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[2242] 2009-06-04 Robert Millan <address@hidden>
From: |
Robert Millan |
Subject: |
[2242] 2009-06-04 Robert Millan <address@hidden> |
Date: |
Thu, 04 Jun 2009 11:18:18 +0000 |
Revision: 2242
http://svn.sv.gnu.org/viewvc/?view=rev&root=grub&revision=2242
Author: robertmh
Date: 2009-06-04 11:18:18 +0000 (Thu, 04 Jun 2009)
Log Message:
-----------
2009-06-04 Robert Millan <address@hidden>
Simplify the code duplication in commands/search.c.
* commands/search.c (search_label, search_fs_uuid): Merge into ...
(search_fs): ... this. Update all users.
Modified Paths:
--------------
trunk/grub2/ChangeLog
trunk/grub2/commands/search.c
Modified: trunk/grub2/ChangeLog
===================================================================
--- trunk/grub2/ChangeLog 2009-06-03 13:53:10 UTC (rev 2241)
+++ trunk/grub2/ChangeLog 2009-06-04 11:18:18 UTC (rev 2242)
@@ -1,3 +1,10 @@
+2009-06-04 Robert Millan <address@hidden>
+
+ Simplify the code duplication in commands/search.c.
+
+ * commands/search.c (search_label, search_fs_uuid): Merge into ...
+ (search_fs): ... this. Update all users.
+
2009-06-03 Felix Zielcke <address@hidden>
* util/grub-mkconfig.in (update_grub_dir): Rename to grub_mkconfig_dir.
Modified: trunk/grub2/commands/search.c
===================================================================
--- trunk/grub2/commands/search.c 2009-06-03 13:53:10 UTC (rev 2241)
+++ trunk/grub2/commands/search.c 2009-06-04 11:18:18 UTC (rev 2242)
@@ -1,7 +1,7 @@
/* search.c - search devices based on a file or a filesystem label */
/*
* GRUB -- GRand Unified Bootloader
- * Copyright (C) 2005,2007,2008 Free Software Foundation, Inc.
+ * Copyright (C) 2005,2007,2008,2009 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
@@ -37,11 +37,11 @@
};
static void
-search_label (const char *key, const char *var)
+search_fs (const char *key, const char *var, int is_uuid)
{
int count = 0;
auto int iterate_device (const char *name);
-
+
int iterate_device (const char *name)
{
grub_device_t dev;
@@ -53,68 +53,17 @@
grub_fs_t fs;
fs = grub_fs_probe (dev);
- if (fs && fs->label)
- {
- char *label;
-
- (fs->label) (dev, &label);
- if (grub_errno == GRUB_ERR_NONE && label)
- {
- if (grub_strcmp (label, key) == 0)
- {
- /* Found! */
- count++;
- if (var)
- {
- grub_env_set (var, name);
- abort = 1;
- }
- else
- grub_printf (" %s", name);
- }
-
- grub_free (label);
- }
- }
-
- grub_device_close (dev);
- }
- grub_errno = GRUB_ERR_NONE;
- return abort;
- }
-
- grub_device_iterate (iterate_device);
-
- if (count == 0)
- grub_error (GRUB_ERR_FILE_NOT_FOUND, "no such device: %s", key);
-}
+#define QUID(x) (is_uuid ? (x)->uuid : (x)->label)
-static void
-search_fs_uuid (const char *key, const char *var)
-{
- int count = 0;
- auto int iterate_device (const char *name);
-
- int iterate_device (const char *name)
- {
- grub_device_t dev;
- int abort = 0;
-
- dev = grub_device_open (name);
- if (dev)
- {
- grub_fs_t fs;
-
- fs = grub_fs_probe (dev);
- if (fs && fs->uuid)
+ if (fs && QUID(fs))
{
- char *uuid;
+ char *quid;
- (fs->uuid) (dev, &uuid);
- if (grub_errno == GRUB_ERR_NONE && uuid)
+ (QUID(fs)) (dev, &quid);
+ if (grub_errno == GRUB_ERR_NONE && quid)
{
- if (grub_strcasecmp (uuid, key) == 0)
+ if (grub_strcmp (quid, key) == 0)
{
/* Found! */
count++;
@@ -124,16 +73,16 @@
abort = 1;
}
else
- grub_printf (" %s", name);
+ grub_printf (" %s", name);
}
- grub_free (uuid);
+ grub_free (quid);
}
}
grub_device_close (dev);
}
-
+
grub_errno = GRUB_ERR_NONE;
return abort;
}
@@ -207,9 +156,9 @@
var = state[3].arg ? state[3].arg : "root";
if (state[1].set)
- search_label (args[0], var);
+ search_fs (args[0], var, 0);
else if (state[2].set)
- search_fs_uuid (args[0], var);
+ search_fs (args[0], var, 1);
else
search_file (args[0], var);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [2242] 2009-06-04 Robert Millan <address@hidden>,
Robert Millan <=