[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/7] Factor out file filter function for reuse
From: |
Paul Dagnelie |
Subject: |
[PATCH 1/7] Factor out file filter function for reuse |
Date: |
Wed, 11 Mar 2020 10:37:09 -0700 |
This patch refactors out the logic that applies filters to files for reuse in
other code.
Signed-off-by: Paul Dagnelie <address@hidden>
---
grub-core/kern/file.c | 46 +++++++++++++++++++++++++------------------
1 file changed, 27 insertions(+), 19 deletions(-)
diff --git a/grub-core/kern/file.c b/grub-core/kern/file.c
index 58454458c..75eb5e2fa 100644
--- a/grub-core/kern/file.c
+++ b/grub-core/kern/file.c
@@ -57,14 +57,37 @@ grub_file_get_device_name (const char *name)
return 0;
}
+static grub_file_t
+grub_apply_file_filters (grub_file_t file, enum grub_file_type type, const
char *name)
+{
+ grub_file_filter_id_t filter;
+ grub_file_t last_file = NULL;
+
+ for (filter = 0; file && filter < ARRAY_SIZE (grub_file_filters);
+ filter++)
+ if (grub_file_filters[filter])
+ {
+ last_file = file;
+ file = grub_file_filters[filter] (file, type);
+ if (file && file != last_file)
+ {
+ file->name = grub_strdup (name);
+ grub_errno = GRUB_ERR_NONE;
+ }
+ }
+ if (!file)
+ grub_file_close (last_file);
+
+ return file;
+}
+
grub_file_t
grub_file_open (const char *name, enum grub_file_type type)
{
- grub_device_t device = 0;
- grub_file_t file = 0, last_file = 0;
+ grub_device_t device = NULL;
+ grub_file_t file = NULL;
char *device_name;
const char *file_name;
- grub_file_filter_id_t filter;
device_name = grub_file_get_device_name (name);
if (grub_errno)
@@ -113,22 +136,7 @@ grub_file_open (const char *name, enum grub_file_type type)
file->name = grub_strdup (name);
grub_errno = GRUB_ERR_NONE;
- for (filter = 0; file && filter < ARRAY_SIZE (grub_file_filters);
- filter++)
- if (grub_file_filters[filter])
- {
- last_file = file;
- file = grub_file_filters[filter] (file, type);
- if (file && file != last_file)
- {
- file->name = grub_strdup (name);
- grub_errno = GRUB_ERR_NONE;
- }
- }
- if (!file)
- grub_file_close (last_file);
-
- return file;
+ return grub_apply_file_filters(file, type, name);
fail:
if (device)
--
2.19.0
- [PATCH 0/7] ZFS/other CoW FS save_env support, Paul Dagnelie, 2020/03/11
- [PATCH 1/7] Factor out file filter function for reuse,
Paul Dagnelie <=
- [PATCH 2/7] Add support for special envblk functions in GRUB, Paul Dagnelie, 2020/03/11
- [PATCH 3/7] Factor out envblk buffer creation for reuse, Paul Dagnelie, 2020/03/11
- [PATCH 4/7] Use envblk file and fs functions to implement reading the grubenv file from special FS regions, Paul Dagnelie, 2020/03/11
- [PATCH 5/7] Add ZFS envblock functions, Paul Dagnelie, 2020/03/11
- [PATCH 6/7] Refactor default envblk size out for reuse, Paul Dagnelie, 2020/03/11
- [PATCH 7/7] Update editenv to support editing zfs envblock, fix whitespace, and autodetect bootenv support in libzfs, Paul Dagnelie, 2020/03/11
- Re: [PATCH 0/7] ZFS/other CoW FS save_env support, Daniel Kiper, 2020/03/25