Even though the list of checks is very short, at least this migrates
from imperative checks to a "declarative" one.

There should be no behaviour change, other than using os-release if it
contains all the needed information.
---
 daemon/inspect_fs_unix.ml | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/daemon/inspect_fs_unix.ml b/daemon/inspect_fs_unix.ml
index 53c86e878..e2a7364bd 100644
--- a/daemon/inspect_fs_unix.ml
+++ b/daemon/inspect_fs_unix.ml
@@ -698,6 +698,17 @@ let rec check_openbsd_root mountable data =
 and check_hostname_openbsd () =
   check_hostname_from_file "/etc/myname"
 
+let hurd_root_tests : tests = [
+  (* Newer distros include /etc/os-release which is reasonably
+   * standardized.  This entry should be first.
+   *)
+  "/etc/os-release",     parse_os_release;
+  "/etc/debian_version", parse_generic DISTRO_DEBIAN;
+  (* Arch Hurd also exists, but inconveniently it doesn't have
+   * the normal /etc/arch-release file.  XXX
+   *)
+]
+
 (* The currently mounted device may be a Hurd root.  Hurd has distros
  * just like Linux.
  *)
@@ -705,13 +716,7 @@ let rec check_hurd_root mountable data =
   let os_type = OS_TYPE_HURD in
   data.os_type <- Some os_type;
 
-  if Is.is_file "/etc/debian_version" ~followsymlinks:true then (
-    let distro = DISTRO_DEBIAN in
-    ignore (parse_generic distro "/etc/debian_version" data)
-  );
-  (* Arch Hurd also exists, but inconveniently it doesn't have
-   * the normal /etc/arch-release file.  XXX
-   *)
+  check_tests data linux_root_tests;
 
   (* Determine the architecture. *)
   data.arch <- check_architecture ();
-- 
2.14.3

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://www.redhat.com/mailman/listinfo/libguestfs

Reply via email to