fast-user-switch-applet r525 - in trunk: . src



Author: tthurman
Date: Fri Jul 18 00:55:23 2008
New Revision: 525
URL: http://svn.gnome.org/viewvc/fast-user-switch-applet?rev=525&view=rev

Log:
Stop using the deprecated gnome-vfs, and start using gio instead.  Replace minimum glib version accordingly.  Closes #512548.


Modified:
   trunk/   (props changed)
   trunk/ChangeLog
   trunk/configure.ac
   trunk/src/fusa-manager.c
   trunk/src/testapp.c

Modified: trunk/configure.ac
==============================================================================
--- trunk/configure.ac	(original)
+++ trunk/configure.ac	Fri Jul 18 00:55:23 2008
@@ -46,10 +46,12 @@
 GTK_REQUIRED_VERSION=2.8.0
 PANEL_REQUIRED_VERSION=2.0.0
 GLADE_REQUIRED_VERSION=2.0.0
+GLIB_REQUIRED_VERSION=2.15.3
 
 PKG_CHECK_MODULES(APPLET, gtk+-2.0 >= $GTK_REQUIRED_VERSION
 	     libpanelapplet-2.0 >= $PANEL_REQUIRED_VERSION
-	     libglade-2.0 >= $GLADE_REQUIRED_VERSION)
+	     libglade-2.0 >= $GLADE_REQUIRED_VERSION
+	     gio-2.0 >= $GLIB_REQUIRED_VERSION)
 AC_SUBST(APPLET_CFLAGS)
 AC_SUBST(APPLET_LIBS)
 

Modified: trunk/src/fusa-manager.c
==============================================================================
--- trunk/src/fusa-manager.c	(original)
+++ trunk/src/fusa-manager.c	Fri Jul 18 00:55:23 2008
@@ -40,7 +40,7 @@
 #include <gtk/gtkmain.h>
 #include <gtk/gtkstock.h>
 
-#include <libgnomevfs/gnome-vfs-ops.h>
+#include <gio/gio.h>
 
 #include "gdm-queue.h"
 #include "fusa-utils.h"
@@ -121,9 +121,9 @@
   GHashTable *users_by_uid;
 
   /* Updaters */
-  GnomeVFSMonitorHandle *gdmconfig_monitor;
-  GnomeVFSMonitorHandle *passwd_monitor;
-  GnomeVFSMonitorHandle *shells_monitor;
+  GFileMonitor *gdmconfig_monitor;
+  GFileMonitor *passwd_monitor;
+  GFileMonitor *shells_monitor;
   guint results_pull_id;
   guint update_displays_id;
 
@@ -193,22 +193,25 @@
 /* GObject Functions */
 static void fusa_manager_finalize (GObject *object);
 
-/* GnomeVFSMonitor Callbacks */
-static void gdmconfig_monitor_cb (GnomeVFSMonitorHandle    *handle,
-				  const gchar              *text_uri,
-				  const gchar              *info_uri,
-				  GnomeVFSMonitorEventType  event_type,
-				  gpointer                  user_data);
-static void shells_monitor_cb    (GnomeVFSMonitorHandle    *handle,
-				  const gchar              *text_uri,
-				  const gchar              *info_uri,
-				  GnomeVFSMonitorEventType  event_type,
-				  gpointer                  user_data);
-static void passwd_monitor_cb    (GnomeVFSMonitorHandle    *handle,
-				  const gchar              *text_uri,
-				  const gchar              *info_uri,
-				  GnomeVFSMonitorEventType  event_type,
-				  gpointer                  user_data);
+/* GFileMonitor Callbacks */
+static void
+gdmconfig_monitor_changed_cb (GFileMonitor      *monitor,
+			      GFile             *file,
+			      GFile             *other_file,
+			      GFileMonitorEvent  event,
+			      gpointer           data);
+static void
+shells_monitor_changed_cb (GFileMonitor      *monitor,
+			   GFile             *file,
+			   GFile             *other_file,
+			   GFileMonitorEvent  event,
+			   gpointer           data);
+static void
+passwd_monitor_changed_cb (GFileMonitor      *monitor,
+			   GFile             *file,
+			   GFile             *other_file,
+			   GFileMonitorEvent  event,
+			   gpointer           data);
 
 /* User Functions */
 static gboolean        check_user_file                (const gchar  *filename,
@@ -334,83 +337,66 @@
 static void
 fusa_manager_init (FusaManager *manager)
 {
-  GError *error;
-  gchar *uri;
-  GnomeVFSResult result;
-
+  GFile *file = NULL;
+  GError *error = NULL;
   /* GDM config file */
   manager->exclusions = g_hash_table_new_full (g_str_hash, g_str_equal,
 					       g_free, NULL);
   reload_gdm_config (manager, FALSE);
-  error = NULL;
-  uri = g_filename_to_uri (GDMCONFIGFILE, NULL, &error);
-  if (!uri)
-    {
-      g_critical ("Could not create URI for GDM configuration file `%s': %s",
-		  GDMCONFIGFILE, error->message);
-      g_error_free (error);
-    }
-  else
-    {
-      result = gnome_vfs_monitor_add (&(manager->gdmconfig_monitor), uri,
-				      GNOME_VFS_MONITOR_FILE,
-				      gdmconfig_monitor_cb, manager);
-      g_free (uri);
 
-      if (result != GNOME_VFS_OK)
+  file = g_file_new_for_path (GDMCONFIGFILE);
+  manager->gdmconfig_monitor = g_file_monitor_file (file,
+  						    0, NULL, &error);
+  if (manager->gdmconfig_monitor == NULL) {
 	g_critical ("Could not install monitor for GDM configuration file `%s': %s",
-		    GDMCONFIGFILE, gnome_vfs_result_to_string (result));
-    }
+		    GDMCONFIGFILE, error->message);
+	g_error_free (error);
+	error = NULL;
+  } else {
+  	g_signal_connect (manager->gdmconfig_monitor, "changed",
+			  G_CALLBACK (gdmconfig_monitor_changed_cb), manager);
+  }
+  g_object_unref (file);
+  file = NULL;
 
   /* /etc/shells */
   manager->shells = g_hash_table_new_full (g_str_hash, g_str_equal,
 					   g_free, NULL);
   reload_shells (manager);
-  error = NULL;
-  uri = g_filename_to_uri ("/etc/shells", NULL, &error);
-  if (!uri)
-    {
-      g_critical ("Could not create URI for shells file `/etc/shells': %s",
-		  error->message);
-      g_error_free (error);
-    }
-  else
-    {
-      result = gnome_vfs_monitor_add (&(manager->shells_monitor), uri,
-				      GNOME_VFS_MONITOR_FILE,
-				      shells_monitor_cb, manager);
-      g_free (uri);
 
-      if (result != GNOME_VFS_OK)
+  file = g_file_new_for_path ("/etc/shells");
+  manager->shells_monitor = g_file_monitor_file (file,
+  						 0, NULL, &error);
+  if (manager->shells_monitor == NULL) {
 	g_critical ("Could not install monitor for shells file `/etc/shells': %s",
-		    gnome_vfs_result_to_string (result));
-    }
+		    error->message);
+	g_error_free (error);
+	error = NULL;
+  } else {
+  	g_signal_connect (manager->shells_monitor, "changed",
+			  G_CALLBACK (shells_monitor_changed_cb), manager);
+  }
+  g_object_unref (file);
+  file = NULL;
 
   /* /etc/passwd */
   manager->users =
     g_hash_table_new_full (g_str_hash, g_str_equal,
 			   g_free, (GDestroyNotify) g_object_run_dispose);
   manager->users_by_uid = g_hash_table_new (NULL, NULL);
-  error = NULL;
-  uri = g_filename_to_uri ("/etc/passwd", NULL, &error);
-  if (!uri)
-    {
-      g_critical ("Could not create URI for password file `/etc/passwd': %s",
-		  error->message);
-      g_error_free (error);
-    }
-  else
-    {
-      result = gnome_vfs_monitor_add (&(manager->passwd_monitor), uri,
-				      GNOME_VFS_MONITOR_FILE,
-				      passwd_monitor_cb, manager);
-      g_free (uri);
 
-      if (result != GNOME_VFS_OK)
+  file = g_file_new_for_path ("/etc/passwd");
+  manager->passwd_monitor = g_file_monitor_file (file,
+  					         0, NULL, &error);
+  if (manager->passwd_monitor == NULL) {
 	g_critical ("Could not install monitor for password file `/etc/passwd: %s",
-		    gnome_vfs_result_to_string (result));
-    }
-
+		    error->message);
+  } else {
+  	g_signal_connect (manager->passwd_monitor, "changed",
+			  G_CALLBACK (passwd_monitor_changed_cb), manager);
+  }
+  g_object_unref (file);
+  file = NULL;
 
   /* Displays */
   manager->displays =
@@ -452,14 +438,14 @@
   g_hash_table_destroy (manager->displays);
   g_hash_table_destroy (manager->displays_by_console);
 
-  gnome_vfs_monitor_cancel (manager->shells_monitor);
+  g_file_monitor_cancel (manager->shells_monitor);
   g_hash_table_destroy (manager->shells);
 
-  gnome_vfs_monitor_cancel (manager->gdmconfig_monitor);
+  g_file_monitor_cancel (manager->gdmconfig_monitor);
   g_hash_table_destroy (manager->exclusions);
   g_free (manager->global_face_dir);
 
-  gnome_vfs_monitor_cancel (manager->passwd_monitor);
+  g_file_monitor_cancel (manager->passwd_monitor);
   g_hash_table_destroy (manager->users);
   g_hash_table_destroy (manager->users_by_uid);
 
@@ -468,21 +454,21 @@
 }
 
 
-/* *************************** *
- *  GnomeVFSMonitor Callbacks  *
- * *************************** */
+/* ************************ *
+ *  GFileMonitor Callbacks  *
+ * ************************ */
 
 static void
-gdmconfig_monitor_cb (GnomeVFSMonitorHandle    *handle,
-		      const gchar              *text_uri,
-		      const gchar              *info_uri,
-		      GnomeVFSMonitorEventType  event_type,
-		      gpointer                  data)
+gdmconfig_monitor_changed_cb (GFileMonitor      *monitor,
+			      GFile             *file,
+			      GFile             *other_file,
+			      GFileMonitorEvent  event,
+			      gpointer           data)
 {
   FusaManager *manager = data;
 
-  if (event_type != GNOME_VFS_MONITOR_EVENT_CHANGED &&
-      event_type != GNOME_VFS_MONITOR_EVENT_CREATED)
+  if (event != G_FILE_MONITOR_EVENT_CHANGED &&
+      event != G_FILE_MONITOR_EVENT_CREATED)
     return;
   
   manager->users_dirty = FALSE;
@@ -492,14 +478,14 @@
 }
 
 static void
-shells_monitor_cb (GnomeVFSMonitorHandle    *handle,
-		   const gchar              *text_uri,
-		   const gchar              *info_uri,
-		   GnomeVFSMonitorEventType  event_type,
-		   gpointer                  data)
+shells_monitor_changed_cb (GFileMonitor      *monitor,
+			   GFile             *file,
+			   GFile             *other_file,
+			   GFileMonitorEvent  event,
+			   gpointer           data)
 {
-  if (event_type != GNOME_VFS_MONITOR_EVENT_CHANGED &&
-      event_type != GNOME_VFS_MONITOR_EVENT_CREATED)
+  if (event != G_FILE_MONITOR_EVENT_CHANGED &&
+      event != G_FILE_MONITOR_EVENT_CREATED)
     return;
 
   reload_shells (data);
@@ -507,17 +493,17 @@
 }
 
 static void
-passwd_monitor_cb (GnomeVFSMonitorHandle    *handle,
-		   const gchar              *text_uri,
-		   const gchar              *info_uri,
-		   GnomeVFSMonitorEventType  event_type,
-		   gpointer                  user_data)
+passwd_monitor_changed_cb (GFileMonitor      *monitor,
+			   GFile             *file,
+			   GFile             *other_file,
+			   GFileMonitorEvent  event,
+			   gpointer           data)
 {
-  if (event_type != GNOME_VFS_MONITOR_EVENT_CHANGED &&
-      event_type != GNOME_VFS_MONITOR_EVENT_CREATED)
+  if (event != G_FILE_MONITOR_EVENT_CHANGED &&
+      event != G_FILE_MONITOR_EVENT_CREATED)
     return;
 
-  reload_passwd (user_data);
+  reload_passwd (data);
 }
 
 static FusaManagerWithCallback*
@@ -764,7 +750,7 @@
   for (handler=settings_handlers; handler->key != NULL; handler++) {
 
     /* If we're here because the file has been updated, then *we* know the
-     * value might have changed (because gnome-vfs told us), but gdm is most
+     * value might have changed (because GFileMonitor told us), but gdm is most
      * probably still unaware. Therefore, we must tell it to go and look.
      * Unfortunately, there's no way of telling gdm over the socket to go
      * and reload the file in toto, but we can tell it to reload those
@@ -1278,8 +1264,10 @@
   const gchar *homedir, *username;
   uid_t uid;
   gchar *path;
-  GnomeVFSURI *uri;
-  gboolean is_local;
+  GFile *file;
+  GFileInfo *file_info;
+  const char *filesystem_type;
+  gboolean is_autofs, is_local = FALSE;
 
   homedir = fusa_user_get_home_directory (user);
   uid = fusa_user_get_uid (user);
@@ -1288,17 +1276,44 @@
   /* special case: look at parent of home to detect autofs
      this is so we don't try to trigger an automount */
   path = g_path_get_dirname (homedir);
-  uri = gnome_vfs_uri_new (path);
-  is_local = gnome_vfs_uri_is_local (uri);
-  gnome_vfs_uri_unref (uri);
+  file = g_file_new_for_path (path);
+  file_info = g_file_query_filesystem_info (file,
+					    G_FILE_ATTRIBUTE_FILESYSTEM_TYPE,
+					    NULL, NULL);
+  if (file_info == NULL)
+    {
+      g_free (path);
+      g_object_unref (file);
+      return NULL;
+    }
+  filesystem_type = g_file_info_get_attribute_string (file_info,
+  						      G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
+  is_autofs = (strcmp (filesystem_type, "autofs") == 0);
+  g_object_unref (file);
+  g_object_unref (file_info);
   g_free (path);
 
   /* now check that home dir itself is local */
-  if (is_local)
+  if (!is_autofs)
     {
-      uri = gnome_vfs_uri_new (homedir);
-      is_local = gnome_vfs_uri_is_local (uri);
-      gnome_vfs_uri_unref (uri);
+      file = g_file_new_for_path (homedir);
+      file_info = g_file_query_filesystem_info (file,
+      						G_FILE_ATTRIBUTE_FILESYSTEM_TYPE,
+						NULL, NULL);
+      if (file_info == NULL)
+        {
+	  g_object_unref (file);
+	  return NULL;
+	}
+      filesystem_type = g_file_info_get_attribute_string (file_info,
+      							  G_FILE_ATTRIBUTE_FILESYSTEM_TYPE);
+      is_local = ((strcmp (filesystem_type, "nfs") != 0) && 
+		  (strcmp (filesystem_type, "afs") != 0) &&
+		  (strcmp (filesystem_type, "autofs") != 0) &&
+		  (strcmp (filesystem_type, "unknown") != 0) &&
+		  (strcmp (filesystem_type, "ncpfs") != 0));
+      g_object_unref (file_info);
+      g_object_unref (file);
     }
 
   /* only look at local home directories so we don't try to

Modified: trunk/src/testapp.c
==============================================================================
--- trunk/src/testapp.c	(original)
+++ trunk/src/testapp.c	Fri Jul 18 00:55:23 2008
@@ -28,7 +28,6 @@
 #include <string.h>
 
 #include <gtk/gtk.h>
-#include <libgnomevfs/gnome-vfs-init.h>
 
 #include "fusa-utils.h"
 #include "fusa-manager.h"
@@ -557,7 +556,6 @@
   GSList *list;
 
   gtk_init (&argc, &argv);
-  gnome_vfs_init ();
 
   gtk_rc_parse_string ("style \"fast-user-switch-menubar-style\"\n"
 		       "{\n"
@@ -801,7 +799,6 @@
   g_object_unref (app->manager);
   gtk_widget_destroy (app->app);
   g_free (app);
-  gnome_vfs_shutdown ();
 
   return 0;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]