[Xfce4-commits] <exo:master> Use the GIO code for reading mount points in exo-mount.

Nick Schermer noreply at xfce.org
Fri Oct 23 17:46:01 CEST 2009


Updating branch refs/heads/master
         to 9e9a788ed6f54a9cc9a5b06c7fc646597ea99a2c (commit)
       from e30594c963df9e87bb8ce5c4675c4037da81fbe2 (commit)

commit 9e9a788ed6f54a9cc9a5b06c7fc646597ea99a2c
Author: Nick Schermer <nick at xfce.org>
Date:   Fri Oct 23 13:56:20 2009 +0200

    Use the GIO code for reading mount points in exo-mount.

 configure.in.in             |    2 +
 exo-mount/Makefile.am       |   15 ++-
 exo-mount/exo-mount-fstab.c |  282 -------------------------------------------
 exo-mount/exo-mount-fstab.h |   40 ------
 exo-mount/exo-mount-utils.c |   59 ---------
 exo-mount/exo-mount-utils.h |   32 -----
 exo-mount/main.c            |  164 +++++++++++++++++++++++--
 7 files changed, 163 insertions(+), 431 deletions(-)

diff --git a/configure.in.in b/configure.in.in
index b405820..43bee55 100644
--- a/configure.in.in
+++ b/configure.in.in
@@ -100,8 +100,10 @@ dnl *** Loopup hardcoded paths we use internally ***
 dnl ************************************************
 AC_PATH_PROG([PATH_MOUNT], [mount], [/bin/mount])
 AC_PATH_PROG([PATH_UMOUNT], [umount], [/bin/umount])
+AC_PATH_PROG([PATH_EJECT], [eject], [/usr/bin/eject])
 AC_SUBST([PATH_MOUNT])
 AC_SUBST([PATH_UMOUNT])
+AC_SUBST([PATH_EJECT])
 
 dnl ***************************************
 dnl *** Check for required Perl modules ***
diff --git a/exo-mount/Makefile.am b/exo-mount/Makefile.am
index f035efe..73e09b9 100644
--- a/exo-mount/Makefile.am
+++ b/exo-mount/Makefile.am
@@ -8,7 +8,8 @@ INCLUDES = 								\
 	-DLIBEXO_VERSION_API=\"$(LIBEXO_VERSION_API)\"			\
 	-DPACKAGE_LOCALE_DIR=\"$(localedir)\"				\
 	-DPATH_MOUNT=\"$(PATH_MOUNT)\"					\
-	-DPATH_UMOUNT=\"$(PATH_UMOUNT)\"
+	-DPATH_UMOUNT=\"$(PATH_UMOUNT)\"				\
+	-DPATH_EJECT=\"$(PATH_EJECT)\"
 
 defaultsdir = $(sysconfdir)/xdg/xfce4
 defaults_DATA = mount.rc
@@ -17,10 +18,6 @@ bin_PROGRAMS =								\
 	exo-mount
 
 exo_mount_SOURCES =							\
-	exo-mount-fstab.c						\
-	exo-mount-fstab.h						\
-	exo-mount-utils.c						\
-	exo-mount-utils.h						\
 	main.c
 
 if HAVE_HAL
@@ -32,7 +29,9 @@ endif
 exo_mount_CFLAGS =							\
 	$(GTK_CFLAGS)							\
 	$(HAL_CFLAGS)							\
-	$(LIBXFCE4UTIL_CFLAGS)
+	$(LIBXFCE4UTIL_CFLAGS)						\
+	$(GIO_CFLAGS)							\
+	$(GIO_UNIX_CFLAGS)
 
 exo_mount_LDFLAGS =							\
 	-no-undefined
@@ -45,7 +44,9 @@ exo_mount_LDADD =							\
 	$(GTK_LIBS)							\
 	$(HAL_LIBS)							\
 	$(LIBXFCE4UTIL_LIBS)						\
-	$(top_builddir)/exo/libexo-$(LIBEXO_VERSION_API).la \
+	$(GIO_LIBS)							\
+	$(GIO_UNIX_LIBS)						\
+	$(top_builddir)/exo/libexo-$(LIBEXO_VERSION_API).la		\
 	$(top_builddir)/exo-hal/libexo-hal-$(LIBEXO_VERSION_API).la
 
 # install apppropriate symlinks
diff --git a/exo-mount/exo-mount-fstab.c b/exo-mount/exo-mount-fstab.c
deleted file mode 100644
index 1164d81..0000000
--- a/exo-mount/exo-mount-fstab.c
+++ /dev/null
@@ -1,282 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2006-2007 Benedikt Meurer <benny at xfce.org>.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_MEMORY_H
-#include <memory.h>
-#endif
-#ifdef HAVE_PATHS_H
-#include <paths.h>
-#endif
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#include <exo-mount/exo-mount-fstab.h>
-#include <exo-mount/exo-mount-utils.h>
-
-
-
-static gboolean exo_mount_fstab_exec   (const gchar *command,
-                                        const gchar *argument,
-                                        GError     **error);
-static gchar   *exo_mount_fstab_lookup (const gchar *device_file,
-                                        GError     **error) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
-
-
-
-static gboolean
-exo_mount_fstab_exec (const gchar *command,
-                      const gchar *argument,
-                      GError     **error)
-{
-  gboolean result;
-  gchar   *standard_error;
-  gchar   *command_line;
-  gchar   *quoted;
-  gint     status;
-
-  g_return_val_if_fail (command != NULL, FALSE);
-  g_return_val_if_fail (argument != NULL, FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-  /* generate the command line */
-  quoted = g_shell_quote (argument);
-  command_line = g_strconcat (command, " ", quoted, NULL);
-  g_free (quoted);
-
-  /* try to execute the command line */
-  result = g_spawn_command_line_sync (command_line, NULL, &standard_error, &status, error);
-  if (G_LIKELY (result))
-    {
-      /* check if the command failed */
-      if (G_UNLIKELY (status != 0))
-        {
-          /* drop additional whitespace from the stderr output */
-          g_strstrip (standard_error);
-
-          /* strip all trailing dots from the stderr output */
-          while (*standard_error != '\0' && standard_error[strlen (standard_error) - 1] == '.')
-            standard_error[strlen (standard_error) - 1] = '\0';
-
-          /* generate an error from the stderr output */
-          if (G_LIKELY (*standard_error != '\0'))
-            g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, "%s", standard_error);
-          else
-            g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, _("Unknown error"));
-
-          /* and yes, we failed */
-          result = FALSE;
-        }
-
-      /* release the stderr output */
-      g_free (standard_error);
-    }
-
-  /* cleanup */
-  g_free (command_line);
-
-  return result;
-}
-
-
-
-static gchar*
-exo_mount_fstab_lookup (const gchar *device_file,
-                        GError     **error)
-{
-  GError *err = NULL;
-  GSList *mount_points;
-  gchar  *path = NULL;
-
-  /* lookup the configured device in the file system table using the ExoMountPoint module */
-  mount_points = exo_mount_point_list_matched (EXO_MOUNT_POINT_MATCH_CONFIGURED | EXO_MOUNT_POINT_MATCH_DEVICE, device_file, NULL, NULL, &err);
-  if (G_LIKELY (mount_points != NULL))
-    {
-      /* take a copy of the folder path of the first matching mount point */
-      path = g_strdup (((const ExoMountPoint *) mount_points->data)->folder);
-
-      /* cleanup the mount points */
-      g_slist_foreach (mount_points, (GFunc) exo_mount_point_free, NULL);
-      g_slist_free (mount_points);
-    }
-  else if (err == NULL)
-    {
-      /* TRANSLATORS: a device is missing from the file system table (usually /etc/fstab) */
-      g_set_error (&err, G_FILE_ERROR, G_FILE_ERROR_INVAL, _("Device \"%s\" not found in file system device table"), device_file);
-    }
-
-  /* check if we failed */
-  if (G_UNLIKELY (err != NULL))
-    {
-      /* propagate the error */
-      g_propagate_error (error, err);
-      return NULL;
-    }
-
-  return path;
-}
-
-
-
-/**
- * exo_mount_fstab_contains:
- * @device_file : the absolute path to a block device file.
- *
- * Checks whether an entry for the @device_file exists in the
- * file system table file <tt>/etc/fstab</tt>. Returns %TRUE if
- * such an entry exists, %FALSE otherwise.
- *
- * Return value: %TRUE if an entry for @device_file is present
- *               in <tt>/dev/fstab</tt>, %FALSE otherwise.
- **/
-gboolean
-exo_mount_fstab_contains (const gchar *device_file)
-{
-  gchar *mount_point;
-
-  g_return_val_if_fail (g_path_is_absolute (device_file), FALSE);
-
-  /* check if we have an fstab entry */
-  mount_point = exo_mount_fstab_lookup (device_file, NULL);
-  if (G_LIKELY (mount_point != NULL))
-    {
-      /* jap, match found */
-      g_free (mount_point);
-      return TRUE;
-    }
-
-  /* no match */
-  return FALSE;
-}
-
-
-
-/**
- * exo_mount_fstab_eject:
- * @device_file : the absolute path to a block device file.
- * @error       : return location for errors or %NULL.
- *
- * Ejects the device identified by the @device_file. Returns
- * %TRUE if the device was successfully ejected, %FALSE otherwise.
- *
- * Return value: %TRUE on success, %FALSE if @error is set.
- **/
-gboolean
-exo_mount_fstab_eject (const gchar *device_file,
-                       GError     **error)
-{
-  gboolean result;
-  gchar   *mount_point;
-  gchar   *device_name;
-
-  g_return_val_if_fail (g_path_is_absolute (device_file), FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-  /* verify that the device is listed in the fstab */
-  mount_point = exo_mount_fstab_lookup (device_file, error);
-  if (G_UNLIKELY (mount_point == NULL))
-    return FALSE;
-  g_free (mount_point);
-
-  /* try to eject the device */
-  device_name = g_path_get_basename (device_file);
-  result = exo_mount_fstab_exec ("eject", device_name, error);
-  g_free (device_name);
-
-  return result;
-}
-
-
-
-/**
- * exo_mount_fstab_mount:
- * @device_file : the absolute path to a block device file.
- * @error       : return location for errors or %NULL.
- *
- * Mounts the device identified by the @device_file. Returns %TRUE
- * if the device was successfully mounted, %FALSE in case or an
- * error.
- *
- * Return value: %TRUE if successfull, %FALSE otherwise.
- **/
-gboolean
-exo_mount_fstab_mount (const gchar *device_file,
-                       GError     **error)
-{
-  gboolean result;
-  gchar   *mount_point;
-
-  g_return_val_if_fail (g_path_is_absolute (device_file), FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-  /* determine the mount point of the device from the fstab */
-  mount_point = exo_mount_fstab_lookup (device_file, error);
-  if (G_UNLIKELY (mount_point == NULL))
-    return FALSE;
-
-  /* try to mount the device */
-  result = exo_mount_fstab_exec (PATH_MOUNT, mount_point, error);
-
-  /* cleanup */
-  g_free (mount_point);
-
-  return result;
-}
-
-
-
-
-/**
- * exo_mount_fstab_unmount:
- * @device_file : the absolute path to a block device file.
- * @error       : return location for errors or %NULL.
- *
- * Unmounts the device identified by the @device_file. Returns
- * %TRUE if the device was successfully unmounted, %FALSE in
- * case of an error.
- *
- * Return value: %TRUE if successfull, %FALSE otherwise.
- **/
-gboolean
-exo_mount_fstab_unmount (const gchar *device_file,
-                         GError     **error)
-{
-  gboolean result;
-  gchar   *mount_point;
-
-  g_return_val_if_fail (g_path_is_absolute (device_file), FALSE);
-  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-  /* determine the mount point of the device from the fstab */
-  mount_point = exo_mount_fstab_lookup (device_file, error);
-  if (G_UNLIKELY (mount_point == NULL))
-    return FALSE;
-
-  /* try to mount the device */
-  result = exo_mount_fstab_exec (PATH_UMOUNT, mount_point, error);
-
-  /* cleanup */
-  g_free (mount_point);
-
-  return result;
-}
diff --git a/exo-mount/exo-mount-fstab.h b/exo-mount/exo-mount-fstab.h
deleted file mode 100644
index 781df53..0000000
--- a/exo-mount/exo-mount-fstab.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2006-2007 Benedikt Meurer <benny at xfce.org>.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-
-#ifndef __EXO_MOUNT_FSTAB_H__
-#define __EXO_MOUNT_FSTAB_H__
-
-#include <exo/exo.h>
-
-G_BEGIN_DECLS
-
-gboolean exo_mount_fstab_contains (const gchar *device_file);
-
-gboolean exo_mount_fstab_eject    (const gchar *device_file,
-                                   GError     **error);
-
-gboolean exo_mount_fstab_mount    (const gchar *device_file,
-                                   GError     **error);
-
-gboolean exo_mount_fstab_unmount  (const gchar *device_file,
-                                   GError     **error);
-
-G_END_DECLS
-
-#endif /* !__EXO_MOUNT_FSTAB_H__ */
diff --git a/exo-mount/exo-mount-utils.c b/exo-mount/exo-mount-utils.c
deleted file mode 100644
index 4ace355..0000000
--- a/exo-mount/exo-mount-utils.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2006-2007 Benedikt Meurer <benny at xfce.org>.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <exo-mount/exo-mount-utils.h>
-
-
-
-/**
- * exo_mount_utils_is_mounted:
- * @device_file     : an absolute path to a device file.
- * @readonly_return : if non-%NULL and the device is mounted, this
- *                    specifies whether the device was mounted ro.
- *
- * Returns %TRUE if the @device_file is already mounted
- * somewhere in the system, %FALSE otherwise.
- *
- * Return value: %TRUE if @device_file is mounted, else %FALSE.
- **/
-gboolean
-exo_mount_utils_is_mounted (const gchar *device_file,
-                            gboolean    *readonly_return)
-{
-  GSList *mount_points;
-
-  /* check if we have an active mount point for the device file */
-  mount_points = exo_mount_point_list_matched (EXO_MOUNT_POINT_MATCH_ACTIVE | EXO_MOUNT_POINT_MATCH_DEVICE, device_file, NULL, NULL, NULL);
-  if (G_LIKELY (mount_points != NULL))
-    {
-      /* check if the first matching device is mounted read-only */
-      if (G_LIKELY (readonly_return != NULL))
-        *readonly_return = ((((const ExoMountPoint *) mount_points->data)->flags & EXO_MOUNT_POINT_READ_ONLY) != 0);
-      g_slist_foreach (mount_points, (GFunc) exo_mount_point_free, NULL);
-      g_slist_free (mount_points);
-      return TRUE;
-    }
-
-  return FALSE;
-}
-
diff --git a/exo-mount/exo-mount-utils.h b/exo-mount/exo-mount-utils.h
deleted file mode 100644
index 2b61b95..0000000
--- a/exo-mount/exo-mount-utils.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* $Id$ */
-/*-
- * Copyright (c) 2006-2007 Benedikt Meurer <benny at xfce.org>.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA  02111-1307  USA.
- */
-
-#ifndef __EXO_MOUNT_UTILS_H__
-#define __EXO_MOUNT_UTILS_H__
-
-#include <exo/exo.h>
-
-G_BEGIN_DECLS
-
-gboolean exo_mount_utils_is_mounted (const gchar *device_file,
-                                     gboolean    *readonly_return);
-
-G_END_DECLS
-
-#endif /* !__EXO_MOUNT_UTILS_H__ */
diff --git a/exo-mount/main.c b/exo-mount/main.c
index 1974d21..1ce40f8 100644
--- a/exo-mount/main.c
+++ b/exo-mount/main.c
@@ -44,12 +44,17 @@
 
 #include <glib/gstdio.h>
 
+#include <gio/gio.h>
+#define HAVE_GIO_UNIX
+#ifdef HAVE_GIO_UNIX
+#include <gio/gunixmounts.h>
+#endif
+
 #include <exo-hal/exo-hal.h>
 #include <exo/exo.h>
-#include <exo-mount/exo-mount-fstab.h>
+#ifdef HAVE_HAL
 #include <exo-mount/exo-mount-hal.h>
-#include <exo-mount/exo-mount-utils.h>
-
+#endif
 
 
 /* --- globals --- */
@@ -80,8 +85,140 @@ static GOptionEntry entries[] =
 
 
 
-int
-main (int argc, char **argv)
+static gboolean
+exo_mount_device_is_mounted (const gchar *device_file,
+                             gboolean    *readonly_return)
+{
+#ifdef HAVE_GIO_UNIX
+  GList           *lp;
+  GUnixMountEntry *mount_entry;
+  const gchar     *device_path;
+
+  /* get the mounted devices (from mtab) */
+  for (lp = g_unix_mounts_get (NULL); lp != NULL; lp = lp->next)
+    {
+      mount_entry = lp->data;
+
+      device_path = g_unix_mount_get_device_path (mount_entry);
+      if (exo_str_is_equal (device_path, device_file))
+        {
+          if (G_LIKELY (readonly_return != NULL))
+            *readonly_return = g_unix_mount_is_readonly (mount_entry);
+          return TRUE;
+        }
+    }
+#endif
+
+  return FALSE;
+}
+
+
+
+#ifdef HAVE_GIO_UNIX
+static gboolean
+exo_mount_device_lookup (const gchar      *device_file,
+                         GUnixMountPoint **mount_point_return,
+                         GError          **error)
+{
+  GList           *lp;
+  GUnixMountPoint *mount_point;
+  const gchar     *device_path;
+
+  /* get the known devices (from fstab) */
+  for (lp = g_unix_mount_points_get (NULL); lp != NULL; lp = lp->next)
+    {
+      mount_point = lp->data;
+
+      device_path = g_unix_mount_point_get_device_path (mount_point);
+      if (exo_str_is_equal (device_path, device_file))
+        {
+          if (G_LIKELY (mount_point_return != NULL))
+            *mount_point_return = mount_point;
+          return TRUE;
+        }
+    }
+
+  /* TRANSLATORS: a device is missing from the file system table (usually /etc/fstab) */
+  if (G_LIKELY (error != NULL))
+    g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL, _("Device \"%s\" not found in file system device table"), device_file);
+
+  return FALSE;
+}
+#endif
+
+
+
+static gboolean
+exo_mount_device_is_mount_point (const gchar *device_file)
+{
+#ifdef HAVE_GIO_UNIX
+  return exo_mount_device_lookup (device_file, NULL, NULL);
+#else
+  return FALSE;
+#endif
+}
+
+
+
+static void
+exo_mount_device_execute (const gchar  *device_file,
+                          const gchar  *command,
+                          GError      **error)
+{
+  gboolean         result;
+  gchar           *standard_error;
+  gchar           *command_line;
+  gchar           *quoted;
+  gint             status;
+  const gchar     *argument;
+#ifdef HAVE_GIO_UNIX
+  GUnixMountPoint *mount_point;
+
+  if (!exo_mount_device_lookup (device_file, &mount_point, error))
+    return;
+  argument = g_unix_mount_point_get_device_path (mount_point);
+#else
+  argument = device_file;
+#endif
+
+  /* generate the command line */
+  quoted = g_shell_quote (argument);
+  command_line = g_strconcat (command, " ", quoted, NULL);
+  g_free (quoted);
+
+  /* try to execute the command line */
+  result = g_spawn_command_line_sync (command_line, NULL, &standard_error, &status, error);
+  if (G_LIKELY (result))
+    {
+      /* check if the command failed */
+      if (G_UNLIKELY (status != 0))
+        {
+          /* drop additional whitespace from the stderr output */
+          g_strstrip (standard_error);
+
+          /* strip all trailing dots from the stderr output */
+          while (*standard_error != '\0' && standard_error[strlen (standard_error) - 1] == '.')
+            standard_error[strlen (standard_error) - 1] = '\0';
+
+          /* generate an error from the stderr output */
+          if (G_LIKELY (*standard_error != '\0'))
+            g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, "%s", standard_error);
+          else
+            g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, _("Unknown error"));
+        }
+
+      /* release the stderr output */
+      g_free (standard_error);
+    }
+
+  /* cleanup */
+  g_free (command_line);
+}
+
+
+
+gint
+main (gint argc, gchar **argv)
 {
 #ifdef HAVE_HAL
   ExoMountHalDevice *device;
@@ -137,6 +274,11 @@ main (int argc, char **argv)
       return EXIT_SUCCESS;
     }
 
+#ifndef HAVE_GIO_UNIX
+  g_warning (_("%s is not compiled with GIO-Unix support. Therefore it will "
+               "probably not work on this system."), g_get_prgname ());
+#endif
+
   /* make sure that either a device UDI or file was specified... */
   if (G_UNLIKELY (opt_hal_udi == NULL && opt_device == NULL))
     {
@@ -212,7 +354,7 @@ main (int argc, char **argv)
 #endif
 
   /* check if the device is currently mounted */
-  mounted = exo_mount_utils_is_mounted (opt_device, &mounted_readonly);
+  mounted = exo_mount_device_is_mounted (opt_device, &mounted_readonly);
   if ((!opt_eject && !opt_unmount && mounted)
       || (opt_unmount && !mounted))
     {
@@ -270,7 +412,7 @@ main (int argc, char **argv)
    * if so, we cannot use HAL to mount it.
    */
 #ifdef HAVE_HAL
-  if (!exo_mount_fstab_contains (opt_device))
+  if (!exo_mount_device_is_mount_point (opt_device))
     {
       /* perform the requested operation */
       if (G_LIKELY (opt_unmount))
@@ -285,11 +427,11 @@ main (int argc, char **argv)
     {
       /* perform the requested operation */
       if (G_LIKELY (opt_unmount))
-        exo_mount_fstab_unmount (opt_device, &err);
+        exo_mount_device_execute (opt_device, PATH_UMOUNT, &err);
       else if (G_LIKELY (opt_eject))
-        exo_mount_fstab_eject (opt_device, &err);
+        exo_mount_device_execute (opt_device, PATH_EJECT, &err);
       else
-        exo_mount_fstab_mount (opt_device, &err);
+        exo_mount_device_execute (opt_device, PATH_MOUNT, &err);
     }
 
   /* check if we have a notification process to kill */
@@ -304,7 +446,7 @@ main (int argc, char **argv)
 
   /* if we tried to mount, make sure it's really mounted now */
   if (err == NULL && (!opt_eject && !opt_unmount)
-      && !exo_mount_utils_is_mounted (opt_device, NULL))
+      && !exo_mount_device_is_mounted (opt_device, NULL))
     {
       /* although somebody claims that we were successfully, that's not the case */
       g_set_error (&err, G_FILE_ERROR, G_FILE_ERROR_FAILED,



More information about the Xfce4-commits mailing list