mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-25 15:06:14 +01:00
Refactor common code into create_unix_mount_point ()
https://bugzilla.gnome.org/show_bug.cgi?id=522053
This commit is contained in:
parent
44f4309e3b
commit
97f799b53a
@ -941,7 +941,7 @@ _g_get_unix_mount_points (void)
|
||||
struct mntent *mntent;
|
||||
FILE *file;
|
||||
char *read_file;
|
||||
GUnixMountPoint *mount_entry;
|
||||
GUnixMountPoint *mount_point;
|
||||
GList *return_list;
|
||||
|
||||
read_file = get_fstab_file ();
|
||||
@ -959,6 +959,11 @@ _g_get_unix_mount_points (void)
|
||||
while ((mntent = getmntent (file)) != NULL)
|
||||
#endif
|
||||
{
|
||||
const char *device_path = NULL;
|
||||
gboolean is_read_only = FALSE;
|
||||
gboolean is_user_mountable = FALSE;
|
||||
gboolean is_loopback = FALSE;
|
||||
|
||||
if ((strcmp (mntent->mnt_dir, "ignore") == 0) ||
|
||||
(strcmp (mntent->mnt_dir, "swap") == 0) ||
|
||||
(strcmp (mntent->mnt_dir, "none") == 0))
|
||||
@ -970,24 +975,20 @@ _g_get_unix_mount_points (void)
|
||||
continue;
|
||||
#endif
|
||||
|
||||
mount_entry = g_new0 (GUnixMountPoint, 1);
|
||||
mount_entry->mount_path = g_strdup (mntent->mnt_dir);
|
||||
if (strcmp (mntent->mnt_fsname, "/dev/root") == 0)
|
||||
mount_entry->device_path = g_strdup (_resolve_dev_root ());
|
||||
device_path = _resolve_dev_root ();
|
||||
else
|
||||
mount_entry->device_path = g_strdup (mntent->mnt_fsname);
|
||||
mount_entry->filesystem_type = g_strdup (mntent->mnt_type);
|
||||
mount_entry->options = g_strdup (mntent->mnt_opts);
|
||||
|
||||
device_path = mntent->mnt_fsname;
|
||||
|
||||
#ifdef HAVE_HASMNTOPT
|
||||
if (hasmntopt (mntent, MNTOPT_RO) != NULL)
|
||||
mount_entry->is_read_only = TRUE;
|
||||
|
||||
is_read_only = TRUE;
|
||||
|
||||
if (hasmntopt (mntent, "loop") != NULL)
|
||||
mount_entry->is_loopback = TRUE;
|
||||
|
||||
is_loopback = TRUE;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
if ((mntent->mnt_type != NULL && strcmp ("supermount", mntent->mnt_type) == 0)
|
||||
#ifdef HAVE_HASMNTOPT
|
||||
|| (hasmntopt (mntent, "user") != NULL
|
||||
@ -997,9 +998,17 @@ _g_get_unix_mount_points (void)
|
||||
|| hasmntopt (mntent, "owner") != NULL
|
||||
#endif
|
||||
)
|
||||
mount_entry->is_user_mountable = TRUE;
|
||||
|
||||
return_list = g_list_prepend (return_list, mount_entry);
|
||||
is_user_mountable = TRUE;
|
||||
|
||||
mount_point = create_unix_mount_point (device_path,
|
||||
mntent->mnt_dir,
|
||||
mntent->mnt_type,
|
||||
mntent->mnt_opts,
|
||||
is_read_only,
|
||||
is_user_mountable,
|
||||
is_loopback);
|
||||
|
||||
return_list = g_list_prepend (return_list, mount_point);
|
||||
}
|
||||
|
||||
endmntent (file);
|
||||
@ -1022,7 +1031,7 @@ _g_get_unix_mount_points (void)
|
||||
struct mnttab mntent;
|
||||
FILE *file;
|
||||
char *read_file;
|
||||
GUnixMountPoint *mount_entry;
|
||||
GUnixMountPoint *mount_point;
|
||||
GList *return_list;
|
||||
|
||||
read_file = get_fstab_file ();
|
||||
@ -1036,26 +1045,23 @@ _g_get_unix_mount_points (void)
|
||||
G_LOCK (getmntent);
|
||||
while (! getmntent (file, &mntent))
|
||||
{
|
||||
gboolean is_read_only = FALSE;
|
||||
gboolean is_user_mountable = FALSE;
|
||||
gboolean is_loopback = FALSE;
|
||||
|
||||
if ((strcmp (mntent.mnt_mountp, "ignore") == 0) ||
|
||||
(strcmp (mntent.mnt_mountp, "swap") == 0) ||
|
||||
(strcmp (mntent.mnt_mountp, "none") == 0))
|
||||
continue;
|
||||
|
||||
mount_entry = g_new0 (GUnixMountPoint, 1);
|
||||
|
||||
mount_entry->mount_path = g_strdup (mntent.mnt_mountp);
|
||||
mount_entry->device_path = g_strdup (mntent.mnt_special);
|
||||
mount_entry->filesystem_type = g_strdup (mntent.mnt_fstype);
|
||||
mount_entry->options = g_strdup (mntent.mnt_mntopts);
|
||||
|
||||
|
||||
#ifdef HAVE_HASMNTOPT
|
||||
if (hasmntopt (&mntent, MNTOPT_RO) != NULL)
|
||||
mount_entry->is_read_only = TRUE;
|
||||
|
||||
is_read_only = TRUE;
|
||||
|
||||
if (hasmntopt (&mntent, "lofs") != NULL)
|
||||
mount_entry->is_loopback = TRUE;
|
||||
is_loopback = TRUE;
|
||||
#endif
|
||||
|
||||
|
||||
if ((mntent.mnt_fstype != NULL)
|
||||
#ifdef HAVE_HASMNTOPT
|
||||
|| (hasmntopt (&mntent, "user") != NULL
|
||||
@ -1065,9 +1071,17 @@ _g_get_unix_mount_points (void)
|
||||
|| hasmntopt (&mntent, "owner") != NULL
|
||||
#endif
|
||||
)
|
||||
mount_entry->is_user_mountable = TRUE;
|
||||
|
||||
return_list = g_list_prepend (return_list, mount_entry);
|
||||
is_user_mountable = TRUE;
|
||||
|
||||
mount_point = create_unix_mount_point (mntent.mnt_special,
|
||||
mntent.mnt_mountp,
|
||||
mntent.mnt_fstype,
|
||||
mntent.mnt_mntopts,
|
||||
is_read_only,
|
||||
is_user_mountable,
|
||||
is_loopback);
|
||||
|
||||
return_list = g_list_prepend (return_list, mount_point);
|
||||
}
|
||||
|
||||
endmntent (file);
|
||||
@ -1192,7 +1206,7 @@ _g_get_unix_mount_points (void)
|
||||
struct mntent *mntent;
|
||||
FILE *file;
|
||||
char *read_file;
|
||||
GUnixMountPoint *mount_entry;
|
||||
GUnixMountPoint *mount_point;
|
||||
AixMountTableEntry mntent;
|
||||
GList *return_list;
|
||||
|
||||
@ -1208,16 +1222,15 @@ _g_get_unix_mount_points (void)
|
||||
{
|
||||
if (strcmp ("cdrfs", mntent.mnt_fstype) == 0)
|
||||
{
|
||||
mount_entry = g_new0 (GUnixMountPoint, 1);
|
||||
|
||||
mount_entry->mount_path = g_strdup (mntent.mnt_mount);
|
||||
mount_entry->device_path = g_strdup (mntent.mnt_special);
|
||||
mount_entry->filesystem_type = g_strdup (mntent.mnt_fstype);
|
||||
mount_entry->options = g_strdup (mntent.mnt_options);
|
||||
mount_entry->is_read_only = TRUE;
|
||||
mount_entry->is_user_mountable = TRUE;
|
||||
|
||||
return_list = g_list_prepend (return_list, mount_entry);
|
||||
mount_point = create_unix_mount_point (mntent.mnt_special,
|
||||
mntent.mnt_mount,
|
||||
mntent.mnt_fstype,
|
||||
mntent.mnt_options,
|
||||
TRUE,
|
||||
TRUE,
|
||||
FALSE);
|
||||
|
||||
return_list = g_list_prepend (return_list, mount_point);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1232,7 +1245,7 @@ static GList *
|
||||
_g_get_unix_mount_points (void)
|
||||
{
|
||||
struct fstab *fstab = NULL;
|
||||
GUnixMountPoint *mount_entry;
|
||||
GUnixMountPoint *mount_point;
|
||||
GList *return_list;
|
||||
#ifdef HAVE_SYS_SYSCTL_H
|
||||
int usermnt = 0;
|
||||
@ -1269,18 +1282,14 @@ _g_get_unix_mount_points (void)
|
||||
|
||||
while ((fstab = getfsent ()) != NULL)
|
||||
{
|
||||
gboolean is_read_only = FALSE;
|
||||
gboolean is_user_mountable = FALSE;
|
||||
|
||||
if (strcmp (fstab->fs_vfstype, "swap") == 0)
|
||||
continue;
|
||||
|
||||
mount_entry = g_new0 (GUnixMountPoint, 1);
|
||||
|
||||
mount_entry->mount_path = g_strdup (fstab->fs_file);
|
||||
mount_entry->device_path = g_strdup (fstab->fs_spec);
|
||||
mount_entry->filesystem_type = g_strdup (fstab->fs_vfstype);
|
||||
mount_entry->options = g_strdup (fstab->fs_mntops);
|
||||
|
||||
|
||||
if (strcmp (fstab->fs_type, "ro") == 0)
|
||||
mount_entry->is_read_only = TRUE;
|
||||
is_read_only = TRUE;
|
||||
|
||||
#ifdef HAVE_SYS_SYSCTL_H
|
||||
if (usermnt != 0)
|
||||
@ -1289,12 +1298,20 @@ _g_get_unix_mount_points (void)
|
||||
if (stat (fstab->fs_file, &sb) == 0)
|
||||
{
|
||||
if (uid == 0 || sb.st_uid == uid)
|
||||
mount_entry->is_user_mountable = TRUE;
|
||||
is_user_mountable = TRUE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return_list = g_list_prepend (return_list, mount_entry);
|
||||
mount_point = create_unix_mount_point (fstab->fs_spec,
|
||||
fstab->fs_file,
|
||||
fstab->fs_vfstype,
|
||||
fstab->fs_mntops,
|
||||
is_read_only,
|
||||
is_user_mountable,
|
||||
FALSE);
|
||||
|
||||
return_list = g_list_prepend (return_list, mount_point);
|
||||
}
|
||||
|
||||
endfsent ();
|
||||
|
Loading…
Reference in New Issue
Block a user