commands/search: Refactor --no-floppy option to have something generic
Signed-off-by: Renaud Métrich <rmetrich@redhat.com> Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
parent
3e4cbbeca0
commit
21aed7b88a
@ -47,7 +47,7 @@ struct search_ctx
|
|||||||
{
|
{
|
||||||
const char *key;
|
const char *key;
|
||||||
const char *var;
|
const char *var;
|
||||||
int no_floppy;
|
enum search_flags flags;
|
||||||
char **hints;
|
char **hints;
|
||||||
unsigned nhints;
|
unsigned nhints;
|
||||||
int count;
|
int count;
|
||||||
@ -62,7 +62,7 @@ iterate_device (const char *name, void *data)
|
|||||||
int found = 0;
|
int found = 0;
|
||||||
|
|
||||||
/* Skip floppy drives when requested. */
|
/* Skip floppy drives when requested. */
|
||||||
if (ctx->no_floppy &&
|
if (ctx->flags & SEARCH_FLAGS_NO_FLOPPY &&
|
||||||
name[0] == 'f' && name[1] == 'd' && name[2] >= '0' && name[2] <= '9')
|
name[0] == 'f' && name[1] == 'd' && name[2] >= '0' && name[2] <= '9')
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -261,13 +261,13 @@ try (struct search_ctx *ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FUNC_NAME (const char *key, const char *var, int no_floppy,
|
FUNC_NAME (const char *key, const char *var, enum search_flags flags,
|
||||||
char **hints, unsigned nhints)
|
char **hints, unsigned nhints)
|
||||||
{
|
{
|
||||||
struct search_ctx ctx = {
|
struct search_ctx ctx = {
|
||||||
.key = key,
|
.key = key,
|
||||||
.var = var,
|
.var = var,
|
||||||
.no_floppy = no_floppy,
|
.flags = flags,
|
||||||
.hints = hints,
|
.hints = hints,
|
||||||
.nhints = nhints,
|
.nhints = nhints,
|
||||||
.count = 0,
|
.count = 0,
|
||||||
|
|||||||
@ -89,6 +89,7 @@ grub_cmd_search (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
const char *id = 0;
|
const char *id = 0;
|
||||||
int i = 0, j = 0, nhints = 0;
|
int i = 0, j = 0, nhints = 0;
|
||||||
char **hints = NULL;
|
char **hints = NULL;
|
||||||
|
enum search_flags flags = SEARCH_FLAGS_NONE;
|
||||||
|
|
||||||
if (state[SEARCH_HINT].set)
|
if (state[SEARCH_HINT].set)
|
||||||
for (i = 0; state[SEARCH_HINT].args[i]; i++)
|
for (i = 0; state[SEARCH_HINT].args[i]; i++)
|
||||||
@ -180,15 +181,15 @@ grub_cmd_search (grub_extcmd_context_t ctxt, int argc, char **args)
|
|||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (state[SEARCH_NO_FLOPPY].set)
|
||||||
|
flags |= SEARCH_FLAGS_NO_FLOPPY;
|
||||||
|
|
||||||
if (state[SEARCH_LABEL].set)
|
if (state[SEARCH_LABEL].set)
|
||||||
grub_search_label (id, var, state[SEARCH_NO_FLOPPY].set,
|
grub_search_label (id, var, flags, hints, nhints);
|
||||||
hints, nhints);
|
|
||||||
else if (state[SEARCH_FS_UUID].set)
|
else if (state[SEARCH_FS_UUID].set)
|
||||||
grub_search_fs_uuid (id, var, state[SEARCH_NO_FLOPPY].set,
|
grub_search_fs_uuid (id, var, flags, hints, nhints);
|
||||||
hints, nhints);
|
|
||||||
else if (state[SEARCH_FILE].set)
|
else if (state[SEARCH_FILE].set)
|
||||||
grub_search_fs_file (id, var, state[SEARCH_NO_FLOPPY].set,
|
grub_search_fs_file (id, var, flags, hints, nhints);
|
||||||
hints, nhints);
|
|
||||||
else
|
else
|
||||||
grub_error (GRUB_ERR_INVALID_COMMAND, "unspecified search type");
|
grub_error (GRUB_ERR_INVALID_COMMAND, "unspecified search type");
|
||||||
|
|
||||||
|
|||||||
@ -19,11 +19,20 @@
|
|||||||
#ifndef GRUB_SEARCH_HEADER
|
#ifndef GRUB_SEARCH_HEADER
|
||||||
#define GRUB_SEARCH_HEADER 1
|
#define GRUB_SEARCH_HEADER 1
|
||||||
|
|
||||||
void grub_search_fs_file (const char *key, const char *var, int no_floppy,
|
enum search_flags
|
||||||
|
{
|
||||||
|
SEARCH_FLAGS_NONE = 0,
|
||||||
|
SEARCH_FLAGS_NO_FLOPPY = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
void grub_search_fs_file (const char *key, const char *var,
|
||||||
|
enum search_flags flags,
|
||||||
char **hints, unsigned nhints);
|
char **hints, unsigned nhints);
|
||||||
void grub_search_fs_uuid (const char *key, const char *var, int no_floppy,
|
void grub_search_fs_uuid (const char *key, const char *var,
|
||||||
|
enum search_flags flags,
|
||||||
char **hints, unsigned nhints);
|
char **hints, unsigned nhints);
|
||||||
void grub_search_label (const char *key, const char *var, int no_floppy,
|
void grub_search_label (const char *key, const char *var,
|
||||||
|
enum search_flags flags,
|
||||||
char **hints, unsigned nhints);
|
char **hints, unsigned nhints);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user