[gparted] Extract common code into Mount_Info::lookup_uuid_or_label() (#162)
- From: Curtis Gedak <gedakc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gparted] Extract common code into Mount_Info::lookup_uuid_or_label() (#162)
- Date: Sat, 14 Aug 2021 16:22:09 +0000 (UTC)
commit f5e6239452961225203fbf89860137b086921c67
Author: Mike Fleetwood <mike fleetwood googlemail com>
Date: Wed Aug 11 22:03:46 2021 +0100
Extract common code into Mount_Info::lookup_uuid_or_label() (#162)
Closes #162 - It is no longer possible to mount a LUKS encrypted file
system
include/Mount_Info.h | 1 +
src/Mount_Info.cc | 54 +++++++++++++++++++---------------------------------
2 files changed, 21 insertions(+), 34 deletions(-)
---
diff --git a/include/Mount_Info.h b/include/Mount_Info.h
index 7e8fee88..1e8a169c 100644
--- a/include/Mount_Info.h
+++ b/include/Mount_Info.h
@@ -67,6 +67,7 @@ private:
static bool have_rootfs_dev( MountMapping & map );
static void read_mountpoints_from_mount_command( MountMapping & map );
static const MountEntry& find(MountMapping& map, const Glib::ustring& path);
+ static Glib::ustring lookup_uuid_or_label(const Glib::ustring& ref);
};
} //GParted
diff --git a/src/Mount_Info.cc b/src/Mount_Info.cc
index 5a81276e..1609b8bc 100644
--- a/src/Mount_Info.cc
+++ b/src/Mount_Info.cc
@@ -142,24 +142,11 @@ void Mount_Info::read_mountpoints_from_file( const Glib::ustring & filename, Mou
struct mntent* p = NULL;
while ( ( p = getmntent( fp ) ) != NULL )
{
- Glib::ustring node = p->mnt_fsname;
- Glib::ustring mountpoint = p->mnt_dir;
+ Glib::ustring node = lookup_uuid_or_label(p->mnt_fsname);
+ if (node.empty())
+ node = p->mnt_fsname;
- Glib::ustring uuid = Utils::regexp_label( node, "^UUID=(.*)" );
- if ( ! uuid.empty() )
- {
- Glib::ustring temp = FS_Info::get_path_by_uuid(uuid);
- if (! temp.empty())
- node = temp;
- }
-
- Glib::ustring label = Utils::regexp_label( node, "^LABEL=(.*)" );
- if ( ! label.empty() )
- {
- Glib::ustring temp = FS_Info::get_path_by_label(label);
- if (! temp.empty())
- node = temp;
- }
+ Glib::ustring mountpoint = p->mnt_dir;
add_mountpoint_entry(map, node, mountpoint, parse_readonly_flag(p->mnt_opts));
}
@@ -281,23 +268,7 @@ const MountEntry& Mount_Info::find(MountMapping& map, const Glib::ustring& path)
}
for (unsigned i = 0; i < ref_nodes.size(); i++)
{
- Glib::ustring node;
- Glib::ustring uuid = Utils::regexp_label(ref_nodes[i].m_name, "^UUID=(.*)");
- if (! uuid.empty())
- {
- Glib::ustring temp = FS_Info::get_path_by_uuid(uuid);
- if (! temp.empty())
- node = temp;
- }
-
- Glib::ustring label = Utils::regexp_label(ref_nodes[i].m_name, "^LABEL=(.*)");
- if (! label.empty())
- {
- Glib::ustring temp = FS_Info::get_path_by_label(label);
- if (! temp.empty())
- node = temp;
- }
-
+ Glib::ustring node = lookup_uuid_or_label(ref_nodes[i].m_name);
if (! node.empty())
{
// Insert new mount entry and delete the old one.
@@ -314,4 +285,19 @@ const MountEntry& Mount_Info::find(MountMapping& map, const Glib::ustring& path)
return not_mounted;
}
+
+// Return file system's block device given a UUID=... or LABEL=... reference, or return
+// the empty string when not found.
+Glib::ustring Mount_Info::lookup_uuid_or_label(const Glib::ustring& ref)
+{
+ if (ref.compare(0, 5, "UUID=") == 0)
+ return FS_Info::get_path_by_uuid(ref.substr(5));
+
+ if (ref.compare(0, 6, "LABEL=") == 0)
+ return FS_Info::get_path_by_label(ref.substr(6));
+
+ return "";
+}
+
+
} //GParted
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]