grub-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]