commit:     cbd0a3effad6a0e1dd6ce025f94b13bdb3b6472a
Author:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
AuthorDate: Thu Oct 22 18:52:46 2020 +0000
Commit:     Matt Turner <mattst88 <AT> gentoo <DOT> org>
CommitDate: Thu Oct 22 18:57:25 2020 +0000
URL:        https://gitweb.gentoo.org/proj/catalyst.git/commit/?id=cbd0a3ef

catalyst: Rewrite ismount() to use libmount

Signed-off-by: Matt Turner <mattst88 <AT> gentoo.org>

 catalyst/support.py | 33 +++++++++++----------------------
 1 file changed, 11 insertions(+), 22 deletions(-)

diff --git a/catalyst/support.py b/catalyst/support.py
index f49315a5..00a95006 100644
--- a/catalyst/support.py
+++ b/catalyst/support.py
@@ -5,8 +5,11 @@ import os
 import re
 import shutil
 import time
+from pathlib import Path
 from subprocess import Popen
 
+import libmount
+
 from catalyst import log
 
 BASH_BINARY = "/bin/bash"
@@ -179,31 +182,17 @@ def read_makeconf(mymakeconffile):
         return makeconf
 
 
-def pathcompare(path1, path2):
-    # Change double slashes to slash
-    path1 = re.sub(r"//", r"/", path1)
-    path2 = re.sub(r"//", r"/", path2)
-    # Removing ending slash
-    path1 = re.sub("/$", "", path1)
-    path2 = re.sub("/$", "", path2)
-
-    if path1 == path2:
-        return 1
-    return 0
-
-
 def ismount(path):
     """Like os.path.ismount, but also support bind mounts"""
     if os.path.ismount(path):
-        return 1
-    a = os.popen("mount")
-    mylines = a.readlines()
-    a.close()
-    for line in mylines:
-        mysplit = line.split()
-        if pathcompare(path, mysplit[2]):
-            return 1
-    return 0
+        return True
+
+    cxt = libmount.Context()
+    while (fs := cxt.mtab.next_fs()) is not None:
+        if Path(path) == Path(fs.source):
+            return True
+
+    return False
 
 
 def addl_arg_parse(myspec, addlargs, requiredspec, validspec):

Reply via email to