summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Holy <oholy@redhat.com>2014-09-05 17:39:37 +0200
committerOndrej Holy <oholy@redhat.com>2014-10-13 14:23:08 +0200
commit038f186fa471c1da1b5c72aaae7dca89aa098aa6 (patch)
tree6b2b695d5573be7b3bdc3bdcc69a62fe80b2eaaf
parent3039959094e65edc25ba030d0be2e2362b5b3b5f (diff)
downloadgvfs-038f186fa471c1da1b5c72aaae7dca89aa098aa6.tar.gz
gvfs-mount: allow specifying G_MOUNT_UNMOUNT_FORCE
https://bugzilla.gnome.org/show_bug.cgi?id=710986
-rw-r--r--man/gvfs-mount.xml6
-rw-r--r--programs/gvfs-mount.c10
2 files changed, 14 insertions, 2 deletions
diff --git a/man/gvfs-mount.xml b/man/gvfs-mount.xml
index fbe0543f..64b7c374 100644
--- a/man/gvfs-mount.xml
+++ b/man/gvfs-mount.xml
@@ -112,6 +112,12 @@
</varlistentry>
<varlistentry>
+ <term><option>-f</option>, <option>--force</option></term>
+
+ <listitem><para>Ignore outstanding file operations when unmounting or ejecting.</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
<term><option>-l</option>, <option>--list</option></term>
<listitem><para>List all known mounts.</para></listitem>
diff --git a/programs/gvfs-mount.c b/programs/gvfs-mount.c
index 69f24bda..96abaa24 100644
--- a/programs/gvfs-mount.c
+++ b/programs/gvfs-mount.c
@@ -45,6 +45,7 @@ static GMainLoop *main_loop;
static gboolean mount_mountable = FALSE;
static gboolean mount_unmount = FALSE;
static gboolean mount_eject = FALSE;
+static gboolean force = FALSE;
static gboolean mount_list = FALSE;
static gboolean extra_detail = FALSE;
static gboolean mount_monitor = FALSE;
@@ -61,6 +62,7 @@ static const GOptionEntry entries[] =
{ "unmount", 'u', 0, G_OPTION_ARG_NONE, &mount_unmount, N_("Unmount"), NULL},
{ "eject", 'e', 0, G_OPTION_ARG_NONE, &mount_eject, N_("Eject"), NULL},
{ "unmount-scheme", 's', 0, G_OPTION_ARG_STRING, &unmount_scheme, N_("Unmount all mounts with the given scheme"), N_("SCHEME") },
+ { "force", 'f', 0, G_OPTION_ARG_NONE, &force, N_("Ignore outstanding file operations when unmounting or ejecting"), NULL },
/* Translator: List here is a verb as in 'List all mounts' */
{ "list", 'l', 0, G_OPTION_ARG_NONE, &mount_list, N_("List"), NULL},
{ "monitor", 'o', 0, G_OPTION_ARG_NONE, &mount_monitor, N_("Monitor events"), NULL},
@@ -299,6 +301,7 @@ unmount (GFile *file)
GMount *mount;
GError *error = NULL;
GMountOperation *mount_op;
+ GMountUnmountFlags flags;
if (file == NULL)
return;
@@ -312,7 +315,8 @@ unmount (GFile *file)
}
mount_op = new_mount_op ();
- g_mount_unmount_with_operation (mount, 0, mount_op, NULL, unmount_done_cb, NULL);
+ flags = force ? G_MOUNT_UNMOUNT_FORCE : G_MOUNT_UNMOUNT_NONE;
+ g_mount_unmount_with_operation (mount, flags, mount_op, NULL, unmount_done_cb, NULL);
g_object_unref (mount_op);
outstanding_mounts++;
@@ -348,6 +352,7 @@ eject (GFile *file)
GMount *mount;
GError *error = NULL;
GMountOperation *mount_op;
+ GMountUnmountFlags flags;
if (file == NULL)
return;
@@ -361,7 +366,8 @@ eject (GFile *file)
}
mount_op = new_mount_op ();
- g_mount_eject_with_operation (mount, 0, mount_op, NULL, eject_done_cb, NULL);
+ flags = force ? G_MOUNT_UNMOUNT_FORCE : G_MOUNT_UNMOUNT_NONE;
+ g_mount_eject_with_operation (mount, flags, mount_op, NULL, eject_done_cb, NULL);
g_object_unref (mount_op);
outstanding_mounts++;