Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/helpers/disk.py
diff options
context:
space:
mode:
authorAnton Hvornum <anton.feeds+github@gmail.com>2020-07-06 16:43:29 +0200
committerAnton Hvornum <anton.feeds+github@gmail.com>2020-07-06 16:43:29 +0200
commitff9475ffe49d4ff8bca2b7fc1b6f8105e5277745 (patch)
treeaa8ed23ac6bd25365d64b2606946435641f81fb6 /helpers/disk.py
parent0dfc0d61952b1af94b895254e7a65f90229c8f25 (diff)
Changed mount function, since libc can't handle loop devices automatically without some how probing partitions?
Diffstat (limited to 'helpers/disk.py')
-rw-r--r--helpers/disk.py27
1 files changed, 13 insertions, 14 deletions
diff --git a/helpers/disk.py b/helpers/disk.py
index ba7972eb..84a6c2e5 100644
--- a/helpers/disk.py
+++ b/helpers/disk.py
@@ -1,16 +1,14 @@
import glob, re, os, json
from collections import OrderedDict
-from helpers.general import sys_command
+#import ctypes
+#import ctypes.util
from exceptions import *
-import ctypes
-import ctypes.util
-import os
+from helpers.general import sys_command
ROOT_DIR_PATTERN = re.compile('^.*?/devices')
GPT = 0b00000001
-libc = ctypes.CDLL(ctypes.util.find_library('c'), use_errno=True)
-libc.mount.argtypes = (ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_ulong, ctypes.c_char_p)
-
+#libc = ctypes.CDLL(ctypes.util.find_library('c'), use_errno=True)
+#libc.mount.argtypes = (ctypes.c_char_p, ctypes.c_char_p, ctypes.c_char_p, ctypes.c_ulong, ctypes.c_char_p)
class BlockDevice():
def __init__(self, path, info):
@@ -109,13 +107,14 @@ class Partition():
if not fs:
if not self.filesystem: raise DiskError(f'Need to format (or define) the filesystem on {self} before mounting.')
fs = self.filesystem
- # TODO: Move this to the BlockDevice or something.
- ret = libc.mount(self.path.encode(), target.encode(), fs.encode(), 0, options.encode())
- if ret < 0:
- errno = ctypes.get_errno()
- raise OSError(errno, f"Error mounting {self.path} ({fs}) on {target} with options '{options}': {os.strerror(errno)}")
- self.mountpoint = target
-
+ ## libc has some issues with loop devices, defaulting back to sys calls
+ # ret = libc.mount(self.path.encode(), target.encode(), fs.encode(), 0, options.encode())
+ # if ret < 0:
+ # errno = ctypes.get_errno()
+ # raise OSError(errno, f"Error mounting {self.path} ({fs}) on {target} with options '{options}': {os.strerror(errno)}")
+ if sys_command(f'/usr/bin/mount {self.path} {target}').exit_code == 0:
+ self.mountpoint = target
+ return True
class luks2():
def __init__(self, filesystem):