diff --git a/desktop-file-utils-0.8-gnomevfs-embed.patch b/desktop-file-utils-0.8-gnomevfs-embed.patch deleted file mode 100644 index b37f98c..0000000 --- a/desktop-file-utils-0.8-gnomevfs-embed.patch +++ /dev/null @@ -1,104 +0,0 @@ ---- desktop-file-utils-0.8/configure.in.embedded 2004-09-02 21:05:32.076847032 +0100 -+++ desktop-file-utils-0.8/configure.in 2004-09-02 21:05:43.296141440 +0100 -@@ -108,13 +108,11 @@ - AC_SUBST(DESKTOP_FILE_UTILS_CFLAGS) - AC_SUBST(DESKTOP_FILE_UTILS_LIBS) - --GNOME_VFS_REQUIRED=2.2.0 -- --PKG_CHECK_MODULES(VFS, gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED gnome-vfs-module-2.0 >= $GNOME_VFS_REQUIRED, have_gnome_vfs=yes, have_gnome_vfs=no) -+VFS_CFLAGS=`PKG_CONFIG_PATH=./; export PKG_CONFIG_PATH; pkgconfig --cflags gnome-vfs2` -+VFS_LIBS=`PKG_CONFIG_PATH=./; export PKG_CONFIG_PATH; pkgconfig --libs gnome-vfs2` - AC_SUBST(VFS_CFLAGS) - AC_SUBST(VFS_LIBS) -- --AM_CONDITIONAL(HAVE_GNOME_VFS, test x$have_gnome_vfs = xyes) -+AM_CONDITIONAL(HAVE_GNOME_VFS, test xyes = xyes) - - AM_PATH_LISPDIR - ---- desktop-file-utils-0.8/src/Makefile.am.embedded 2004-09-02 21:09:51.781365944 +0100 -+++ desktop-file-utils-0.8/src/Makefile.am 2004-09-02 21:10:57.966304304 +0100 -@@ -1,5 +1,6 @@ - - INCLUDES=$(DESKTOP_FILE_UTILS_CFLAGS) -DDATADIR="\"$(datadir)\"" $(VFS_CFLAGS) \ -+ -I../../ \ - -DSYSCONFDIR="\"$(sysconfdir)\"" \ - -DPREFIX="\"$(prefix)\"" \ - -D_FILE_OFFSET_BITS=64 \ -@@ -8,21 +9,6 @@ - -D_REENTRANT \ - -D_POSIX_PTHREAD_SEMANTICS - --## note that TESTS has special meaning (stuff to use in make check) --## so if adding tests not to be run in make check, don't add them to --## TESTS --if DFU_BUILD_TESTS --TESTS_ENVIRONMENT= --TESTS=dfu-test --else --TESTS= --endif -- --## we use noinst_PROGRAMS not check_PROGRAMS so that we build --## even when not doing "make check" --noinst_PROGRAMS=$(TESTS) -- --bin_PROGRAMS=desktop-file-validate desktop-file-install desktop-menu-tool update-desktop-database - noinst_LTLIBRARIES = libmenu_sources.la - - menu_sources= \ -@@ -49,53 +35,7 @@ - libmenu_sources_la_SOURCES= \ - $(menu_sources) - --desktop_file_validate_SOURCES= \ -- desktop_file.c \ -- desktop_file.h \ -- validate.c \ -- validate.h \ -- validator.c -- --desktop_file_install_SOURCES= \ -- desktop_file.c \ -- desktop_file.h \ -- validate.c \ -- validate.h \ -- install.c -- --desktop_menu_tool_SOURCES= \ -- desktop_file.c \ -- desktop_file.h \ -- gen-compat-tree.c \ -- validate.c \ -- validate.h \ -- vfolder-parser.c \ -- vfolder-parser.h \ -- vfolder-query.c \ -- vfolder-query.h -- --dfu_test_SOURCES= \ -- dfu-test.h \ -- dfu-test.c -- --update_desktop_database_SOURCES= \ -- update-desktop-database.c \ -- eggdesktopentries.c \ -- eggdesktopentries.h \ -- eggintl.h \ -- eggdirfuncs.c \ -- eggdirfuncs.h -- --desktop_file_validate_LDADD=$(DESKTOP_FILE_UTILS_LIBS) --desktop_file_install_LDADD= $(DESKTOP_FILE_UTILS_LIBS) --desktop_menu_tool_LDADD=$(DESKTOP_FILE_UTILS_LIBS) libmenu_sources.la --dfu_test_LDADD=$(DESKTOP_FILE_UTILS_LIBS) libmenu_sources.la --update_desktop_database_LDADD = $(DESKTOP_FILE_UTILS_LIBS) -- -- - EXTRA_DIST = \ -- $(dfu_test_SOURCES) \ -- $(update_desktop_database_SOURCES) \ - menu-modules.conf - - if HAVE_GNOME_VFS diff --git a/desktop-file-utils-0.8-pleasecreate.patch b/desktop-file-utils-0.8-pleasecreate.patch deleted file mode 100644 index d2402af..0000000 --- a/desktop-file-utils-0.8-pleasecreate.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- desktop-file-utils-0.8/src/menu-tree-cache.c.pleasecreate 2004-08-29 14:38:56.000000000 +0100 -+++ desktop-file-utils-0.8/src/menu-tree-cache.c 2004-09-02 21:14:18.728783768 +0100 -@@ -760,7 +760,7 @@ - menu_verbose ("Getting changes for \"%s\"\n", - menu_file); - -- entry = cache_lookup (cache, menu_file, FALSE, NULL); -+ entry = cache_lookup (cache, menu_file, TRUE, NULL); - - if (entry == NULL) - return NULL; diff --git a/gnome-vfs-1.9.16-moved-menu-files.patch b/gnome-vfs-1.9.16-moved-menu-files.patch deleted file mode 100644 index d7ea0f2..0000000 --- a/gnome-vfs-1.9.16-moved-menu-files.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- gnome-vfs-1.9.16/modules/vfolder-desktop-method.c.moved-menu-files Tue Jun 11 17:39:20 2002 -+++ gnome-vfs-1.9.16/modules/vfolder-desktop-method.c Tue Jun 11 17:43:17 2002 -@@ -1433,9 +1433,8 @@ - - info->scheme = g_strdup (scheme); - -- info->filename = g_strconcat (SYSCONFDIR, -- "/gnome-vfs-2.0/vfolders/", -- scheme, ".vfolder-info", -+ info->filename = g_strconcat (SYSCONFDIR, "/X11/desktop-menus/", -+ scheme, ".menu", - NULL); - info->user_filename = g_strconcat (g_get_home_dir (), - "/" DOT_GNOME "/vfolders/", diff --git a/gnome-vfs-2.0.1-only-show-in.patch b/gnome-vfs-2.0.1-only-show-in.patch deleted file mode 100644 index 9546462..0000000 --- a/gnome-vfs-2.0.1-only-show-in.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- gnome-vfs-2.0.1/modules/vfolder-desktop-method.c.only-show-in Tue Jul 16 20:11:46 2002 -+++ gnome-vfs-2.0.1/modules/vfolder-desktop-method.c Tue Jul 16 20:12:21 2002 -@@ -2466,8 +2466,8 @@ - - *result = g_strdup (p); - -- if (*result1 == NULL || -- (result2 != NULL && *result2 == NULL)) -+ if (*result1 != NULL && -+ (result2 == NULL || *result2 != NULL)) - break; - } - diff --git a/gnome-vfs-2.0.2-newstat.patch b/gnome-vfs-2.0.2-newstat.patch deleted file mode 100644 index 7c90801..0000000 --- a/gnome-vfs-2.0.2-newstat.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- gnome-vfs-2.0.2/modules/vfolder-desktop-method.c.newstat 2002-08-19 12:45:42.000000000 -0400 -+++ gnome-vfs-2.0.2/modules/vfolder-desktop-method.c 2002-08-19 14:49:27.000000000 -0400 -@@ -3353,6 +3353,12 @@ - invalidate_folder_T (info->root); - - info->entries_valid = TRUE; -+ -+ /* Update modification time of all folders, -+ * kind of evil, but it will make adding new items work -+ * I hope. This is because rereading usually means -+ * something changed */ -+ info->modification_time = time (NULL); - } - return info; - } diff --git a/gnome-vfs-2.0.2-read-only.patch b/gnome-vfs-2.0.2-read-only.patch deleted file mode 100644 index 4ac6802..0000000 --- a/gnome-vfs-2.0.2-read-only.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- gnome-vfs-2.0.2/modules/vfolder-desktop-method.c.read-only 2002-08-23 11:45:03.000000000 -0400 -+++ gnome-vfs-2.0.2/modules/vfolder-desktop-method.c 2002-08-23 12:09:27.000000000 -0400 -@@ -1162,7 +1162,8 @@ - folder->entry.type = ENTRY_FOLDER; - folder->entry.name = g_strdup (name); - folder->entry.refcount = 1; -- -+ folder->read_only = TRUE; -+ - return folder; - } - -@@ -6084,28 +6085,28 @@ - static GnomeVFSMethod method = { - sizeof (GnomeVFSMethod), - do_open, -- do_create, -+ NULL, /* do_create, */ - do_close, - do_read, -- do_write, -+ NULL, /* do_write, */ - do_seek, - do_tell, -- do_truncate_handle, -+ NULL, /* do_truncate_handle, */ - do_open_directory, - do_close_directory, - do_read_directory, - do_get_file_info, - do_get_file_info_from_handle, - do_is_local, -- do_make_directory, -- do_remove_directory, -- do_move, -- do_unlink, -+ NULL, /* do_make_directory, */ -+ NULL, /* do_remove_directory, */ -+ NULL, /* do_move, */ -+ NULL, /* do_unlink, */ - do_check_same_fs, -- do_set_file_info, -- do_truncate, -- NULL /* find_directory */, -- NULL /* create_symbolic_link */, -+ NULL, /* do_set_file_info, */ -+ NULL, /* do_truncate, */ -+ NULL /* find_directory */, -+ NULL /* create_symbolic_link */, - do_monitor_add, - do_monitor_cancel - }; diff --git a/gnome-vfs-2.1.6-hide-with-empty-subfolders.patch b/gnome-vfs-2.1.6-hide-with-empty-subfolders.patch deleted file mode 100644 index ea5b1ad..0000000 --- a/gnome-vfs-2.1.6-hide-with-empty-subfolders.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- gnome-vfs-2.1.6/modules/vfolder-desktop-method.c.hide-with-empty-subfolders 2003-01-13 16:08:37.000000000 -0500 -+++ gnome-vfs-2.1.6/modules/vfolder-desktop-method.c 2003-01-13 16:09:21.000000000 -0500 -@@ -937,8 +937,19 @@ - /* Include subfolders */ - /* we always whack them onto the beginning */ - if (folder->subfolders != NULL) { -- GSList *subfolders = g_slist_copy (folder->subfolders); -- g_slist_foreach (subfolders, (GFunc)entry_ref_alloc, NULL); -+ GSList *li; -+ GSList *subfolders; -+ subfolders = NULL; -+ li = folder->subfolders; -+ for (li = folder->subfolders; li != NULL; li = li->next) { -+ Folder *f = li->data; -+ /* always dont_show_if_empty */ -+ if (f->entries != NULL) { -+ entry_ref_alloc (&f->entry); -+ subfolders = g_slist_prepend (subfolders, f); -+ } -+ } -+ subfolders = g_slist_reverse (subfolders); - folder->entries = g_slist_concat (subfolders, folder->entries); - } - -@@ -1079,7 +1090,7 @@ - GHashTable *entry_hash; - - ensure_folder (info, folder, -- FALSE /* subfolders */, -+ TRUE /* subfolders */, - NULL /* except */, - FALSE /* ignore_unallocated */); - if (folder->sorted) diff --git a/gnome-vfs-2.1.6-never-show-if-empty.patch b/gnome-vfs-2.1.6-never-show-if-empty.patch deleted file mode 100644 index 126a869..0000000 --- a/gnome-vfs-2.1.6-never-show-if-empty.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gnome-vfs-2.1.6/modules/vfolder-desktop-method.c.never-show-if-empty 2003-01-11 18:12:50.000000000 -0500 -+++ gnome-vfs-2.1.6/modules/vfolder-desktop-method.c 2003-01-11 18:12:55.000000000 -0500 -@@ -1163,6 +1163,7 @@ - folder->entry.name = g_strdup (name); - folder->entry.refcount = 1; - folder->read_only = TRUE; -+ folder->dont_show_if_empty = TRUE; - - return folder; - } diff --git a/gnome-vfs-2.1.6-no-private-methods.patch b/gnome-vfs-2.1.6-no-private-methods.patch deleted file mode 100644 index e7fd1da..0000000 --- a/gnome-vfs-2.1.6-no-private-methods.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- gnome-vfs-2.1.6/modules/desktop-method.c.no-private-methods 2003-01-11 19:16:29.000000000 -0500 -+++ gnome-vfs-2.1.6/modules/desktop-method.c 2003-01-11 19:37:23.000000000 -0500 -@@ -627,12 +627,12 @@ - gnome_vfs_uri_ref (uri); - - file_uri = desktop_uri_to_file_uri (uri); -- result = gnome_vfs_monitor_do_add (parent_method, -- &monitor_handle->handle, -- file_uri, -- monitor_type, -- monitor_notify_cb, -- monitor_handle); -+ result = _gnome_vfs_monitor_do_add (parent_method, -+ &monitor_handle->handle, -+ file_uri, -+ monitor_type, -+ monitor_notify_cb, -+ monitor_handle); - gnome_vfs_uri_unref (file_uri); - - if (result != GNOME_VFS_OK) { -@@ -654,8 +654,8 @@ - - monitor_handle = (DesktopMonitorHandle *) method_handle; - -- result = gnome_vfs_monitor_do_cancel (monitor_handle->handle); -- -+ result = _gnome_vfs_monitor_do_cancel (monitor_handle->handle); -+ - gnome_vfs_uri_unref (monitor_handle->desktop_uri); - g_free (monitor_handle); - diff --git a/gnome-vfs-2.1.6-old-modules.patch b/gnome-vfs-2.1.6-old-modules.patch deleted file mode 100644 index 90b2565..0000000 --- a/gnome-vfs-2.1.6-old-modules.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- gnome-vfs-2.1.6/modules/Makefile.am.old-modules 2003-01-11 16:28:30.000000000 -0500 -+++ gnome-vfs-2.1.6/modules/Makefile.am 2003-01-11 16:30:00.000000000 -0500 -@@ -60,6 +60,8 @@ - $(CDEMENU_LTLIBS) \ - libssh.la \ - libtar.la \ -+ libdesktop.la \ -+ libvfolder-desktop-old.la \ - $(NULL) - - # Not currently supported -@@ -142,6 +144,18 @@ - libftp_la_LDFLAGS = $(module_flags) - libftp_la_LIBADD = ../libgnomevfs/libgnomevfs-2.la - -+### `desktop' method -+ -+libdesktop_la_SOURCES = desktop-method.c -+libdesktop_la_LDFLAGS = $(module_flags) -+libdesktop_la_LIBADD = ../libgnomevfs/libgnomevfs-2.la -+ -+### `vfolder-desktop' method -+ -+libvfolder_desktop_old_la_SOURCES = vfolder-desktop-method.c -+libvfolder_desktop_old_la_LDFLAGS = $(module_flags) -+libvfolder_desktop_old_la_LIBADD = ../libgnomevfs/libgnomevfs-2.la -+ - ### `nfs' method - - #libnfs_la_SOURCES = \ diff --git a/gnome-vfs-2.12.0-readlink-buffer.patch b/gnome-vfs-2.12.0-readlink-buffer.patch deleted file mode 100644 index cac76b6..0000000 --- a/gnome-vfs-2.12.0-readlink-buffer.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -ur gnome-vfs-2.12.0/libgnomevfs/gnome-vfs-hal-mounts.c gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c ---- gnome-vfs-2.12.0/libgnomevfs/gnome-vfs-hal-mounts.c 2005-09-05 04:19:11.000000000 -0400 -+++ gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c 2005-09-08 14:48:28.000000000 -0400 -@@ -1508,7 +1508,7 @@ - GnomeVFSDrive *result; - LibHalContext *hal_ctx; - LibHalDrive *hal_drive; -- char path[PATH_MAX] = "/dev/"; -+ char path[PATH_MAX + 5] = "/dev/"; - char *target = path + 5; - int ret; - -@@ -1562,7 +1562,7 @@ - GnomeVFSVolume *result; - LibHalContext *hal_ctx; - LibHalDrive *hal_drive; -- char path[PATH_MAX] = "/dev/"; -+ char path[PATH_MAX + 5] = "/dev/"; - char *target = path + 5; - int ret; - diff --git a/gnome-vfs-2.12.0-use-correct-close.patch b/gnome-vfs-2.12.0-use-correct-close.patch deleted file mode 100644 index b25bfda..0000000 --- a/gnome-vfs-2.12.0-use-correct-close.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gnome-vfs-2.12.0/modules/smb-method.c.use_correct_close 2005-09-28 14:29:32.000000000 -0400 -+++ gnome-vfs-2.12.0/modules/smb-method.c 2005-09-28 14:30:11.000000000 -0400 -@@ -1486,7 +1486,7 @@ - - /* Important: perform_authentication leaves and re-enters the lock! */ - while (perform_authentication (&actx) > 0) { -- r = smb_context->close (smb_context, handle->file); -+ r = smb_context->close_fn (smb_context, handle->file); - actx.res = (r >= 0) ? GNOME_VFS_OK : gnome_vfs_result_from_errno (); - } - diff --git a/gnome-vfs-2.12.1.1-mimecache.patch b/gnome-vfs-2.12.1.1-mimecache.patch deleted file mode 100644 index 48bcb49..0000000 --- a/gnome-vfs-2.12.1.1-mimecache.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gnome-vfs-2.12.1.1/libgnomevfs/xdgmimecache.c.mimecache 2005-04-17 06:37:34.000000000 -0400 -+++ gnome-vfs-2.12.1.1/libgnomevfs/xdgmimecache.c 2005-10-19 08:19:13.000000000 -0400 -@@ -175,8 +175,8 @@ - { - for (j = 0; j < data_length; j++) - { -- if ((cache->buffer[data_offset + j] & cache->buffer[mask_offset + j]) != -- ((((unsigned char *) data)[j + i]) & cache->buffer[mask_offset + j])) -+ if ((((unsigned char *)cache->buffer)[data_offset + j] & ((unsigned char *)cache->buffer)[mask_offset + j]) != -+ ((((unsigned char *) data)[j + i]) & ((unsigned char *)cache->buffer)[mask_offset + j])) - { - valid_matchlet = FALSE; - break; -@@ -187,7 +187,7 @@ - { - for (j = 0; j < data_length; j++) - { -- if (cache->buffer[data_offset + j] != ((unsigned char *) data)[j + i]) -+ if (((unsigned char *)cache->buffer)[data_offset + j] != ((unsigned char *) data)[j + i]) - { - valid_matchlet = FALSE; - break; diff --git a/gnome-vfs-2.13.3-gnome-mount.patch b/gnome-vfs-2.13.3-gnome-mount.patch deleted file mode 100644 index 2729175..0000000 --- a/gnome-vfs-2.13.3-gnome-mount.patch +++ /dev/null @@ -1,53 +0,0 @@ ---- gnome-vfs-2.13.3/libgnomevfs/gnome-vfs-volume-ops.c.gnome-mount 2006-01-09 15:05:47.000000000 -0500 -+++ gnome-vfs-2.13.3/libgnomevfs/gnome-vfs-volume-ops.c 2006-01-09 15:16:10.000000000 -0500 -@@ -659,8 +659,9 @@ - #if defined(USE_HAL) && defined(HAL_EJECT) - if (info->hal_udi != NULL) { - argv[0] = HAL_EJECT; -- argv[1] = info->device_path; -- argv[2] = NULL; -+ argv[1] = "--hal-udi"; -+ argv[2] = info->hal_udi; -+ argv[3] = NULL; - - if (!g_file_test (argv [0], G_FILE_TEST_IS_EXECUTABLE)) - argv[0] = NULL; -@@ -759,7 +760,11 @@ - - # ifdef USE_HAL - if (hal_udi != NULL) { -+# ifdef HAL_MOUNT -+ name = hal_udi; -+# else - name = device_path; -+# endif - } else - name = mount_point; - # else -@@ -770,9 +775,11 @@ - - if (should_mount) { - #if defined(USE_HAL) && defined(HAL_MOUNT) -- if (hal_udi != NULL && g_file_test (HAL_MOUNT, G_FILE_TEST_IS_EXECUTABLE)) -+ if (hal_udi != NULL && g_file_test (HAL_MOUNT, G_FILE_TEST_IS_EXECUTABLE)) { - command = HAL_MOUNT; -- else -+ argument = "--hal-udi"; -+ -+ } else - command = find_command (MOUNT_COMMAND); - #else - command = find_command (MOUNT_COMMAND); -@@ -785,9 +792,10 @@ - if (should_unmount) { - gboolean is_in_media = g_str_has_prefix (mount_point, "/media"); - #if defined(USE_HAL) && defined(HAL_UMOUNT) -- if (hal_udi != NULL && g_file_test (HAL_UMOUNT, G_FILE_TEST_IS_EXECUTABLE)) -+ if (hal_udi != NULL && g_file_test (HAL_UMOUNT, G_FILE_TEST_IS_EXECUTABLE)) { - command = HAL_UMOUNT; -- else -+ argument = "--hal-udi"; -+ } else - command = find_command (is_in_media ? PUMOUNT_COMMAND : UMOUNT_COMMAND); - #else - command = find_command (is_in_media ? PUMOUNT_COMMAND : UMOUNT_COMMAND); diff --git a/gnome-vfs-2.13.92-permisssions-fix.patch b/gnome-vfs-2.13.92-permisssions-fix.patch deleted file mode 100644 index 5434cd5..0000000 --- a/gnome-vfs-2.13.92-permisssions-fix.patch +++ /dev/null @@ -1,37 +0,0 @@ -Index: modules/file-method.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/modules/file-method.c,v -retrieving revision 1.154 -retrieving revision 1.155 -diff -u -p -r1.154 -r1.155 ---- modules/file-method.c 27 Feb 2006 08:54:52 -0000 1.154 -+++ modules/file-method.c 28 Feb 2006 10:08:18 -0000 1.155 -@@ -729,7 +729,6 @@ get_access_info (GnomeVFSFileInfo *file_ - * of the access calls - */ - #ifdef G_OS_WIN32 -- file_info->permissions = 0; - if (g_access (full_name, R_OK) == 0) { - file_info->permissions |= GNOME_VFS_PERM_ACCESS_READABLE; - } -@@ -745,17 +744,16 @@ get_access_info (GnomeVFSFileInfo *file_ - * calls needed - */ - if (g_access (full_name, R_OK|W_OK) == 0) { -- file_info->permissions = GNOME_VFS_PERM_ACCESS_READABLE | GNOME_VFS_PERM_ACCESS_WRITABLE; -+ file_info->permissions |= GNOME_VFS_PERM_ACCESS_READABLE | GNOME_VFS_PERM_ACCESS_WRITABLE; - if (g_access (full_name, X_OK) == 0) { - file_info->permissions |= GNOME_VFS_PERM_ACCESS_EXECUTABLE; - } - } else if (g_access (full_name, R_OK|X_OK) == 0) { -- file_info->permissions = GNOME_VFS_PERM_ACCESS_READABLE | GNOME_VFS_PERM_ACCESS_EXECUTABLE; -+ file_info->permissions |= GNOME_VFS_PERM_ACCESS_READABLE | GNOME_VFS_PERM_ACCESS_EXECUTABLE; - } else { - if (g_access (full_name, R_OK) == 0) { -- file_info->permissions = GNOME_VFS_PERM_ACCESS_READABLE; -+ file_info->permissions |= GNOME_VFS_PERM_ACCESS_READABLE; - } else { -- file_info->permissions = 0; - if (g_access (full_name, W_OK) == 0) { - file_info->permissions |= GNOME_VFS_PERM_ACCESS_WRITABLE; - } diff --git a/gnome-vfs-2.13.92-smb.patch b/gnome-vfs-2.13.92-smb.patch deleted file mode 100644 index 9aaa25e..0000000 --- a/gnome-vfs-2.13.92-smb.patch +++ /dev/null @@ -1,217 +0,0 @@ -Index: modules/smb-method.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/modules/smb-method.c,v -retrieving revision 1.35 -diff -u -p -r1.35 smb-method.c ---- modules/smb-method.c 20 Oct 2005 16:03:59 -0000 1.35 -+++ modules/smb-method.c 28 Feb 2006 12:27:10 -0000 -@@ -102,6 +102,9 @@ static guint cache_reap_timeout = 0; - /* The magic "default workgroup" hostname */ - #define DEFAULT_WORKGROUP_NAME "X-GNOME-DEFAULT-WORKGROUP" - -+/* Guest logins use: */ -+#define GUEST_LOGIN "guest" -+ - /* 5 minutes before we re-read the workgroup cache again */ - #define WORKGROUP_CACHE_TIMEOUT (5*60) - -@@ -111,7 +114,8 @@ static time_t workgroups_timestamp = 0; - /* Authentication ----------------------------------------------------------- */ - - #define SMB_AUTH_STATE_PREFILLED 0x00000010 /* Have asked gnome-auth for prefilled auth */ --#define SMB_AUTH_STATE_PROMPTED 0x00000020 /* Have asked gnome-auth for to prompt user */ -+#define SMB_AUTH_STATE_GUEST 0x00000020 /* Have tried 'guest' authentication */ -+#define SMB_AUTH_STATE_PROMPTED 0x00000040 /* Have asked gnome-auth for to prompt user */ - - typedef struct _SmbAuthContext { - -@@ -128,6 +132,7 @@ typedef struct _SmbAuthContext { - - /* Used in chat between perform_authentication and auth_callback */ - gboolean auth_called; /* Set by auth_callback */ -+ gboolean preset_user; /* Set when we have a preset user from the URI */ - gchar *for_server; /* Set by auth_callback */ - gchar *for_share; /* Set by auth_callback */ - gchar *use_user; /* Set by perform_authentication */ -@@ -774,7 +779,6 @@ initial_authentication (SmbAuthContext * - SmbServerCacheEntry server_lookup; - SmbServerCacheEntry *server; - gboolean found_user = FALSE; -- gboolean preset_user = FALSE; - char *tmp; - - DEBUG_SMB(("[auth] Initial authentication lookups\n")); -@@ -794,31 +798,29 @@ initial_authentication (SmbAuthContext * - tmp - toplevel_uri->user_name); - g_free (actx->use_user); - actx->use_user = string_dup_nzero (tmp + 1); -- -- if (actx->use_domain != NULL) -- actx->prompt_flags &= ~GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_NEED_DOMAIN; -- if (actx->use_user != NULL) -- actx->prompt_flags &= ~GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_NEED_USERNAME; -- - DEBUG_SMB(("[auth] User from URI: %s@%s\n", actx->use_user, actx->use_domain)); - } else { - g_free (actx->use_user); - actx->use_user = string_dup_nzero (toplevel_uri->user_name); - g_free (actx->use_domain); - actx->use_domain = NULL; -- -- if (actx->use_user != NULL) -- actx->prompt_flags &= ~GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_NEED_USERNAME; - DEBUG_SMB(("[auth] User from URI: %s\n", actx->use_user)); - } -- preset_user = TRUE; -+ -+ if (actx->use_user != NULL) { -+ actx->preset_user = TRUE; -+ actx->prompt_flags &= ~GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_NEED_USERNAME; -+ } -+ if (actx->use_domain != NULL) { -+ actx->prompt_flags &= ~GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_NEED_DOMAIN; -+ } - } - - if (lookup_user_cache (actx, TRUE) || - lookup_user_cache (actx, FALSE)) - found_user = TRUE; - -- if (found_user || preset_user) { -+ if (found_user || actx->preset_user) { - /* Lookup the server in our internal cache */ - server_lookup.server_name = (char*)actx->for_server; - server_lookup.share_name = (char*)actx->for_share; -@@ -828,9 +830,9 @@ initial_authentication (SmbAuthContext * - server = g_hash_table_lookup (server_cache, &server_lookup); - if (server == NULL) { - -- /* If a blank user, try 'guest' */ -+ /* If a blank user, try looking up 'guest' */ - if (!actx->use_user) { -- server_lookup.username = "guest"; -+ server_lookup.username = GUEST_LOGIN; - server_lookup.domain = NULL; - server = g_hash_table_lookup (server_cache, &server_lookup); - } -@@ -854,6 +856,7 @@ prefill_authentication (SmbAuthContext * - GnomeVFSModuleCallbackFillAuthenticationIn in_args; - GnomeVFSModuleCallbackFillAuthenticationOut out_args; - gboolean invoked; -+ gboolean filled = FALSE; - - g_return_val_if_fail (actx != NULL, FALSE); - g_return_val_if_fail (actx->for_server != NULL, FALSE); -@@ -901,24 +904,30 @@ prefill_authentication (SmbAuthContext * - invoked = gnome_vfs_module_callback_invoke - (GNOME_VFS_MODULE_CALLBACK_FILL_AUTHENTICATION, - &in_args, sizeof (in_args), -- &out_args, sizeof (out_args)); -+ &out_args, sizeof (out_args)); - } - - if (invoked && out_args.valid) { -- g_free (actx->use_user); -- actx->use_user = string_dup_nzero (out_args.username); -- g_free (actx->use_domain); -- actx->use_domain = string_dup_nzero (out_args.domain); -- g_free (actx->use_password); -- actx->use_password = g_strdup (out_args.password); -- DEBUG_SMB(("[auth] Prefilled credentials: %s@%s:%s\n", actx->use_user, actx->use_domain, actx->use_password)); -+ /* When a preset user make sure we stick to this login */ -+ if (!actx->preset_user || string_compare (actx->use_user, out_args.username)) { -+ -+ g_free (actx->use_user); -+ actx->use_user = string_dup_nzero (out_args.username); -+ g_free (actx->use_domain); -+ actx->use_domain = string_dup_nzero (out_args.domain); -+ g_free (actx->use_password); -+ actx->use_password = g_strdup (out_args.password); -+ -+ filled = TRUE; -+ DEBUG_SMB(("[auth] Prefilled credentials: %s@%s:%s\n", actx->use_user, actx->use_domain, actx->use_password)); -+ } - } - - g_free (out_args.username); - g_free (out_args.domain); - g_free (out_args.password); - -- return invoked && out_args.valid; -+ return filled; - } - - static gboolean -@@ -949,7 +958,12 @@ prompt_authentication (SmbAuthContext *a - in_args.domain = (char*)actx->use_domain; - in_args.port = actx->uri ? ((GnomeVFSToplevelURI*)actx->uri)->host_port : 0; - -- in_args.default_user = actx->use_user ? actx->use_user : (char*)g_get_user_name (); -+ in_args.default_user = actx->use_user; -+ if (string_compare (in_args.default_user, GUEST_LOGIN)) -+ in_args.default_user = NULL; -+ if (!in_args.default_user) -+ in_args.default_user = (char*)g_get_user_name (); -+ - in_args.default_domain = actx->use_domain ? actx->use_domain : smb_context->workgroup; - - memset (&out_args, 0, sizeof (out_args)); -@@ -1198,12 +1212,26 @@ perform_authentication (SmbAuthContext * - cont = FALSE; - - UNLOCK_SMB(); -- -+ -+ /* Do we have gnome-keyring credentials for this? */ - if (!(actx->state & SMB_AUTH_STATE_PREFILLED)) { - actx->state |= SMB_AUTH_STATE_PREFILLED; - cont = prefill_authentication (actx); - } -- -+ -+ /* Then we try a guest credentials... */ -+ if (!cont && !actx->preset_user && !(actx->state & SMB_AUTH_STATE_GUEST)) { -+ g_free (actx->use_user); -+ actx->use_user = strdup(GUEST_LOGIN); -+ g_free (actx->use_domain); -+ actx->use_domain = NULL; -+ g_free (actx->use_password); -+ actx->use_password = strdup(""); -+ actx->state |= SMB_AUTH_STATE_GUEST; -+ cont = TRUE; -+ } -+ -+ /* And as a last step, prompt */ - if (!cont) - cont = prompt_authentication (actx, &auth_cancelled); - -@@ -1279,19 +1307,19 @@ auth_callback (const char *server_name, - strncpy (password_out, actx->use_password ? actx->use_password : "", pwmaxlen); - if (actx->use_domain) - strncpy (domain_out, actx->use_domain, domainmaxlen); -- DEBUG_SMB(("[auth] Using credentials: %s:%s@%s\n", username_out, password_out, domain_out)); -- -- /* On first login try a guest login */ -- } else if (actx->passes == 1) { -- strncpy (username_out, "guest", unmaxlen); -- strncpy (password_out, "", pwmaxlen); -- DEBUG_SMB(("[auth] No credentials, trying 'guest' user login\n")); -- -- /* We have no credentials ... */ -+ DEBUG_SMB(("[auth] Using credentials: %s:%s@%s\n", username_out, password_out, domain_out)); -+ -+ /* We have no credentials ... */ - } else { -+ g_assert (!actx->preset_user); -+ -+ if (actx->passes == 1) -+ DEBUG_SMB(("[auth] No credentials, trying anonymous user login\n")); -+ else -+ DEBUG_SMB(("[auth] No credentials, returning null values\n")); -+ - strncpy (username_out, "", unmaxlen); - strncpy (password_out, "", pwmaxlen); -- DEBUG_SMB(("[auth] No credentials, returning null values\n")); - } - - /* Put in the default workgroup if none specified */ diff --git a/gnome-vfs-2.15.1-use-sys-inotify.patch b/gnome-vfs-2.15.1-use-sys-inotify.patch deleted file mode 100644 index 6a47efa..0000000 --- a/gnome-vfs-2.15.1-use-sys-inotify.patch +++ /dev/null @@ -1,74 +0,0 @@ ---- gnome-vfs-2.15.1/modules/inotify-helper.c.use-sys-inotify 2006-05-17 13:27:10.000000000 -0400 -+++ gnome-vfs-2.15.1/modules/inotify-helper.c 2006-05-17 13:27:51.000000000 -0400 -@@ -28,19 +28,11 @@ - #include - #include - #include --/* Just include the local header to stop all the pain */ --#include "local_inotify.h" --#if 0 - #ifdef HAVE_SYS_INOTIFY_H --/* We don't actually include the libc header, because there has been -- * problems with libc versions that was built without inotify support. -- * Instead we use the local version. -- */ --#include "local_inotify.h" -+#include - #elif defined (HAVE_LINUX_INOTIFY_H) - #include - #endif --#endif - #include - #include - #include "inotify-helper.h" ---- gnome-vfs-2.15.1/modules/inotify-kernel.c.use-sys-inotify 2006-05-17 13:27:10.000000000 -0400 -+++ gnome-vfs-2.15.1/modules/inotify-kernel.c 2006-05-17 13:28:33.000000000 -0400 -@@ -24,22 +24,12 @@ - #include - #include "inotify-kernel.h" - --/* Just include the local headers to stop all the pain */ --#include "local_inotify.h" --#include "local_inotify_syscalls.h" --#if 0 - #ifdef HAVE_SYS_INOTIFY_H --/* We don't actually include the libc header, because there has been -- * problems with libc versions that was built without inotify support. -- * Instead we use the local version. -- */ --#include "local_inotify.h" --#include "local_inotify_syscalls.h" -+#include - #elif defined (HAVE_LINUX_INOTIFY_H) - #include - #include "local_inotify_syscalls.h" - #endif --#endif - - /* Timings for pairing MOVED_TO / MOVED_FROM events */ - #define PROCESS_EVENTS_TIME 125 /* milliseconds */ ---- gnome-vfs-2.15.1/modules/inotify-path.c.use-sys-inotify 2006-05-17 13:27:10.000000000 -0400 -+++ gnome-vfs-2.15.1/modules/inotify-path.c 2006-05-17 13:50:50.000000000 -0400 -@@ -28,18 +28,14 @@ - /* Don't put conflicting kernel types in the global namespace: */ - #define __KERNEL_STRICT_NAMES - --#include "local_inotify.h" --#if 0 - #ifdef HAVE_SYS_INOTIFY_H --/* We don't actually include the libc header, because there has been -- * problems with libc versions that was built without inotify support. -- * Instead we use the local version. -- */ --#include "local_inotify.h" -+#include -+#ifndef IN_ONLYDIR -+#define IN_ONLYDIR 0x01000000 -+#endif - #elif defined (HAVE_LINUX_INOTIFY_H) - #include - #endif --#endif - #include - #include - #include diff --git a/gnome-vfs-2.15.3-dbus-deprecated.patch b/gnome-vfs-2.15.3-dbus-deprecated.patch deleted file mode 100644 index 4d2cd9c..0000000 --- a/gnome-vfs-2.15.3-dbus-deprecated.patch +++ /dev/null @@ -1,87 +0,0 @@ ---- gnome-vfs-2.15.3/daemon/vfs-daemon.c.dbus-deprecated 2006-07-18 19:43:49.000000000 -0400 -+++ gnome-vfs-2.15.3/daemon/vfs-daemon.c 2006-07-18 19:45:55.000000000 -0400 -@@ -108,7 +108,7 @@ - g_warning ("Failed to acquire vfs-daemon service: %s", error.message); - dbus_error_free (&error); - -- dbus_connection_disconnect (conn); -+ dbus_connection_close (conn); - /* Remove this, it asserts: - dbus_connection_unref (conn); */ - conn = NULL; -@@ -119,7 +119,7 @@ - if (ret == DBUS_REQUEST_NAME_REPLY_EXISTS) { - g_printerr ("VFS daemon already running, exiting.\n"); - -- dbus_connection_disconnect (conn); -+ dbus_connection_close (conn); - /* Remove this, it asserts: - dbus_connection_unref (conn); */ - conn = NULL; -@@ -130,7 +130,7 @@ - if (ret != DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER) { - g_printerr ("Not primary owner of the service, exiting.\n"); - -- dbus_connection_disconnect (conn); -+ dbus_connection_close (conn); - /* Remove this, it asserts: - dbus_connection_unref (conn); */ - conn = NULL; -@@ -149,7 +149,7 @@ - NULL)) { - g_printerr ("Failed to register object with D-BUS.\n"); - -- dbus_connection_disconnect (conn); -+ dbus_connection_close (conn); - dbus_connection_unref (conn); - conn = NULL; - -@@ -177,7 +177,7 @@ - return; - } - -- dbus_connection_disconnect (conn); -+ dbus_connection_close (conn); - dbus_connection_unref (conn); - } - ---- gnome-vfs-2.15.3/daemon/daemon-connection.c.dbus-deprecated 2006-07-18 19:46:14.000000000 -0400 -+++ gnome-vfs-2.15.3/daemon/daemon-connection.c 2006-07-18 19:46:29.000000000 -0400 -@@ -218,7 +218,7 @@ - d(g_print ("Connection destroy\n")); - - if (dbus_connection_get_is_connected (conn->conn)) { -- dbus_connection_disconnect (conn->conn); -+ dbus_connection_close (conn->conn); - } - dbus_connection_unref (conn->conn); - ---- gnome-vfs-2.15.3/libgnomevfs/gnome-vfs-daemon-method.c.dbus-deprecated 2006-07-18 19:46:49.000000000 -0400 -+++ gnome-vfs-2.15.3/libgnomevfs/gnome-vfs-daemon-method.c 2006-07-18 19:47:16.000000000 -0400 -@@ -348,7 +348,7 @@ - { - LocalConnection *ret = data; - -- dbus_connection_disconnect (ret->connection); -+ dbus_connection_close (ret->connection); - dbus_connection_unref (ret->connection); - g_free (ret); - } -@@ -391,7 +391,7 @@ - -1, - &error); - dbus_message_unref (message); -- dbus_connection_disconnect (main_conn); -+ dbus_connection_close (main_conn); - dbus_connection_unref (main_conn); - if (!reply) { - g_warning ("Error while getting peer-to-peer connection: %s", -@@ -421,7 +421,7 @@ - &connection_vtable, - NULL)) { - g_warning ("Failed to register client object with the connection."); -- dbus_connection_disconnect (private_conn); -+ dbus_connection_close (private_conn); - dbus_connection_unref (private_conn); - return NULL; - } diff --git a/gnome-vfs-2.15.90-dbus-spew.patch b/gnome-vfs-2.15.90-dbus-spew.patch deleted file mode 100644 index dbb8949..0000000 --- a/gnome-vfs-2.15.90-dbus-spew.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gnome-vfs-2.15.90/libgnomevfs/gnome-vfs-dbus-utils.c.dbus-spew 2006-08-04 16:14:21.000000000 -0400 -+++ gnome-vfs-2.15.90/libgnomevfs/gnome-vfs-dbus-utils.c 2006-08-04 16:14:43.000000000 -0400 -@@ -124,7 +124,7 @@ - DBUS_TYPE_STRING, &new_owner, - DBUS_TYPE_INVALID); - -- g_print ("NameOwnerChanged %s %s->%s\n", service, old_owner, new_owner); -+ d(g_print ("NameOwnerChanged %s %s->%s\n", service, old_owner, new_owner)); - - if (strcmp (service, DVD_DAEMON_SERVICE) == 0) { - if (strcmp (old_owner, "") != 0 && diff --git a/gnome-vfs-2.15.92-redirect.patch b/gnome-vfs-2.15.92-redirect.patch deleted file mode 100644 index 5e9d388..0000000 --- a/gnome-vfs-2.15.92-redirect.patch +++ /dev/null @@ -1,58 +0,0 @@ ---- gnome-vfs-2.15.91/modules/http-neon-method.c.redirect 2006-08-30 14:30:23.000000000 -0400 -+++ gnome-vfs-2.15.91/modules/http-neon-method.c 2006-08-30 14:30:40.000000000 -0400 -@@ -1846,8 +1846,11 @@ - - result = http_follow_redirect (context); - -- if (result == GNOME_VFS_OK) -+ if (result == GNOME_VFS_OK) { - goto propfind_start; -+ } else { -+ return result; -+ } - } - - req = ne_propfind_get_request (pfh); -@@ -1896,12 +1899,15 @@ - res = ne_request_dispatch (req); - - if (res == NE_REDIRECT) { -- result = http_follow_redirect (context); -- -+ ne_request_destroy (req); -+ req = NULL; -+ -+ result = http_follow_redirect (context); -+ - if (result == GNOME_VFS_OK) { -- ne_request_destroy (req); -- req = NULL; - goto head_start; -+ } else { -+ return result; - } - } - -@@ -2006,7 +2012,12 @@ - if (res == NE_REDIRECT) { - ne_request_destroy (req); - result = http_follow_redirect (hctx); -- goto options_start; -+ -+ if (result == GNOME_VFS_OK) { -+ goto options_start; -+ } else { -+ return result; -+ } - } - - result = resolve_result (res, req); -@@ -2289,7 +2300,7 @@ - - if (res == NE_REDIRECT) { - result = http_follow_redirect (hctx); -- -+ - if (result == GNOME_VFS_OK) - goto get_start; - } diff --git a/gnome-vfs-2.16.0-cvs-backport.patch b/gnome-vfs-2.16.0-cvs-backport.patch deleted file mode 100644 index e0730d4..0000000 --- a/gnome-vfs-2.16.0-cvs-backport.patch +++ /dev/null @@ -1,421 +0,0 @@ -Index: libgnomevfs/xdgmime.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/xdgmime.c,v -retrieving revision 1.13 -retrieving revision 1.14 -diff -u -p -r1.13 -r1.14 ---- libgnomevfs/xdgmime.c 1 Dec 2005 19:32:02 -0000 1.13 -+++ libgnomevfs/xdgmime.c 13 Sep 2006 09:23:36 -0000 1.14 -@@ -60,7 +60,7 @@ static XdgCallbackList *callback_list = - XdgMimeCache **_caches = NULL; - static int n_caches = 0; - --const char *xdg_mime_type_unknown = "application/octet-stream"; -+const char xdg_mime_type_unknown[] = "application/octet-stream"; - - - enum -@@ -281,7 +281,8 @@ xdg_run_command_on_dirs (XdgDirectoryFun - * FIXME: This doesn't protect against permission changes. - */ - static int --xdg_check_file (const char *file_path) -+xdg_check_file (const char *file_path, -+ int *exists) - { - struct stat st; - -@@ -290,6 +291,9 @@ xdg_check_file (const char *file_path) - { - XdgDirTimeList *list; - -+ if (exists) -+ *exists = TRUE; -+ - for (list = dir_time_list; list; list = list->next) - { - if (! strcmp (list->directory_name, file_path) && -@@ -306,6 +310,9 @@ xdg_check_file (const char *file_path) - return TRUE; - } - -+ if (exists) -+ *exists = FALSE; -+ - return FALSE; - } - -@@ -313,26 +320,30 @@ static int - xdg_check_dir (const char *directory, - int *invalid_dir_list) - { -- int invalid; -+ int invalid, exists; - char *file_name; - - assert (directory != NULL); - -- /* Check the globs file */ -- file_name = malloc (strlen (directory) + strlen ("/mime/globs") + 1); -- strcpy (file_name, directory); strcat (file_name, "/mime/globs"); -- invalid = xdg_check_file (file_name); -+ /* Check the mime.cache file */ -+ file_name = malloc (strlen (directory) + strlen ("/mime/mime.cache") + 1); -+ strcpy (file_name, directory); strcat (file_name, "/mime/mime.cache"); -+ invalid = xdg_check_file (file_name, &exists); - free (file_name); - if (invalid) - { - *invalid_dir_list = TRUE; - return TRUE; - } -+ else if (exists) -+ { -+ return FALSE; -+ } - -- /* Check the magic file */ -- file_name = malloc (strlen (directory) + strlen ("/mime/magic") + 1); -- strcpy (file_name, directory); strcat (file_name, "/mime/magic"); -- invalid = xdg_check_file (file_name); -+ /* Check the globs file */ -+ file_name = malloc (strlen (directory) + strlen ("/mime/globs") + 1); -+ strcpy (file_name, directory); strcat (file_name, "/mime/globs"); -+ invalid = xdg_check_file (file_name, NULL); - free (file_name); - if (invalid) - { -@@ -340,10 +351,10 @@ xdg_check_dir (const char *directory, - return TRUE; - } - -- /* Check the mime.cache file */ -- file_name = malloc (strlen (directory) + strlen ("/mime/mime.cache") + 1); -- strcpy (file_name, directory); strcat (file_name, "/mime/mime.cache"); -- invalid = xdg_check_file (file_name); -+ /* Check the magic file */ -+ file_name = malloc (strlen (directory) + strlen ("/mime/magic") + 1); -+ strcpy (file_name, directory); strcat (file_name, "/mime/magic"); -+ invalid = xdg_check_file (file_name, NULL); - free (file_name); - if (invalid) - { -@@ -584,6 +595,17 @@ xdg_mime_shutdown (void) - parent_list = NULL; - } - -+ if (_caches) -+ { -+ int i; -+ -+ for (i = 0; i < n_caches; i++) -+ _xdg_mime_cache_unref (_caches[i]); -+ free (_caches); -+ _caches = NULL; -+ n_caches = 0; -+ } -+ - for (list = callback_list; list; list = list->next) - (list->callback) (list->data); - -@@ -602,12 +624,10 @@ xdg_mime_get_max_buffer_extents (void) - } - - const char * --xdg_mime_unalias_mime_type (const char *mime_type) -+_xdg_mime_unalias_mime_type (const char *mime_type) - { - const char *lookup; - -- xdg_mime_init (); -- - if (_caches) - return _xdg_mime_cache_unalias_mime_type (mime_type); - -@@ -617,16 +637,22 @@ xdg_mime_unalias_mime_type (const char * - return mime_type; - } - -+const char * -+xdg_mime_unalias_mime_type (const char *mime_type) -+{ -+ xdg_mime_init (); -+ -+ return _xdg_mime_unalias_mime_type (mime_type); -+} -+ - int --xdg_mime_mime_type_equal (const char *mime_a, -- const char *mime_b) -+_xdg_mime_mime_type_equal (const char *mime_a, -+ const char *mime_b) - { - const char *unalias_a, *unalias_b; - -- xdg_mime_init (); -- -- unalias_a = xdg_mime_unalias_mime_type (mime_a); -- unalias_b = xdg_mime_unalias_mime_type (mime_b); -+ unalias_a = _xdg_mime_unalias_mime_type (mime_a); -+ unalias_b = _xdg_mime_unalias_mime_type (mime_b); - - if (strcmp (unalias_a, unalias_b) == 0) - return 1; -@@ -635,6 +661,15 @@ xdg_mime_mime_type_equal (const char *mi - } - - int -+xdg_mime_mime_type_equal (const char *mime_a, -+ const char *mime_b) -+{ -+ xdg_mime_init (); -+ -+ return _xdg_mime_mime_type_equal (mime_a, mime_b); -+} -+ -+int - xdg_mime_media_type_equal (const char *mime_a, - const char *mime_b) - { -@@ -650,7 +685,7 @@ xdg_mime_media_type_equal (const char *m - return 0; - } - --#if 0 -+#if 1 - static int - xdg_mime_is_super_type (const char *mime) - { -@@ -668,24 +703,22 @@ xdg_mime_is_super_type (const char *mime - #endif - - int --xdg_mime_mime_type_subclass (const char *mime, -- const char *base) -+_xdg_mime_mime_type_subclass (const char *mime, -+ const char *base) - { - const char *umime, *ubase; - const char **parents; - -- xdg_mime_init (); -- - if (_caches) - return _xdg_mime_cache_mime_type_subclass (mime, base); - -- umime = xdg_mime_unalias_mime_type (mime); -- ubase = xdg_mime_unalias_mime_type (base); -+ umime = _xdg_mime_unalias_mime_type (mime); -+ ubase = _xdg_mime_unalias_mime_type (base); - - if (strcmp (umime, ubase) == 0) - return 1; - --#if 0 -+#if 1 - /* Handle supertypes */ - if (xdg_mime_is_super_type (ubase) && - xdg_mime_media_type_equal (umime, ubase)) -@@ -703,13 +736,22 @@ xdg_mime_mime_type_subclass (const char - parents = _xdg_mime_parent_list_lookup (parent_list, umime); - for (; parents && *parents; parents++) - { -- if (xdg_mime_mime_type_subclass (*parents, ubase)) -+ if (_xdg_mime_mime_type_subclass (*parents, ubase)) - return 1; - } - - return 0; - } - -+int -+xdg_mime_mime_type_subclass (const char *mime, -+ const char *base) -+{ -+ xdg_mime_init (); -+ -+ return _xdg_mime_mime_type_subclass (mime, base); -+} -+ - char ** - xdg_mime_list_mime_parents (const char *mime) - { -@@ -741,7 +783,7 @@ xdg_mime_get_mime_parents (const char *m - - xdg_mime_init (); - -- umime = xdg_mime_unalias_mime_type (mime); -+ umime = _xdg_mime_unalias_mime_type (mime); - - return _xdg_mime_parent_list_lookup (parent_list, umime); - } -Index: libgnomevfs/xdgmime.h -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/xdgmime.h,v -retrieving revision 1.10 -retrieving revision 1.11 -diff -u -p -r1.10 -r1.11 ---- libgnomevfs/xdgmime.h 19 Oct 2005 12:40:26 -0000 1.10 -+++ libgnomevfs/xdgmime.h 13 Sep 2006 09:23:36 -0000 1.11 -@@ -59,12 +59,13 @@ typedef void (*XdgMimeDestroy) (void *u - #define xdg_mime_unalias_mime_type XDG_ENTRY(unalias_mime_type) - #define xdg_mime_get_max_buffer_extents XDG_ENTRY(get_max_buffer_extents) - #define xdg_mime_shutdown XDG_ENTRY(shutdown) -+#define xdg_mime_dump XDG_ENTRY(dump) - #define xdg_mime_register_reload_callback XDG_ENTRY(register_reload_callback) - #define xdg_mime_remove_callback XDG_ENTRY(remove_callback) - #define xdg_mime_type_unknown XDG_ENTRY(type_unknown) - #endif - --extern const char *xdg_mime_type_unknown; -+extern const char xdg_mime_type_unknown[]; - #define XDG_MIME_TYPE_UNKNOWN xdg_mime_type_unknown - - const char *xdg_mime_get_mime_type_for_data (const void *data, -@@ -95,8 +96,17 @@ int xdg_mime_register_reload_ca - XdgMimeDestroy destroy); - void xdg_mime_remove_callback (int callback_id); - -+ /* Private versions of functions that don't call xdg_mime_init () */ -+int _xdg_mime_mime_type_equal (const char *mime_a, -+ const char *mime_b); -+int _xdg_mime_media_type_equal (const char *mime_a, -+ const char *mime_b); -+int _xdg_mime_mime_type_subclass (const char *mime, -+ const char *base); -+const char *_xdg_mime_unalias_mime_type (const char *mime); -+ -+ - #ifdef __cplusplus - } - #endif /* __cplusplus */ -- - #endif /* __XDG_MIME_H__ */ -Index: libgnomevfs/xdgmimeglob.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/xdgmimeglob.c,v -retrieving revision 1.12 -retrieving revision 1.13 -diff -u -p -r1.12 -r1.13 ---- libgnomevfs/xdgmimeglob.c 2 Mar 2006 17:13:50 -0000 1.12 -+++ libgnomevfs/xdgmimeglob.c 13 Sep 2006 09:23:36 -0000 1.13 -@@ -263,7 +263,7 @@ _xdg_glob_hash_insert_text (XdgGlobHashN - { - child = _xdg_glob_hash_node_new (); - child->character = '\000'; -- child->mime_type = strdup (mime_type); -+ child->mime_type = mime_type; - child->child = NULL; - child->next = node->child; - node->child = child; -@@ -272,7 +272,7 @@ _xdg_glob_hash_insert_text (XdgGlobHashN - } - else - { -- node->mime_type = strdup (mime_type); -+ node->mime_type = mime_type; - } - } - else -@@ -308,11 +308,13 @@ _xdg_glob_hash_node_lookup_file_name (Xd - if (*file_name == '\000') - { - n = 0; -- mime_types[n++] = node->mime_type; -+ if (node->mime_type) -+ mime_types[n++] = node->mime_type; - node = node->child; - while (n < n_mime_types && node && node->character == 0) - { -- mime_types[n++] = node->mime_type; -+ if (node->mime_type) -+ mime_types[n++] = node->mime_type; - node = node->next; - } - } -@@ -475,7 +477,7 @@ _xdg_glob_hash_append_glob (XdgGlobHash - glob_hash->literal_list = _xdg_glob_list_append (glob_hash->literal_list, strdup (glob), strdup (mime_type)); - break; - case XDG_GLOB_SIMPLE: -- glob_hash->simple_node = _xdg_glob_hash_insert_text (glob_hash->simple_node, glob + 1, mime_type); -+ glob_hash->simple_node = _xdg_glob_hash_insert_text (glob_hash->simple_node, glob + 1, strdup (mime_type)); - break; - case XDG_GLOB_FULL: - glob_hash->full_list = _xdg_glob_list_append (glob_hash->full_list, strdup (glob), strdup (mime_type)); -Index: libgnomevfs/xdgmimemagic.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/xdgmimemagic.c,v -retrieving revision 1.16 -retrieving revision 1.17 -diff -u -p -r1.16 -r1.17 ---- libgnomevfs/xdgmimemagic.c 13 Jul 2006 19:02:47 -0000 1.16 -+++ libgnomevfs/xdgmimemagic.c 13 Sep 2006 09:23:36 -0000 1.17 -@@ -671,7 +671,7 @@ _xdg_mime_magic_lookup_data (XdgMimeMagi - if (_xdg_mime_magic_match_compare_to_data (match, data, len)) - { - if (!had_match || match->priority > priority || -- (mime_type != NULL && xdg_mime_mime_type_subclass (match->mime_type, mime_type))) -+ (mime_type != NULL && _xdg_mime_mime_type_subclass (match->mime_type, mime_type))) - { - mime_type = match->mime_type; - priority = match->priority; -@@ -688,7 +688,7 @@ _xdg_mime_magic_lookup_data (XdgMimeMagi - for (n = 0; n < n_mime_types; n++) - { - if (mime_types[n] && -- xdg_mime_mime_type_equal (mime_types[n], match->mime_type)) -+ _xdg_mime_mime_type_equal (mime_types[n], match->mime_type)) - mime_types[n] = NULL; - } - } -Index: modules/http-neon-method.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/modules/http-neon-method.c,v -retrieving revision 1.39 -retrieving revision 1.40 -diff -u -p -r1.39 -r1.40 ---- modules/http-neon-method.c 1 Sep 2006 19:28:27 -0000 1.39 -+++ modules/http-neon-method.c 15 Sep 2006 19:31:00 -0000 1.40 -@@ -400,6 +400,7 @@ G_LOCK_DEFINE (auth_cache); - static GHashTable *auth_cache_basic; - static GHashTable *auth_cache_proxy; - static guint cleanup_id; -+static guint module_refcount = 0; - - typedef struct { - -@@ -3331,20 +3332,24 @@ static GnomeVFSMethod http_method = { - GnomeVFSMethod * - vfs_module_init (const char *method_name, const char *args) - { -- proxy_init (); -- /* ne_debug_init (stdout, 0xfffe); */ -- neon_session_pool_init (); -- http_auth_cache_init (); -- quick_allow_lookup_init (); -- -+ if (module_refcount++ == 0) { -+ proxy_init (); -+ /* ne_debug_init (stdout, 0xfffe); */ -+ neon_session_pool_init (); -+ http_auth_cache_init (); -+ quick_allow_lookup_init (); -+ } -+ - return &http_method; - } - - void - vfs_module_shutdown (GnomeVFSMethod *method) - { -- quit_allow_lookup_destroy (); -- http_auth_cache_shutdown (); -- neon_session_pool_shutdown (); -- proxy_shutdown (); -+ if (--module_refcount == 0) { -+ quit_allow_lookup_destroy (); -+ http_auth_cache_shutdown (); -+ neon_session_pool_shutdown (); -+ proxy_shutdown (); -+ } - } diff --git a/gnome-vfs-2.16.2-ipv6-link-local.patch b/gnome-vfs-2.16.2-ipv6-link-local.patch deleted file mode 100644 index 5a23513..0000000 --- a/gnome-vfs-2.16.2-ipv6-link-local.patch +++ /dev/null @@ -1,72 +0,0 @@ ---- gnome-vfs-2.16.2/libgnomevfs/gnome-vfs-dns-sd.c.ipv6 2006-11-30 13:40:48.000000000 +0100 -+++ gnome-vfs-2.16.2/libgnomevfs/gnome-vfs-dns-sd.c 2006-11-30 14:28:48.000000000 +0100 -@@ -1959,6 +1959,7 @@ - struct sync_resolve_data { - AvahiSimplePoll *poll; - gboolean got_data; -+ gboolean got_link_local_ipv6; - char *host; - int port; - char *text; -@@ -1997,6 +1998,13 @@ - - data = user_data; - if (event == AVAHI_RESOLVER_FOUND) { -+ if (address->proto == AVAHI_PROTO_INET6 && -+ address->data.ipv6.address[0] == 0xfe && -+ address->data.ipv6.address[1] == 0x80) { -+ data->got_link_local_ipv6 = TRUE; -+ goto out; -+ } -+ - data->got_data = TRUE; - avahi_address_snprint (a, sizeof(a), address); - data->host = g_strdup (a); -@@ -2005,7 +2013,7 @@ - data->text = g_malloc (data->text_len); - avahi_string_list_serialize (txt, data->text, data->text_len); - } -- -+ out: - avahi_service_resolver_free (r); - avahi_simple_poll_quit (data->poll); - } -@@ -2090,8 +2098,13 @@ - AvahiClient *client = NULL; - AvahiServiceResolver *sr; - int error; -+ AvahiProtocol protocol; - struct sync_resolve_data resolve_data = {0}; - -+ protocol = AVAHI_PROTO_UNSPEC; -+ -+ retry: -+ - simple_poll = avahi_simple_poll_new (); - resolve_data.poll = simple_poll; - if (simple_poll == NULL) { -@@ -2109,7 +2122,8 @@ - return GNOME_VFS_ERROR_GENERIC; - } - -- sr = avahi_service_resolver_new (client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, -+ resolve_data.got_link_local_ipv6 = FALSE; -+ sr = avahi_service_resolver_new (client, AVAHI_IF_UNSPEC, protocol, - name, type, domain, AVAHI_PROTO_UNSPEC, - 0, avahi_resolve_sync_callback, &resolve_data); - if (sr == NULL) { -@@ -2127,6 +2141,14 @@ - avahi_client_free (client); - avahi_simple_poll_free (simple_poll); - -+ -+ if (resolve_data.got_link_local_ipv6) { -+ /* We ignore non-routable ipv6 link-local addresses here, because our -+ api doesn't give the iface, so they are useless. Prefer ipv4 address instead */ -+ protocol = AVAHI_PROTO_INET; -+ goto retry; -+ } -+ - if (resolve_data.got_data) { - *host = resolve_data.host; - *port = resolve_data.port; diff --git a/gnome-vfs-2.18.1-ftp-symlink.patch b/gnome-vfs-2.18.1-ftp-symlink.patch deleted file mode 100644 index 33f4b89..0000000 --- a/gnome-vfs-2.18.1-ftp-symlink.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- gnome-vfs-2.18.1/modules/ftp-method.c.symlink 2007-05-07 23:27:49.000000000 -0400 -+++ gnome-vfs-2.18.1/modules/ftp-method.c 2007-05-07 23:29:20.000000000 -0400 -@@ -2229,7 +2229,7 @@ unix_ls_to_file_info (gchar *ls, GnomeVF - - if(linkname) { - file_info->symlink_name = linkname; -- file_info->valid_fields |= GNOME_VFS_FILE_INFO_FIELDS_SYMLINK_NAME; -+ file_info->valid_fields |= GNOME_VFS_FILE_INFO_FIELDS_SYMLINK_NAME | GNOME_VFS_FILE_INFO_FIELDS_FLAGS; - file_info->flags |= GNOME_VFS_FILE_FLAGS_SYMLINK; - } - -@@ -2716,7 +2716,7 @@ do_read_directory (GnomeVFSMethod *metho - gnome_vfs_file_info_copy (file_info, symlink_info); - - GNOME_VFS_FILE_INFO_SET_SYMLINK (file_info, TRUE); -- file_info->valid_fields |= GNOME_VFS_FILE_INFO_FIELDS_SYMLINK_NAME; -+ file_info->valid_fields |= GNOME_VFS_FILE_INFO_FIELDS_SYMLINK_NAME | GNOME_VFS_FILE_INFO_FIELDS_FLAGS; - file_info->symlink_name = gnome_vfs_unescape_string (uri->text != NULL ? uri->text : "/", "/"); - - g_free (file_info->name); diff --git a/gnome-vfs-2.5.90-modules-conf.patch b/gnome-vfs-2.5.90-modules-conf.patch deleted file mode 100644 index 372a49b..0000000 --- a/gnome-vfs-2.5.90-modules-conf.patch +++ /dev/null @@ -1,28 +0,0 @@ ---- gnome-vfs-2.5.90/modules/default-modules.conf.modules-conf 2004-03-05 08:40:12.000000000 -0500 -+++ gnome-vfs-2.5.90/modules/default-modules.conf 2004-03-11 00:05:55.399947624 -0500 -@@ -42,15 +42,15 @@ - a ar arj cpio deb hp48 lha mailfs patchfs rar rpm rpms trpm zip zoo: extfs - - # vfolder desktop method --applications: vfolder-desktop --applications-all-users: vfolder-desktop --all-applications: vfolder-desktop --preferences: vfolder-desktop --preferences-all-users: vfolder-desktop --all-preferences: vfolder-desktop --favorites: vfolder-desktop --start-here: vfolder-desktop --system-settings: vfolder-desktop --server-settings: vfolder-desktop -+applications: menu -+applications-all-users: menu -+all-applications: menu -+preferences: menu -+preferences-all-users: menu -+all-preferences: menu -+favorites: desktop -+start-here: desktop -+system-settings: menu -+server-settings: menu - - tar: tar diff --git a/gnome-vfs-2.7.90-schema_about_for_upstream.patch b/gnome-vfs-2.7.90-schema_about_for_upstream.patch deleted file mode 100644 index f62343b..0000000 --- a/gnome-vfs-2.7.90-schema_about_for_upstream.patch +++ /dev/null @@ -1,43 +0,0 @@ ---- gnome-vfs-2.7.90/schemas/desktop_gnome_url_handlers.schemas.in.schema_about 2004-08-04 16:18:21.323425176 +0100 -+++ gnome-vfs-2.7.90/schemas/desktop_gnome_url_handlers.schemas.in 2004-08-04 16:25:28.770443352 +0100 -@@ -206,6 +206,40 @@ - - - -+ /schemas/desktop/gnome/url-handlers/about/enabled -+ /desktop/gnome/url-handlers/about/enabled -+ gnome -+ bool -+ true -+ -+ Handle about URLs -+ Set to true to have a program specified in "command" handle about URLs. -+ -+ -+ -+ /schemas/desktop/gnome/url-handlers/about/command -+ /desktop/gnome/url-handlers/about/command -+ gnome -+ string -+ mozilla %s -+ -+ about URL handler -+ -+ -+ -+ -+ /schemas/desktop/gnome/url-handlers/about/needs_terminal -+ /desktop/gnome/url-handlers/about/needs_terminal -+ gnome -+ bool -+ false -+ -+ Run program in terminal -+ True if the program to handle this URL should be run in a terminal. -+ -+ -+ -+ - /schemas/desktop/gnome/url-handlers/mailto/enabled - /desktop/gnome/url-handlers/mailto/enabled - gnome diff --git a/gnome-vfs-2.8.1-cvs-backport.patch b/gnome-vfs-2.8.1-cvs-backport.patch deleted file mode 100644 index a3514c1..0000000 --- a/gnome-vfs-2.8.1-cvs-backport.patch +++ /dev/null @@ -1,855 +0,0 @@ -Index: doc/tmpl/gnome-vfs-inet-connection.sgml -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/doc/tmpl/gnome-vfs-inet-connection.sgml,v -retrieving revision 1.4 -retrieving revision 1.5 -diff -u -p -r1.4 -r1.5 ---- doc/tmpl/gnome-vfs-inet-connection.sgml 16 Aug 2004 08:44:05 -0000 1.4 -+++ doc/tmpl/gnome-vfs-inet-connection.sgml 7 Oct 2004 04:36:35 -0000 1.5 -@@ -1,11 +1,19 @@ - --gnome-vfs-inet-connection -+Internet connection - - -- -+Simple TCP/IP connection functions. - - - -+A #GnomeVFSInetConnection represents a TCP/IP connection. You can either use -+#gnome_vfs_inet_connection_create which will use the #gnome_vfs_resolve DNS -+resolution functions internally or you can do the name resolution yourself -+and use #gnome_vfs_inet_connection_create_from_address to connect to a specific -+address. -+ -+After a connection has been established all I/O is done through a GnomeVFSSocket -+or a GnomeVFSSocketBuffer. - - - -Index: doc/tmpl/gnome-vfs-socket-buffer.sgml -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/doc/tmpl/gnome-vfs-socket-buffer.sgml,v -retrieving revision 1.4 -retrieving revision 1.5 -diff -u -p -r1.4 -r1.5 ---- doc/tmpl/gnome-vfs-socket-buffer.sgml 16 Aug 2004 08:44:05 -0000 1.4 -+++ doc/tmpl/gnome-vfs-socket-buffer.sgml 7 Oct 2004 04:36:35 -0000 1.5 -@@ -1,11 +1,22 @@ - --gnome-vfs-socket-buffer -+Unified bufferd network I/O - - -- -+Posix style buffered network input/output. - - - -+The GnomeVFSSocketBuffer functions are very similar to the GnomeVFSSocket -+ones. The only difference is that all input/output is done through an internally -+managed buffer. This might increase I/O performance as well as give you the -+possibility to use some convenient functions like #gnome_vfs_socket_buffer_peekc -+and #gnome_vfs_socket_buffer_read_until. -+ -+ -+ -+ -+You can manually force all internally buffered data to get written with -+#gnome_vfs_socket_buffer_flush. - - - -Index: doc/tmpl/gnome-vfs-socket.sgml -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/doc/tmpl/gnome-vfs-socket.sgml,v -retrieving revision 1.7 -retrieving revision 1.8 -diff -u -p -r1.7 -r1.8 ---- doc/tmpl/gnome-vfs-socket.sgml 16 Aug 2004 08:44:06 -0000 1.7 -+++ doc/tmpl/gnome-vfs-socket.sgml 7 Oct 2004 04:36:35 -0000 1.8 -@@ -1,11 +1,16 @@ - --gnome-vfs-socket -+Unified network I/O - - -- -+Posix style network input/output functions. - - - -+The GnomeVFSSocket function family unifies network I/O through functions -+similar to the standard POSIX read/write functions. The main difference is -+that all operations are cancellable through the standard GnomeVFS cancellation -+mechanism and you can specify a maximum amount of time an operation may take -+through #gnome_vfs_socket_set_timeout. - - - -Index: imported/neon/ne_gnomevfs.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/imported/neon/ne_gnomevfs.c,v -retrieving revision 1.4 -retrieving revision 1.5 -diff -u -p -r1.4 -r1.5 ---- imported/neon/ne_gnomevfs.c 21 Sep 2004 08:10:19 -0000 1.4 -+++ imported/neon/ne_gnomevfs.c 5 Oct 2004 15:47:10 -0000 1.5 -@@ -252,7 +252,7 @@ ne_sock_connect (ne_socket *sock, const - return NE_SOCK_ERROR; - - sock->socket = gnome_vfs_inet_connection_to_socket (sock->connection); -- sock->socket_buffer = gnome_vfs_inet_connection_to_socket_buffer (sock->connection); -+ sock->socket_buffer = gnome_vfs_socket_buffer_new (sock->socket); - - return 0; - } -@@ -425,8 +425,6 @@ ne_sock_close (ne_socket *sock) - GnomeVFSCancellation *cancellation; - - peek_cancellation (cancellation); -- -- gnome_vfs_socket_free (sock->socket); - - if (sock->socket_buffer) { - gnome_vfs_socket_buffer_flush (sock->socket_buffer, -Index: libgnomevfs/eggdesktopentries.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/eggdesktopentries.c,v -retrieving revision 1.8 -retrieving revision 1.10 -diff -u -p -r1.8 -r1.10 ---- libgnomevfs/eggdesktopentries.c 3 Sep 2004 18:24:00 -0000 1.8 -+++ libgnomevfs/eggdesktopentries.c 28 Sep 2004 03:41:12 -0000 1.10 -@@ -224,7 +224,7 @@ egg_find_file_in_data_dirs (const gchar - g_free (path); - - if (fd < 0 && file_error == NULL) -- g_set_error (&file_error, G_FILE_ERROR, -+ file_error = g_error_new (G_FILE_ERROR, - g_file_error_from_errno (errno), - _("File could not be opened: %s"), - g_strerror (errno)); -@@ -261,10 +261,8 @@ egg_find_file_in_data_dir (const gchar * - gint fd; - gchar **data_dirs; - GError *file_error; -- GError *secondary_error; - - file_error = NULL; -- secondary_error = NULL; - - - data_dirs = g_new0 (char *, 2); -@@ -275,20 +273,18 @@ egg_find_file_in_data_dir (const gchar * - if (fd < 0) - { - data_dirs = egg_get_secondary_data_dirs (); -- fd = egg_find_file_in_data_dirs (file, data_dirs, &secondary_error); -+ fd = egg_find_file_in_data_dirs (file, data_dirs, NULL); - g_strfreev (data_dirs); - - if (fd >= 0) -- { -- g_error_free (file_error); -- file_error = NULL; -- } -+ { -+ g_error_free (file_error); -+ file_error = NULL; -+ } - } - - if (file_error) - g_propagate_error (error, file_error); -- else if (secondary_error) -- g_propagate_error (error, secondary_error); - - return fd; - } -@@ -405,6 +401,7 @@ egg_desktop_entries_free (EggDesktopEntr - g_string_free (entries->parse_buffer, TRUE); - - g_strfreev (entries->legal_start_groups); -+ g_free (entries->default_group_name); - - tmp = entries->groups; - while (tmp != NULL) -@@ -1912,9 +1909,9 @@ egg_desktop_entries_get_locale_country ( - q = strstr (p, "@"); - - if (!q) -- country_len = q - p; -- else - country_len = strlen (p); -+ else -+ country_len = q - p; - - if (country_len <= 0) - return NULL; -@@ -1972,9 +1969,9 @@ egg_desktop_entries_get_locale_encoding - q = strstr (p, "@"); - - if (!q) -- encoding_len = q - p; -- else - encoding_len = strlen (p); -+ else -+ encoding_len = q - p; - - if (encoding_len <= 0) - { -Index: libgnomevfs/gnome-vfs-mime-handlers.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-mime-handlers.c,v -retrieving revision 1.109 -retrieving revision 1.110 -diff -u -p -r1.109 -r1.110 ---- libgnomevfs/gnome-vfs-mime-handlers.c 7 Sep 2004 15:31:35 -0000 1.109 -+++ libgnomevfs/gnome-vfs-mime-handlers.c 5 Oct 2004 09:32:20 -0000 1.110 -@@ -98,6 +98,13 @@ gnome_vfs_mime_get_default_action_type ( - { - const char *action_type_string; - -+ /* TODO: gnome_vfs_mime_get_value below always returns NONE these days. -+ We need to figure out what to really do here. For now, special case folders. -+ */ -+ if (g_str_has_prefix (mime_type, "x-directory/")) { -+ return GNOME_VFS_MIME_ACTION_TYPE_COMPONENT; -+ } -+ - action_type_string = gnome_vfs_mime_get_value (mime_type, "default_action_type"); - - if (action_type_string != NULL && g_ascii_strcasecmp (action_type_string, "application") == 0) { -Index: libgnomevfs/gnome-vfs-monitor.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-monitor.c,v -retrieving revision 1.11 -retrieving revision 1.12 -diff -u -p -r1.11 -r1.12 ---- libgnomevfs/gnome-vfs-monitor.c 20 Jul 2004 21:46:40 -0000 1.11 -+++ libgnomevfs/gnome-vfs-monitor.c 7 Oct 2004 15:57:41 -0000 1.12 -@@ -331,7 +331,8 @@ send_uri_changes_now (GnomeVFSMonitorHan - l = monitor_handle->pending_callbacks; - while (l != NULL) { - callback_data = l->data; -- if (strcmp (callback_data->info_uri, uri) == 0) { -+ if (callback_data->send_state != CALLBACK_STATE_SENT && -+ strcmp (callback_data->info_uri, uri) == 0) { - callback_data->send_at = now; - } - l = l->next; -Index: libgnomevfs/gnome-vfs-unix-mounts.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-unix-mounts.c,v -retrieving revision 1.16 -retrieving revision 1.17 -diff -u -p -r1.16 -r1.17 ---- libgnomevfs/gnome-vfs-unix-mounts.c 21 Sep 2004 07:45:25 -0000 1.16 -+++ libgnomevfs/gnome-vfs-unix-mounts.c 22 Sep 2004 08:38:38 -0000 1.17 -@@ -91,98 +91,111 @@ - * to avoid this... - * Various ugly workarounds can be tried later. - */ --dev_t --_gnome_vfs_unix_mount_get_unix_device (GnomeVFSUnixMount *mount) -+GList * -+_gnome_vfs_unix_mount_get_unix_device (GList *mounts) - { -- struct stat statbuf; -- dev_t unix_device; -- pid_t pid; -- int pipes[2]; --#ifdef HAVE_POLL -- struct pollfd poll_fd; --#else -- struct timeval tv; -- fd_set read_fds; --#endif -- int res; -- int status; -+ GList *result = NULL; - -- if (pipe (pipes) == -1) { -- return 0; -- } -+ while (mounts) { -+ dev_t unix_device = 0; -+ pid_t pid; -+ int pipes[2]; -+ int status; - -- pid = fork (); -- -- if (pid == -1) { -- close (pipes[0]); -- close (pipes[1]); -- return 0; -- } -- -- unix_device = 0; -- -- if (pid == 0) { -- /* Child */ -- close (pipes[0]); -+ if (pipe (pipes) == -1) -+ goto error; - - pid = fork (); -+ if (pid == -1) { -+ close (pipes[0]); -+ close (pipes[1]); -+ goto error; -+ } - -- /* Fork an intermediate child that immediately exits so -- * we can waitpid it. This means the final process will get -- * owned by init and not go zombie -- */ - if (pid == 0) { -- /* Grandchild */ -- if (stat (mount->mount_path, &statbuf) == 0) { -- write (pipes[1], (char *)&statbuf.st_dev, sizeof (dev_t)); -+ /* Child */ -+ close (pipes[0]); -+ -+ /* Fork an intermediate child that immediately exits -+ * so we can waitpid it. This means the final process -+ * will get owned by init and not go zombie. -+ */ -+ pid = fork (); -+ -+ if (pid == 0) { -+ /* Grandchild */ -+ struct stat statbuf; -+ while (mounts) { -+ GnomeVFSUnixMount *mount = mounts->data; -+ unix_device = -+ stat (mount->mount_path, &statbuf) == 0 -+ ? statbuf.st_dev -+ : 0; -+ write (pipes[1], (char *)&unix_device, sizeof (dev_t)); -+ mounts = mounts->next; -+ } - } -- } else { - close (pipes[1]); -+ _exit (0); -+ g_assert_not_reached (); - } - -- _exit (0); -- } else { - /* Parent */ - close (pipes[1]); -- -- wait_again: -+ -+ retry_waitpid: - if (waitpid (pid, &status, 0) < 0) { - if (errno == EINTR) -- goto wait_again; -+ goto retry_waitpid; - else if (errno == ECHILD) - ; /* do nothing, child already reaped */ - else - g_warning ("waitpid() should not fail in gnome_vfs_unix_mount_get_unix_device"); - } - -+ while (mounts) { -+ int res; - -- do { -+ do { - #ifdef HAVE_POLL -- poll_fd.fd = pipes[0]; -- poll_fd.events = POLLIN; -- res = poll (&poll_fd, 1, STAT_TIMEOUT_SECONDS*1000); -+ struct pollfd poll_fd; -+ poll_fd.fd = pipes[0]; -+ poll_fd.events = POLLIN; -+ res = poll (&poll_fd, 1, STAT_TIMEOUT_SECONDS * 1000); - #else -- tv.tv_sec = STAT_TIMEOUT_SECONDS; -- tv.tv_usec = 0; -+ struct timeval tv; -+ fd_set read_fds; -+ -+ tv.tv_sec = STAT_TIMEOUT_SECONDS; -+ tv.tv_usec = 0; - -- FD_ZERO(&read_fds); -- FD_SET(pipes[0], &read_fds); -+ FD_ZERO(&read_fds); -+ FD_SET(pipes[0], &read_fds); - -- res = select (pipes[0] + 1, -- &read_fds, NULL, NULL, &tv); -+ res = select (pipes[0] + 1, -+ &read_fds, NULL, NULL, &tv); - #endif -- } while (res == -1 && errno == EINTR); -- -- if (res > 0) { -- if (read (pipes[0], (char *)&unix_device, sizeof (dev_t)) != sizeof (dev_t)) { -- unix_device = 0; -- } -+ } while (res == -1 && errno == EINTR); -+ -+ if (res <= 0 || -+ read (pipes[0], (char *)&unix_device, sizeof (dev_t)) != sizeof (dev_t)) -+ break; -+ -+ result = g_list_prepend (result, GUINT_TO_POINTER ((gulong)unix_device)); -+ mounts = mounts->next; - } - - close (pipes[0]); -+ -+ error: -+ if (mounts) { -+ unix_device = 0; -+ result = g_list_prepend (result, GUINT_TO_POINTER ((gulong)unix_device)); -+ mounts = mounts->next; -+ } - } -- -- return unix_device; -+ -+ return g_list_reverse (result); - } - - #ifndef HAVE_SETMNTENT -Index: libgnomevfs/gnome-vfs-unix-mounts.h -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-unix-mounts.h,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -u -p -r1.2 -r1.3 ---- libgnomevfs/gnome-vfs-unix-mounts.h 5 Nov 2003 15:44:53 -0000 1.2 -+++ libgnomevfs/gnome-vfs-unix-mounts.h 22 Sep 2004 08:38:38 -0000 1.3 -@@ -59,7 +59,7 @@ gint _gnome_vfs_unix_mount_point_com - GnomeVFSUnixMountPoint *mount_point2); - gboolean _gnome_vfs_get_unix_mount_table (GList **return_list); - gboolean _gnome_vfs_get_current_unix_mounts (GList **return_list); --dev_t _gnome_vfs_unix_mount_get_unix_device (GnomeVFSUnixMount *mount); -+GList * _gnome_vfs_unix_mount_get_unix_device (GList *mounts); - void _gnome_vfs_monitor_unix_mounts (GnomeVFSUnixMountCallback mount_table_changed, - gpointer mount_table_changed_user_data, - GnomeVFSUnixMountCallback current_mounts_changed, -Index: libgnomevfs/gnome-vfs-volume-monitor-daemon.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-volume-monitor-daemon.c,v -retrieving revision 1.14 -retrieving revision 1.15 -diff -u -p -r1.14 -r1.15 ---- libgnomevfs/gnome-vfs-volume-monitor-daemon.c 2 Sep 2004 15:51:48 -0000 1.14 -+++ libgnomevfs/gnome-vfs-volume-monitor-daemon.c 22 Sep 2004 08:38:38 -0000 1.15 -@@ -851,7 +851,7 @@ create_vol_from_mount (GnomeVFSVolumeMon - - vol->priv->volume_type = GNOME_VFS_VOLUME_TYPE_MOUNTPOINT; - vol->priv->device_path = g_strdup (mount->device_path); -- vol->priv->unix_device = _gnome_vfs_unix_mount_get_unix_device (mount); -+ vol->priv->unix_device = 0; /* Caller must fill in. */ - vol->priv->activation_uri = gnome_vfs_get_uri_from_local_path (mount->mount_path); - vol->priv->filesystem_type = g_strdup (mount->filesystem_type); - vol->priv->is_read_only = mount->is_read_only; -@@ -981,9 +981,8 @@ static void - update_mtab_volumes (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) - { - GList *new_mtab; -- GList *removed, *added; -- GList *l; -- GnomeVFSUnixMount *mount; -+ GList *removed, *added, *devices; -+ GList *l, *ld; - char *uri; - GnomeVFSVolume *vol; - GnomeVFSVolumeMonitor *volume_monitor; -@@ -998,7 +997,7 @@ update_mtab_volumes (GnomeVFSVolumeMonit - &added, &removed); - - for (l = removed; l != NULL; l = l->next) { -- mount = l->data; -+ GnomeVFSUnixMount *mount = l->data; - uri = gnome_vfs_get_uri_from_local_path (mount->mount_path); - - vol = _gnome_vfs_volume_monitor_find_mtab_volume_by_activation_uri (volume_monitor, uri); -@@ -1011,15 +1010,22 @@ update_mtab_volumes (GnomeVFSVolumeMonit - - g_free (uri); - } -- -- for (l = added; l != NULL; l = l->next) { -- mount = l->data; -+ -+ devices = _gnome_vfs_unix_mount_get_unix_device (added); -+ -+ for (l = added, ld = devices; -+ l != NULL; -+ l = l->next, ld = ld->next) { -+ GnomeVFSUnixMount *mount = l->data; -+ dev_t unix_device = GPOINTER_TO_UINT (ld->data); - - vol = create_vol_from_mount (volume_monitor, mount); -+ vol->priv->unix_device = unix_device; - _gnome_vfs_volume_monitor_mounted (volume_monitor, vol); - gnome_vfs_volume_unref (vol); - } -- -+ -+ g_list_free (devices); - g_list_free (added); - g_list_free (removed); - g_list_foreach (volume_monitor_daemon->last_mtab, -Index: modules/http-neon-method.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/modules/http-neon-method.c,v -retrieving revision 1.14 -retrieving revision 1.16 -diff -u -p -r1.14 -r1.16 ---- modules/http-neon-method.c 21 Sep 2004 13:09:32 -0000 1.14 -+++ modules/http-neon-method.c 6 Oct 2004 10:51:45 -0000 1.16 -@@ -82,17 +82,17 @@ void vfs_module_shutdown - /* ************************************************************************** */ - /* DEBUGING stuff */ - -+#undef DEBUG_HTTP_ENABLE -+ - #ifdef DEBUG_HTTP_ENABLE - --void http_debug_printf(char *func, char *fmt, ...) G_GNUC_PRINTF (2,3); -+void http_debug_printf(const char *func, const char *fmt, ...) G_GNUC_PRINTF (2,3); - - --/* #define DEBUG_HTTP_3(fmt, ...) http_debug_printf (__PRETTY_FUNCTION__, fmt, ##__VA_ARGS__) */ --/* #define DEBUG_HTTP_2(fmt, ...) http_debug_printf (__PRETTY_FUNCTION__, fmt, ##__VA_ARGS__) */ -+#define DEBUG_HTTP_3(fmt, ...) http_debug_printf (__PRETTY_FUNCTION__, fmt, ##__VA_ARGS__) -+#define DEBUG_HTTP_2(fmt, ...) http_debug_printf (__PRETTY_FUNCTION__, fmt, ##__VA_ARGS__) - #define DEBUG_HTTP(fmt, ...) http_debug_printf (__PRETTY_FUNCTION__, fmt, ##__VA_ARGS__) - #define DEBUG_HTTP_FUNC(_enter) http_debug_printf (_enter ? "+++" : "---", "%s",__PRETTY_FUNCTION__) --#define DEBUG_HTTP_3(fmt, ...) --#define DEBUG_HTTP_2(fmt, ...) - - - #define DEBUG_HTTP_CONTEXT(c) http_debug_printf (__PRETTY_FUNCTION__, \ -@@ -100,7 +100,7 @@ void http_debug_printf(char *func, char - c->session, c->path) - - void --http_debug_printf (char *func, char *fmt, ...) -+http_debug_printf (const char *func, const char *fmt, ...) - { - va_list args; - gchar * out; -@@ -1385,10 +1385,12 @@ neon_session_pool_lookup (GnomeVFSURI *u - DEBUG_HTTP ("[Session Pool] Searching (%d)", - g_hash_table_size (neon_session_table)); - -+ session = NULL; - pool = g_hash_table_lookup (neon_session_table, uri); - - /* search in session pool */ - if (pool != NULL && pool->unused_sessions) { -+ - session = pool->unused_sessions->data; - pool->unused_sessions = g_list_remove (pool->unused_sessions, - session); -@@ -1396,59 +1398,104 @@ neon_session_pool_lookup (GnomeVFSURI *u - g_list_length (pool->unused_sessions)); - - g_get_current_time (&(pool->last_used)); -- -- G_UNLOCK (nst_lock); -- return session; - } - - G_UNLOCK (nst_lock); -- return NULL; -+ return session; - } - - /* ************************************************************************** */ - /* Additional Headers */ --#if 0 --/* Does not work because the neon library doesnt provide as all the headers -- working around that is a bigger thing */ -+static int -+neon_return_headers (ne_request *req, void *userdata, const ne_status *status) -+{ -+ GnomeVFSModuleCallbackReceivedHeadersIn in_args; -+ GnomeVFSModuleCallbackReceivedHeadersOut out_args; -+ GList **headers, *iter; -+ GnomeVFSURI *uri; -+ ne_session *session; - --typedef struct { -+ DEBUG_HTTP_FUNC (1); - -- GnomeVFSURI *uri; -- gboolean sent; -+ session = ne_get_session (req); -+ headers = ne_get_request_private (req, "Headers"); -+ uri = ne_get_session_private (session, "GnomeVFSURI"); -+ -+ memset (&in_args, 0, sizeof (in_args)); -+ memset (&out_args, 0, sizeof (out_args)); -+ -+ in_args.uri = uri; -+ in_args.headers = *headers; -+ -+ gnome_vfs_module_callback_invoke (GNOME_VFS_MODULE_CALLBACK_HTTP_RECEIVED_HEADERS, -+ &in_args, sizeof (in_args), -+ &out_args, sizeof (out_args)); - --} AddHeadersContext; -+ for (iter = *headers; iter; iter = iter->next) { -+ DEBUG_HTTP_3 ("Headers returned %s,", (char *) iter->data); -+ g_free (iter->data); -+ } - -+ g_list_free (*headers); -+ g_free (headers); -+ -+ DEBUG_HTTP_FUNC (0); -+ -+ return 0; -+} - - static void --neon_handle_additional_headers (ne_request *req, -- void *userdata, -- const char *method, -- const char *requri) -+neon_header_catcher (void *userdata, const char *value) - { -- AddHeadersContext *adhctx = (AddHeadersContext *) userdata; -+ GList **headers = (GList **) userdata; -+ -+ *headers = g_list_prepend (*headers, g_strdup (value)); -+} -+ -+ -+static void -+neon_setup_headers (ne_request *req, void *userdata, ne_buffer *header) -+{ -+ GnomeVFSModuleCallbackAdditionalHeadersIn in_args; -+ GnomeVFSModuleCallbackAdditionalHeadersOut out_args; -+ GList *iter, **headers; -+ gboolean ret; -+ GnomeVFSURI *uri; -+ ne_session *session; -+ -+ DEBUG_HTTP_FUNC (1); - -- if (! invoke_callback_send_additional_headers (uri, &list)) -- return; -+ headers = g_new0 (GList *, 1); -+ -+ ne_set_request_private (req, "Headers", headers); -+ ne_add_response_header_catcher (req, neon_header_catcher, headers); -+ -+ session = ne_get_session (req); -+ uri = ne_get_session_private (session, "GnomeVFSURI"); -+ -+ memset (&in_args, 0, sizeof (in_args)); -+ memset (&out_args, 0, sizeof (out_args)); -+ -+ in_args.uri = uri; -+ -+ ret = gnome_vfs_module_callback_invoke (GNOME_VFS_MODULE_CALLBACK_HTTP_SEND_ADDITIONAL_HEADERS, -+ &in_args, sizeof (in_args), -+ &out_args, sizeof (out_args)); - -- GList *iter; -- for (iter = list; iter; iter = iter->next) { -- char *header = iter->data; -- char *colon = g_strrstr (header, ":"); -- AcHeaderContext acctx = g_new0 (AcHeaderContext, 1); -- -- if (colon != NULL) { -- colon = '\0'; -- ne_add_request_header (req, header, colon + 1); -- } -+ for (iter = out_args.headers; iter; iter = iter->next) { - -- g_free (header); -- iter->data = NULL; -+ if (ret) { -+ ne_buffer_zappend (header, iter->data); -+ DEBUG_HTTP_3 ("Adding header %s,", (char *) iter->data); -+ } -+ -+ g_free (iter->data); - } - -- g_list_free (list); -- -+ g_list_free (out_args.headers); -+ -+ DEBUG_HTTP_FUNC (0); - } --#endif - - /* ************************************************************************** */ - /* Http context */ -@@ -1488,6 +1535,9 @@ http_aquire_connection (HttpContext *con - session = neon_session_pool_lookup (context->uri); - - if (session != NULL) { -+ -+ ne_set_session_private (session, "GnomeVFSURI", context->uri); -+ - context->session = session; - return GNOME_VFS_OK; - } -@@ -1521,8 +1571,12 @@ http_aquire_connection (HttpContext *con - http_auth_info_free, basic_auth); - - ne_redirect_register (session); -- -- -+ -+ /* Headers stuff */ -+ ne_set_session_private (session, "GnomeVFSURI", context->uri); -+ ne_hook_pre_send (session, neon_setup_headers, NULL); -+ ne_hook_post_send (session, neon_return_headers, NULL); -+ - if (proxy_for_uri (top_uri, &proxy)) { - HttpAuthInfo *proxy_auth; - -@@ -1669,7 +1723,7 @@ http_follow_redirect (HttpContext *conte - } else { - - http_context_set_uri (context, new_uri); -- -+ ne_set_session_private (context->session, "GnomeVFSURI", context->uri); - result = GNOME_VFS_OK; - } - DEBUG_HTTP ("[Redirec] Redirect result: %s", -@@ -2146,6 +2200,7 @@ get_start: - if (res != NE_OK && res != NE_REDIRECT) { - handle->transfer_state = TRANSFER_ERROR; - handle->last_error = result; -+ ne_request_destroy (req); - return result; - } - -Index: modules/network-method.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/modules/network-method.c,v -retrieving revision 1.5 -retrieving revision 1.6 -diff -u -p -r1.5 -r1.6 ---- modules/network-method.c 24 Jun 2004 14:29:27 -0000 1.5 -+++ modules/network-method.c 7 Oct 2004 15:08:38 -0000 1.6 -@@ -44,6 +44,7 @@ - #define PATH_GCONF_GNOME_VFS_DNS_SD "/system/dns_sd" - #define PATH_GCONF_GNOME_VFS_DNS_SD_DISPLAY_LOCAL "/system/dns_sd/display_local" - #define PATH_GCONF_GNOME_VFS_DNS_SD_EXTRA_DOMAINS "/system/dns_sd/extra_domains" -+#define DEFAULT_WORKGROUP_NAME "X-GNOME-DEFAULT-WORKGROUP" - - typedef struct { - char *display_name; -@@ -1219,7 +1220,7 @@ notify_gconf_value_changed (GConfClient - - current_workgroup = gconf_client_get_string (client, PATH_GCONF_GNOME_VFS_SMB_WORKGROUP, NULL); - if (current_workgroup == NULL) { -- current_workgroup = g_strdup ("workgroup"); -+ current_workgroup = g_strdup (DEFAULT_WORKGROUP_NAME); - } - - G_UNLOCK (network); -@@ -1345,7 +1346,7 @@ vfs_module_init (const char *method_name - - current_workgroup = gconf_client_get_string (gconf_client, PATH_GCONF_GNOME_VFS_SMB_WORKGROUP, NULL); - if (current_workgroup == NULL) { -- current_workgroup = g_strdup ("workgroup"); -+ current_workgroup = g_strdup (DEFAULT_WORKGROUP_NAME); - } - - setting = gconf_client_get_string (gconf_client, PATH_GCONF_GNOME_VFS_DNS_SD_DISPLAY_LOCAL, NULL); -Index: modules/smb-method.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/modules/smb-method.c,v -retrieving revision 1.9 -retrieving revision 1.10 -diff -u -p -r1.9 -r1.10 ---- modules/smb-method.c 6 Sep 2004 09:47:37 -0000 1.9 -+++ modules/smb-method.c 7 Oct 2004 15:08:38 -0000 1.10 -@@ -94,6 +94,9 @@ static GHashTable *server_cache = NULL; - #define SERVER_CACHE_REAP_TIMEOUT (30*60) - static guint server_cache_reap_timeout = 0; - -+/* The magic "default workgroup" hostname */ -+#define DEFAULT_WORKGROUP_NAME "X-GNOME-DEFAULT-WORKGROUP" -+ - - /* 5 minutes before we re-read the workgroup cache again */ - #define WORKGROUP_CACHE_TIMEOUT (5*60) -@@ -549,7 +552,9 @@ smb_uri_type (GnomeVFSURI *uri) - strcmp (uri->text, "/") == 0) { - /* smb://foo/ */ - update_workgroup_cache (); -- if (g_hash_table_lookup (workgroups, toplevel->host_name)) { -+ if (!g_ascii_strcasecmp(toplevel->host_name, -+ DEFAULT_WORKGROUP_NAME) || -+ g_hash_table_lookup (workgroups, toplevel->host_name)) { - return SMB_URI_WORKGROUP; - } else { - return SMB_URI_SERVER; -@@ -559,7 +564,9 @@ smb_uri_type (GnomeVFSURI *uri) - if (first_slash == NULL) { - /* smb://foo/bar */ - update_workgroup_cache (); -- if (g_hash_table_lookup (workgroups, toplevel->host_name)) { -+ if (!g_ascii_strcasecmp(toplevel->host_name, -+ DEFAULT_WORKGROUP_NAME) || -+ g_hash_table_lookup (workgroups, toplevel->host_name)) { - return SMB_URI_SERVER_LINK; - } else { - return SMB_URI_SHARE; -@@ -1547,6 +1554,8 @@ do_open_directory (GnomeVFSMethod *metho - - { - DirectoryHandle *directory_handle; -+ GnomeVFSURI *new_uri = NULL; -+ const char *host_name; - char *path; - SmbUriType type; - SMBCFILE *dir; -@@ -1574,6 +1583,19 @@ do_open_directory (GnomeVFSMethod *metho - type == SMB_URI_SERVER_LINK) { - return GNOME_VFS_ERROR_NOT_A_DIRECTORY; - } -+ -+ /* if it is the magic default workgroup name, map it to the -+ * SMBCCTX's workgroup, which comes from the smb.conf file. */ -+ host_name = gnome_vfs_uri_get_host_name (uri); -+ if (type == SMB_URI_WORKGROUP && host_name != NULL && -+ !g_ascii_strcasecmp(host_name, DEFAULT_WORKGROUP_NAME)) { -+ new_uri = gnome_vfs_uri_dup (uri); -+ gnome_vfs_uri_set_host_name (new_uri, -+ smb_context->workgroup -+ ? smb_context->workgroup -+ : "WORKGROUP"); -+ uri = new_uri; -+ } - - path = gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_USER_NAME | GNOME_VFS_URI_HIDE_PASSWORD); - -@@ -1590,10 +1612,13 @@ do_open_directory (GnomeVFSMethod *metho - if (dir == NULL) { - UNLOCK_SMB(); - g_free (path); -+ if (new_uri) gnome_vfs_uri_unref (new_uri); - return gnome_vfs_result_from_errno (); - } - - UNLOCK_SMB(); -+ -+ if (new_uri) gnome_vfs_uri_unref (new_uri); - - /* Construct the handle */ - directory_handle = g_new0 (DirectoryHandle, 1); diff --git a/gnome-vfs-2.8.1-hal.patch b/gnome-vfs-2.8.1-hal.patch deleted file mode 100644 index caf5681..0000000 --- a/gnome-vfs-2.8.1-hal.patch +++ /dev/null @@ -1,2203 +0,0 @@ -? =0.2.98 -? gnome-vfs-new-hal-patch-and-eject-fixes.patch -? imported/Makefile -? imported/Makefile.in -? imported/neon/Makefile.in -? libgnomevfs/s-enum-types-c -? libgnomevfs/s-enum-types-h -? test/test-dns-sd -? test/test-mime-info-cache -Index: configure.in -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/configure.in,v -retrieving revision 1.342 -diff -u -p -r1.342 configure.in ---- configure.in 22 Sep 2004 08:38:38 -0000 1.342 -+++ configure.in 24 Sep 2004 22:50:32 -0000 -@@ -697,8 +697,8 @@ esac], - [ENABLE_HAL=no]) dnl Default value - - if test "x$ENABLE_HAL" = "xyes"; then -- PKG_CHECK_MODULES(HAL, hal >= 0.2.92, -- [ USE_HAL="hal >= 0.2.92, dbus-1 >= 0.22, dbus-glib-1 >= 0.22"; AC_DEFINE(USE_HAL, 1, [defined if using libhal])], -+ PKG_CHECK_MODULES(HAL, hal >= 0.2.98, -+ [ USE_HAL="hal >= 0.2.98, hal-storage >= 0.2.98, dbus-1 >= 0.22, dbus-glib-1 >= 0.22"; AC_DEFINE(USE_HAL, 1, [defined if using libhal])], - [ USE_HAL=""]) - else - USE_HAL="" -Index: libgnomevfs/GNOME_VFS_Daemon.idl -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/GNOME_VFS_Daemon.idl,v -retrieving revision 1.9 -diff -u -p -r1.9 GNOME_VFS_Daemon.idl ---- libgnomevfs/GNOME_VFS_Daemon.idl 15 Jul 2004 13:21:15 -0000 1.9 -+++ libgnomevfs/GNOME_VFS_Daemon.idl 24 Sep 2004 22:50:33 -0000 -@@ -63,6 +63,7 @@ module GNOME { - boolean is_user_visible; - boolean is_connected; - string hal_udi; -+ boolean should_eject; - }; - - typedef sequence DriveList; -Index: libgnomevfs/gnome-vfs-drive.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-drive.c,v -retrieving revision 1.8 -diff -u -p -r1.8 gnome-vfs-drive.c ---- libgnomevfs/gnome-vfs-drive.c 16 Aug 2004 08:44:06 -0000 1.8 -+++ libgnomevfs/gnome-vfs-drive.c 24 Sep 2004 22:50:33 -0000 -@@ -582,6 +582,8 @@ gnome_vfs_drive_to_corba (GnomeVFSDrive - - corba_drive->is_user_visible = drive->priv->is_user_visible; - corba_drive->is_connected = drive->priv->is_connected; -+ -+ corba_drive->should_eject = drive->priv->should_eject; - } - - GnomeVFSDrive * -@@ -617,5 +619,6 @@ _gnome_vfs_drive_from_corba (const GNOME - drive->priv->is_user_visible = corba_drive->is_user_visible; - drive->priv->is_connected = corba_drive->is_connected; - -+ drive->priv->should_eject = corba_drive->should_eject; - return drive; - } -Index: libgnomevfs/gnome-vfs-hal-mounts.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c,v -retrieving revision 1.7 -diff -u -p -r1.7 gnome-vfs-hal-mounts.c ---- libgnomevfs/gnome-vfs-hal-mounts.c 19 Aug 2004 07:34:01 -0000 1.7 -+++ libgnomevfs/gnome-vfs-hal-mounts.c 24 Sep 2004 22:50:33 -0000 -@@ -1,7 +1,7 @@ - /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ - /* gnome-vfs-hal-mounts.c - read and monitor volumes using freedesktop HAL - -- Copyright (C) 2004 David Zeuthen -+ Copyright (C) 2004 Red Hat, Inc - - The Gnome Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as -@@ -18,7 +18,7 @@ - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. - -- Author: David Zeuthen -+ Author: David Zeuthen - */ - - #include -@@ -39,6 +39,7 @@ - #include - - #include -+#include - #include - #include - -@@ -47,1322 +48,549 @@ - #include "gnome-vfs-volume-monitor-daemon.h" - #include "gnome-vfs-volume-monitor-private.h" - --/** Use HAL to retrieve information about drives and volumes. -- * -- * TODO/QUESTIONS/ISSUES -- * -- * - Fix HAL so hal_initialize() fails when we cannot connect to the HAL -- * daemon; When this works GNOME VFS falls back to mtab/fstab monitoring. -- * Which is nice. -- * -- * - When a recordable disc (CD-R, CD-RW, DVD-R, DVD+RW etc.) is closed -- * should we map down to the non-cdrecordable type? E.g. -- * -- * CD-R, CD-RW |-> CD-ROM -- * DVD-R, DVD-RW, DVD+R, DVD+RW, DVD-RAM |-> DVD-ROM -- * -- * Currently we don't do this. One reason for doing this is that consumers -- * might download e.g. a Linux distrobution and burn the ISO's, close the -- * disc and then it's a CD-ROM since they can't burn to the disc more -- * anyway? Maybe we should do this, but not for RW discs, e.g. only -- * -- * CD-R |-> CD-ROM -- * DVD-R, DVD+R |-> DVD-ROM -- * -- * when closed; this I think would make sense. Comments? -- * -- * - When libgphoto2 is completely halificated, get the GNOME VFS backend -- * to work and add functionality (in this file) to show a camera icon that -- * links to the appropriate GNOME VFS URI. (when the camera is not -- * usb-storage based of course) -- * -- * - Do the same for MP3 players when GNOME VFS backends for these emerge. -- * -- * NOTE -- * -- * - For this patch you need a recent version of GNOME VFS that doesn't -- * crash when a name contains a '/' character -- */ -- -- --/* If this is defined then only mounted volumes are shown which gives -- * a Mac OS X like experience. Otherwise unmounted volumes are shown -- * as a drive icon. Obviously, this requires an automounter like -- * gnome-volume-manager. -- */ --/*#define HAL_ONLY_SHOW_MOUNTED_VOLUMES*/ -- --/* If this is defined use the standard icons available. Otherwise new -- * a new, more fine grained icon set is used. See below.. -- * -- */ --/*#define HAL_USE_STOCK_ICONS*/ -- -- --#ifdef HAL_USE_STOCK_ICONS -- --#define HAL_ICON_DRIVE_REMOVABLE "gnome-dev-removable" --#define HAL_ICON_DRIVE_REMOVABLE_USB "gnome-dev-removable" --#define HAL_ICON_DRIVE_REMOVABLE_IEEE1394 "gnome-dev-removable" --#define HAL_ICON_DISC_CDROM "gnome-dev-cdrom" --#define HAL_ICON_DISC_CDR "gnome-dev-cdrom" --#define HAL_ICON_DISC_CDRW "gnome-dev-cdrom" --#define HAL_ICON_DISC_DVDROM "gnome-dev-cdrom" --#define HAL_ICON_DISC_DVDRAM "gnome-dev-cdrom" --#define HAL_ICON_DISC_DVDR "gnome-dev-cdrom" --#define HAL_ICON_DISC_DVDRW "gnome-dev-cdrom" --#define HAL_ICON_DISC_DVDRW_PLUS "gnome-dev-cdrom" --#define HAL_ICON_DISC_DVDR_PLUS "gnome-dev-cdrom" --#define HAL_ICON_MEDIA_COMPACT_FLASH "gnome-dev-harddisk" --#define HAL_ICON_MEDIA_MEMORY_STICK "gnome-dev-harddisk" --#define HAL_ICON_MEDIA_SMART_MEDIA "gnome-dev-harddisk" --#define HAL_ICON_MEDIA_SD_MMC "gnome-dev-harddisk" --#define HAL_ICON_MEDIA_FLOPPY "gnome-dev-floppy" --#define HAL_ICON_MEDIA_HARDDISK "gnome-dev-harddisk" --#define HAL_ICON_MEDIA_HARDDISK_USB "gnome-dev-harddisk" --#define HAL_ICON_MEDIA_HARDDISK_IEEE1394 "gnome-dev-harddisk" --#define HAL_ICON_PORTABLE_AUDIO_PLAYER "gnome-dev-harddisk" --#define HAL_ICON_CAMERA "gnome-dev-harddisk" -- --#else -- --#define HAL_ICON_DRIVE_REMOVABLE "gnome-dev-removable" --#define HAL_ICON_DRIVE_REMOVABLE_USB "gnome-dev-removable-usb" --#define HAL_ICON_DRIVE_REMOVABLE_IEEE1394 "gnome-dev-removable-ieee1394" --#define HAL_ICON_DISC_CDROM "gnome-dev-cdrom" --#define HAL_ICON_DISC_CDR "gnome-dev-disc-cdr" --#define HAL_ICON_DISC_CDRW "gnome-dev-disc-cdrw" --#define HAL_ICON_DISC_DVDROM "gnome-dev-disc-dvdrom" --#define HAL_ICON_DISC_DVDRAM "gnome-dev-disc-dvdram" --#define HAL_ICON_DISC_DVDR "gnome-dev-disc-dvdr" --#define HAL_ICON_DISC_DVDRW "gnome-dev-disc-dvdrw" --#define HAL_ICON_DISC_DVDRW_PLUS "gnome-dev-disc-dvdrw-plus" --#define HAL_ICON_DISC_DVDR_PLUS "gnome-dev-disc-dvdr-plus" --#define HAL_ICON_MEDIA_COMPACT_FLASH "gnome-dev-media-cf" --#define HAL_ICON_MEDIA_MEMORY_STICK "gnome-dev-media-ms" --#define HAL_ICON_MEDIA_SMART_MEDIA "gnome-dev-media-sm" --#define HAL_ICON_MEDIA_SD_MMC "gnome-dev-media-sdmmc" --#define HAL_ICON_MEDIA_FLOPPY "gnome-dev-floppy" --#define HAL_ICON_MEDIA_HARDDISK "gnome-dev-harddisk" --#define HAL_ICON_MEDIA_HARDDISK_USB "gnome-dev-harddisk-usb" --#define HAL_ICON_MEDIA_HARDDISK_IEEE1394 "gnome-dev-harddisk-ieee1394" --#define HAL_ICON_PORTABLE_AUDIO_PLAYER "gnome-dev-portable-audio-player" --#define HAL_ICON_CAMERA "gnome-dev-camera" -- --#endif /* HAL_USE_STOCK_ICONS */ -- --typedef struct { -- char *udi; -- -- int device_major; -- int device_minor; -- char *device_file; -- -- char *bus; /* ide, scsi, usb, ieee1394, ... */ -- char *vendor; /* may be NULL, is never "" */ -- char *model; /* may be NULL, is never "" */ -- gboolean is_hotpluggable; -- gboolean is_removable; -- gboolean no_partitions; -- char *type; /* disk, cdrom, floppy, compact_flash, -- * memory_stick, smart_media, sd_mmc, ... */ -- -- char *physical_device; /* UDI of physical device, e.g. the -- * IDE, USB, IEEE1394 device */ -- --} GnomeVFSHalDrive; -- - typedef struct { -- char *udi; -- -- int device_major; -- int device_minor; -- char *device_file; -- char *volume_label; /* may be NULL, is never "" */ -- gboolean is_mounted; -- char *mount_point; /* NULL iff !is_mounted */ -- char *fstype; /* NULL iff !is_mounted or unknown */ -- -- gboolean is_disc; -- char *disc_type; /* NULL iff !is_disc */ -- gboolean disc_has_audio; -- gboolean disc_has_data; -- gboolean disc_is_appendable; -- gboolean disc_is_blank; -- gboolean disc_is_rewritable; --} GnomeVFSHalVolume; -- --static void --_hal_free_drive (GnomeVFSHalDrive *drive) --{ -- if (drive == NULL ) -- return; -- -- free (drive->udi); -- hal_free_string (drive->device_file); -- hal_free_string (drive->bus); -- hal_free_string (drive->vendor); -- hal_free_string (drive->model); -- hal_free_string (drive->type); --} -- -+ GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -+ HalStoragePolicy *hal_storage_policy; -+} GnomeVFSHalUserData; - - static void --_hal_free_vol (GnomeVFSHalVolume *vol) -+_hal_mainloop_integration (LibHalContext *ctx, -+ DBusConnection * dbus_connection) - { -- if (vol == NULL ) -- return; -- -- free (vol->udi); -- hal_free_string (vol->device_file); -- hal_free_string (vol->volume_label); -- hal_free_string (vol->fstype); -- hal_free_string (vol->mount_point); -- hal_free_string (vol->disc_type); -+ dbus_connection_setup_with_g_main (dbus_connection, NULL); - } - -- --/* Given a UDI for a HAL device of capability 'storage', this -- * function retrieves all the relevant properties into a convenient -- * structure. Returns NULL if UDI is invalid or device is not of -- * capability 'storage'. -- * -- * Free with _hal_free_drive(). -- */ --static GnomeVFSHalDrive * --_hal_get_drive (const char *udi, LibHalContext *hal_ctx) -+static void -+_hal_device_added (LibHalContext *hal_ctx, -+ const char *udi) - { -- GnomeVFSHalDrive *drive; -- -- drive = g_new0 (GnomeVFSHalDrive, 1); -- if (drive == NULL) -- goto error; -- -- drive->udi = strdup (udi); -- if (drive->udi == NULL) -- goto error; -- -- drive->device_file = hal_device_get_property_string ( -- hal_ctx, udi, "block.device"); -- if (drive->device_file == NULL) -- goto error; -- -- drive->bus = hal_device_get_property_string ( -- hal_ctx, udi, "storage.bus"); -- if (drive->bus == NULL) -- goto error; -- -- drive->vendor = hal_device_get_property_string ( -- hal_ctx, udi, "storage.vendor"); -- if (drive->vendor == NULL) -- goto error; -- -- drive->model = hal_device_get_property_string ( -- hal_ctx, udi, "storage.model"); -- if (drive->model == NULL) -- goto error; -- -- drive->type = hal_device_get_property_string ( -- hal_ctx, udi, "storage.drive_type"); -- if (drive->type == NULL) -- goto error; -+ GnomeVFSHalUserData *hal_userdata; -+ GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; - -- drive->is_hotpluggable = hal_device_get_property_bool ( -- hal_ctx, udi, "storage.hotpluggable"); -- -- drive->is_removable = hal_device_get_property_bool ( -- hal_ctx, udi, "storage.removable"); -+ hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ volume_monitor_daemon = hal_userdata->volume_monitor_daemon; - -- drive->no_partitions = hal_device_get_property_bool ( -- hal_ctx, udi, "block.no_partitions"); -+ /* Handle optical discs without data since these are not handled -+ * by GNOME VFS -+ */ -+ if (hal_device_get_property_bool (hal_ctx, udi, "volume.is_disc")) { -+ const char *storage_udi; - -- drive->physical_device = hal_device_get_property_string ( -- hal_ctx, udi, "storage.physical_device"); -- if (drive->physical_device == NULL) -- goto error; -- -- return drive; --error: -- _hal_free_drive (drive); -- return NULL; -+ storage_udi = hal_device_get_property_string (hal_ctx, udi, "block.storage_device"); -+ if (storage_udi != NULL) { -+ GnomeVFSDrive *drive; -+ -+ drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi ( -+ GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), storage_udi); -+ if (drive != NULL) { -+ /* this function also handles optical discs without data */ -+ _gnome_vfs_hal_mounts_modify_drive (volume_monitor_daemon, drive); -+ } -+ } -+ } - } - --/* Given a UDI for a HAL device of capability 'volume', this function -- * retrieves all the relevant properties into a convenient structure. -- * Returns NULL if UDI is invalid or device is not of capability -- * 'volume'. -- * -- * Free with _hal_free_vol(). -- */ --static GnomeVFSHalVolume * --_hal_get_vol (const char *udi, LibHalContext *hal_ctx) -+static void -+_hal_device_removed (LibHalContext *hal_ctx, const char *udi) - { -- GnomeVFSHalVolume *vol; -- -- vol = g_new0 (GnomeVFSHalVolume, 1); -- if (vol == NULL) -- goto error; -- -- /* only care about capability volume */ -- if (!hal_device_query_capability ( -- hal_ctx, -- udi, "volume")) -- goto error; -- -- vol->udi = strdup (udi); -- if (vol->udi == NULL) -- goto error; -- -- vol->device_major = hal_device_get_property_int ( -- hal_ctx, udi, "block.major"); -- -- vol->device_minor = hal_device_get_property_int ( -- hal_ctx, udi, "block.minor"); -- -- vol->device_file = hal_device_get_property_string ( -- hal_ctx, -- udi, "block.device"); -- if (vol->device_file == NULL) -- goto error; -- -- if (hal_device_property_exists ( -- hal_ctx, -- udi, "volume.label")) { -- vol->volume_label = hal_device_get_property_string ( -- hal_ctx, -- udi, "volume.label"); -- if (strlen (vol->volume_label) == 0) { -- hal_free_string (vol->volume_label); -- vol->volume_label = NULL; -- } -- } -+ GnomeVFSDrive *drive; -+ GnomeVFSVolume *volume; -+ GnomeVFSHalUserData *hal_userdata; -+ GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -+ -+ hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ volume_monitor_daemon = hal_userdata->volume_monitor_daemon; - -+ drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi ( -+ GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), udi); - -- vol->is_mounted = hal_device_get_property_bool ( -- hal_ctx, -- udi, "volume.is_mounted"); -- -- if (vol->is_mounted) { -- vol->mount_point = hal_device_get_property_string ( -- hal_ctx, -- udi, "volume.mount_point"); -- if (vol->mount_point == NULL || strlen (vol->mount_point) == 0) -- goto error; -- -- } -+ volume = _gnome_vfs_volume_monitor_find_volume_by_hal_udi ( -+ GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), udi); - -- vol->fstype = hal_device_get_property_string ( -- hal_ctx, -- udi, "volume.fstype"); -- if (vol->fstype == NULL) -- goto error; -- if (strlen(vol->fstype) == 0) { -- hal_free_string (vol->fstype); -- vol->fstype = NULL; -+ /* Just remove the drive and or volume here; will also be done in -+ * update_mtab_volumes and update_fstab_drives in the source file -+ * gnome-vfs-volume-monitor-daemon.c but that wont matter much. -+ * -+ * We need to do this to handle optical discs without data since these -+ * are not handled by GNOME VFS -+ */ -+ if (drive != NULL) { -+ _gnome_vfs_volume_monitor_disconnected (GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), drive); - } - -- /* optical disc properties */ -- if (hal_device_get_property_bool (hal_ctx, -- udi, "volume.is_disc")) { -- vol->is_disc = TRUE; -- -- vol->disc_type = hal_device_get_property_string ( -- hal_ctx, -- udi, "volume.disc.type"); -- if (vol->disc_type == NULL || strlen (vol->disc_type) == 0) -- goto error; -- -- vol->disc_has_audio = hal_device_get_property_bool ( -- hal_ctx, -- udi, "volume.disc.has_audio"); -- vol->disc_has_data = hal_device_get_property_bool ( -- hal_ctx, -- udi, "volume.disc.has_data"); -- vol->disc_is_appendable = hal_device_get_property_bool ( -- hal_ctx, -- udi, "volume.disc.is_appendable"); -- vol->disc_is_blank = hal_device_get_property_bool ( -- hal_ctx, -- udi, "volume.disc.is_blank"); -- vol->disc_is_rewritable = hal_device_get_property_bool ( -- hal_ctx, -- udi, "volume.disc.is_rewritable"); -+ if (volume != NULL) { -+ _gnome_vfs_volume_monitor_unmounted (GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), volume); - } -- -- -- -- return vol; -- --error: -- _hal_free_vol (vol); -- return NULL; - } - --/** Get the GnomeVFSHalDrive from a GnomeVFSHalVolume. Returns NULL on error. -- * -- * Free with _hal_free_drive(). -- */ --static GnomeVFSHalDrive * --_hal_get_drive_from_vol (GnomeVFSHalVolume *vol, LibHalContext *hal_ctx) -+static void -+_hal_device_new_capability (LibHalContext *hal_ctx, -+ const char *udi, -+ const char *capability) - { -- const char *storage_udi; -- -- storage_udi = hal_device_get_property_string ( -- hal_ctx, vol->udi, "block.storage_device"); -- if (storage_udi == NULL) -- goto error; -- -- return _hal_get_drive (storage_udi, hal_ctx); --error: -- return NULL; --} -- -- -- --/***********************************************************************/ -+ GnomeVFSHalUserData *hal_userdata; -+ GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -+ -+ hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ volume_monitor_daemon = hal_userdata->volume_monitor_daemon; - --/** If you don't have a recent GNOME VFS you need to uncomment the code -- * below -- * -- * OLD ERROR: Fixup the name given to GnomeVFS, it may not contain -- * '/'-characters. Substitute these with '-'. -- */ --static void --fixup_name (char *name) --{ -- ; -- /* -- int i; -- -- for (i=0; name[i]!='\0'; i++) { -- if (name[i] == '/') -- name[i] = '-'; -- } -- */ -+ /* do nothing */ - } - --/***********************************************************************/ -- --static char *_hal_get_vol_name (GnomeVFSHalVolume *vol, -- GnomeVFSHalDrive *drive, -- LibHalContext *hal_ctx); --static char *_hal_get_vol_icon (GnomeVFSHalVolume *vol, -- GnomeVFSHalDrive *drive, -- LibHalContext *hal_ctx); --static int _hal_get_vol_type (GnomeVFSHalVolume *vol, -- GnomeVFSHalDrive *drive, -- LibHalContext *hal_ctx); -- -- -- --/* vol may be NULL */ --static char * --_hal_get_drive_name (GnomeVFSHalVolume *vol, GnomeVFSHalDrive *drive, -- LibHalContext *hal_ctx) -+static void -+_hal_device_lost_capability (LibHalContext *hal_ctx, -+ const char *udi, -+ const char *capability) - { -- char *name; -- -- --#ifdef HAL_ONLY_SHOW_MOUNTED_VOLUMES -- /* this is safe, as drives and volumes are 1:1 */ -- if (vol != NULL) -- return _hal_get_vol_name (vol, drive, hal_ctx); --#else -- /* Bork, storage.removable is a bit broken on HAL (I fear only -- * .fdi files will fix it), so it's not sane to rely on this.. -- * Which is bad, because without computer:/// looks ugly, e.g. -- * " : " even for storage that is -- * not removable. Bork. -- */ -- -- /* -- if (vol != NULL && !drive->is_removable) -- return _hal_get_vol_name (vol, drive, hal_ctx); -- */ --#endif -- -- if (strcmp (drive->type, "cdrom") == 0) { -- gboolean cdr; -- gboolean cdrw; -- gboolean dvd; -- gboolean dvdplusr; -- gboolean dvdplusrw; -- gboolean dvdr; -- gboolean dvdram; -- char *first; -- char *second; -- -- /* use the capabilities of the optical device */ -- -- cdr = hal_device_get_property_bool ( -- hal_ctx, drive->udi, "storage.cdrom.cdr"); -- cdrw = hal_device_get_property_bool ( -- hal_ctx, drive->udi, "storage.cdrom.cdrw"); -- dvd = hal_device_get_property_bool ( -- hal_ctx, drive->udi, "storage.cdrom.dvd"); -- dvdplusr = hal_device_get_property_bool ( -- hal_ctx, drive->udi, "storage.cdrom.dvdplusr"); -- dvdplusrw = hal_device_get_property_bool ( -- hal_ctx, drive->udi, "storage.cdrom.dvdplusrw"); -- dvdr = hal_device_get_property_bool ( -- hal_ctx, drive->udi, "storage.cdrom.dvdr"); -- dvdram = hal_device_get_property_bool ( -- hal_ctx, drive->udi, "storage.cdrom.dvdram"); -- -- first = "CD-ROM"; -- if( cdr ) -- first = "CD-R"; -- if( cdrw ) -- first = "CD-RW"; -- -- /* Hmm, '/' is not an allowed character, so use '\' instead -- * -- * TODO: Fix this -- */ -- second = ""; -- if( dvd ) -- second = "/DVD-ROM"; -- if( dvdplusr ) -- second = "/DVD+R"; -- if( dvdplusrw ) -- second = "/DVD+RW"; -- if( dvdr ) -- second = "/DVD-R"; -- if( dvdram ) -- second = "/DVD-RAM"; -- if( dvdplusr && dvdr ) -- second = "/DVD±R"; -- if( dvdplusr && dvdplusrw && dvdr ) -- second = "/DVD±RW"; -- -- name = g_strdup_printf ("%s%s", first, second); -- } else if (strcmp (drive->type, "floppy") == 0) { -- /* TODO: Check for LS120 or Zip drive etc. */ -- name = g_strdup ("Floppy Drive"); -- } else { -- name = g_strdup (drive->model); -- } -- -- fixup_name (name); -+ GnomeVFSHalUserData *hal_userdata; -+ GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -+ -+ hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ volume_monitor_daemon = hal_userdata->volume_monitor_daemon; - -- return name; -+ /* do nothing */ - } - --/* vol may be NULL */ --static char * --_hal_get_drive_icon (GnomeVFSHalVolume *vol, GnomeVFSHalDrive *drive, -- LibHalContext *hal_ctx) -+static void -+_hal_device_property_modified (LibHalContext *hal_ctx, -+ const char *udi, -+ const char *key, -+ dbus_bool_t is_removed, -+ dbus_bool_t is_added) - { -- char *name; -- -- if (strcmp (drive->bus, "usb") == 0) { -- name = g_strdup (HAL_ICON_DRIVE_REMOVABLE_USB); -- } else if (strcmp (drive->bus, "ieee1394") == 0) { -- name = g_strdup (HAL_ICON_DRIVE_REMOVABLE_IEEE1394); -- } else { -- name = g_strdup (HAL_ICON_DRIVE_REMOVABLE); -- } -+ GnomeVFSHalUserData *hal_userdata; -+ GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -+ -+ hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ volume_monitor_daemon = hal_userdata->volume_monitor_daemon; - -- return name; -+ /* do nothing */ - } - --/* vol may be NULL */ --static int --_hal_get_drive_type (GnomeVFSHalVolume *vol, GnomeVFSHalDrive *drive, -- LibHalContext *hal_ctx) -+static void -+_hal_device_condition (LibHalContext *hal_ctx, -+ const char *udi, -+ const char *condition_name, -+ DBusMessage *message) - { -- int type; -- -- type = GNOME_VFS_DEVICE_TYPE_HARDDRIVE; -- -- if (strcmp (drive->type, "cdrom") == 0) -- type = GNOME_VFS_DEVICE_TYPE_CDROM; -- if (strcmp (drive->type, "floppy") == 0) -- type = GNOME_VFS_DEVICE_TYPE_FLOPPY; -- else if (strcmp (drive->type, "compact_flash") == 0 || -- strcmp (drive->type, "memory_stick") == 0 || -- strcmp (drive->type, "smart_media") == 0 || -- strcmp (drive->type, "sd_mmc") == 0) -- type = GNOME_VFS_DEVICE_TYPE_MEMORY_STICK; -+ GnomeVFSHalUserData *hal_userdata; -+ GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -+ -+ hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ volume_monitor_daemon = hal_userdata->volume_monitor_daemon; - -- return type; -+ /* do nothing */ - } - -+static LibHalFunctions -+hal_functions = { _hal_mainloop_integration, -+ _hal_device_added, -+ _hal_device_removed, -+ _hal_device_new_capability, -+ _hal_device_lost_capability, -+ _hal_device_property_modified, -+ _hal_device_condition }; - -+static HalStoragePolicyIconPair icon_mapping[] = { -+ {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IDE, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_SCSI, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_USB, "gnome-dev-removable-usb"}, -+ {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IEEE1394, "gnome-dev-removable-1394"}, -+ {HAL_STORAGE_ICON_DRIVE_DISK, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_DISK_IDE, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_DISK_SCSI, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_DISK_USB, "gnome-dev-removable-usb"}, -+ {HAL_STORAGE_ICON_DRIVE_DISK_IEEE1394, "gnome-dev-removable-1394"}, -+ {HAL_STORAGE_ICON_DRIVE_CDROM, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_CDROM_IDE, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_CDROM_SCSI, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_CDROM_USB, "gnome-dev-removable-usb"}, -+ {HAL_STORAGE_ICON_DRIVE_CDROM_IEEE1394, "gnome-dev-removable-1394"}, -+ {HAL_STORAGE_ICON_DRIVE_FLOPPY, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_FLOPPY_IDE, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_FLOPPY_SCSI, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_FLOPPY_USB, "gnome-dev-removable-usb"}, -+ {HAL_STORAGE_ICON_DRIVE_FLOPPY_IEEE1394, "gnome-dev-removable-1394"}, -+ {HAL_STORAGE_ICON_DRIVE_TAPE, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_COMPACT_FLASH, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_MEMORY_STICK, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_SMART_MEDIA, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_SD_MMC, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_CAMERA, "gnome-dev-removable"}, -+ {HAL_STORAGE_ICON_DRIVE_PORTABLE_AUDIO_PLAYER, "gnome-dev-removable"}, -+ -+ {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK, "gnome-dev-harddisk"}, -+ {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IDE, "gnome-dev-harddisk"}, -+ {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_SCSI, "gnome-dev-harddisk"}, -+ {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_USB, "gnome-dev-harddisk-usb"}, -+ {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IEEE1394, "gnome-dev-harddisk-1394"}, -+ {HAL_STORAGE_ICON_VOLUME_DISK, "gnome-dev-harddisk"}, -+ {HAL_STORAGE_ICON_VOLUME_DISK_IDE, "gnome-dev-harddisk"}, -+ {HAL_STORAGE_ICON_VOLUME_DISK_SCSI, "gnome-dev-harddisk"}, -+ {HAL_STORAGE_ICON_VOLUME_DISK_USB, "gnome-dev-harddisk-usb"}, -+ {HAL_STORAGE_ICON_VOLUME_DISK_IEEE1394, "gnome-dev-harddisk-1394"}, -+ {HAL_STORAGE_ICON_VOLUME_CDROM, "gnome-dev-cdrom"}, -+ {HAL_STORAGE_ICON_VOLUME_CDROM_IDE, "gnome-dev-cdrom"}, -+ {HAL_STORAGE_ICON_VOLUME_CDROM_SCSI, "gnome-dev-cdrom"}, -+ {HAL_STORAGE_ICON_VOLUME_CDROM_USB, "gnome-dev-cdrom"}, -+ {HAL_STORAGE_ICON_VOLUME_CDROM_IEEE1394, "gnome-dev-cdrom"}, -+ {HAL_STORAGE_ICON_VOLUME_FLOPPY, "gnome-dev-floppy"}, -+ {HAL_STORAGE_ICON_VOLUME_FLOPPY_IDE, "gnome-dev-floppy"}, -+ {HAL_STORAGE_ICON_VOLUME_FLOPPY_SCSI, "gnome-dev-floppy"}, -+ {HAL_STORAGE_ICON_VOLUME_FLOPPY_USB, "gnome-dev-floppy"}, -+ {HAL_STORAGE_ICON_VOLUME_FLOPPY_IEEE1394, "gnome-dev-floppy"}, -+ {HAL_STORAGE_ICON_VOLUME_TAPE, "gnome-dev-harddisk"}, -+ {HAL_STORAGE_ICON_VOLUME_COMPACT_FLASH, "gnome-dev-media-cf"}, -+ {HAL_STORAGE_ICON_VOLUME_MEMORY_STICK, "gnome-dev-media-ms"}, -+ {HAL_STORAGE_ICON_VOLUME_SMART_MEDIA, "gnome-dev-media-sm"}, -+ {HAL_STORAGE_ICON_VOLUME_SD_MMC, "gnome-dev-media-sdmmc"}, -+ {HAL_STORAGE_ICON_VOLUME_CAMERA, "camera"}, -+ {HAL_STORAGE_ICON_VOLUME_PORTABLE_AUDIO_PLAYER, "gnome-dev-ipod"}, -+ -+ {HAL_STORAGE_ICON_DISC_CDROM, "gnome-dev-cdrom"}, -+ {HAL_STORAGE_ICON_DISC_CDR, "gnome-dev-cdrom"}, -+ {HAL_STORAGE_ICON_DISC_CDRW, "gnome-dev-cdrom"}, -+ {HAL_STORAGE_ICON_DISC_DVDROM, "gnome-dev-dvd"}, -+ {HAL_STORAGE_ICON_DISC_DVDRAM, "gnome-dev-dvd"}, -+ {HAL_STORAGE_ICON_DISC_DVDR, "gnome-dev-dvd"}, -+ {HAL_STORAGE_ICON_DISC_DVDRW, "gnome-dev-dvd"}, -+ {HAL_STORAGE_ICON_DISC_DVDPLUSR, "gnome-dev-dvd"}, -+ {HAL_STORAGE_ICON_DISC_DVDPLUSRW, "gnome-dev-dvd"}, -+ -+/* -+ {HAL_STORAGE_ICON_DISC_CDROM, "gnome-dev-disc-cdrom"}, -+ {HAL_STORAGE_ICON_DISC_CDR, "gnome-dev-disc-cdr"}, -+ {HAL_STORAGE_ICON_DISC_CDRW, "gnome-dev-disc-cdrw"}, -+ {HAL_STORAGE_ICON_DISC_DVDROM, "gnome-dev-disc-dvdrom"}, -+ {HAL_STORAGE_ICON_DISC_DVDRAM, "gnome-dev-disc-dvdram"}, -+ {HAL_STORAGE_ICON_DISC_DVDR, "gnome-dev-disc-dvdr"}, -+ {HAL_STORAGE_ICON_DISC_DVDRW, "gnome-dev-disc-dvdrw"}, -+ {HAL_STORAGE_ICON_DISC_DVDPLUSR, "gnome-dev-disc-dvdr-plus"}, -+ {HAL_STORAGE_ICON_DISC_DVDPLUSRW, "gnome-dev-disc-dvdrw-plus"}, -+*/ - --/***********************************************************************/ -- --static char * --_hal_get_vol_name (GnomeVFSHalVolume *vol, GnomeVFSHalDrive *drive, -- LibHalContext *hal_ctx) --{ -- char *name; -- -- name = NULL; -- if (vol->volume_label != NULL ) { -- -- /* Using the label is the best thing */ -- name = g_strdup (vol->volume_label); -- -- } else if (strcmp (drive->type, "cdrom") == 0) { -- -- /* If it's a optical disc, use the disc type */ -- if (strcmp (vol->disc_type, "cd_rom") == 0) { -- name = g_strdup (_("CD-ROM Disc")); -- } else if (strcmp (vol->disc_type, "cd_r") == 0) { -- if (vol->disc_is_blank) -- name = g_strdup (_("Blank CD-R Disc")); -- else -- name = g_strdup (_("CD-R Disc")); -- } else if (strcmp (vol->disc_type, "cd_rw") == 0) { -- if (vol->disc_is_blank) -- name = g_strdup (_("Blank CD-RW Disc")); -- else -- name = g_strdup (_("CD-RW Disc")); -- } else if (strcmp (vol->disc_type, "dvd_rom") == 0) { -- name = g_strdup (_("DVD-ROM Disc")); -- } else if (strcmp (vol->disc_type, "dvd_r") == 0) { -- if (vol->disc_is_blank) -- name = g_strdup (_("Blank DVD-R Disc")); -- else -- name = g_strdup (_("DVD-R Disc")); -- } else if (strcmp (vol->disc_type, "dvd_ram") == 0) { -- if (vol->disc_is_blank) -- name = g_strdup (_("Blank DVD-RAM Disc")); -- else -- name = g_strdup (_("DVD-RAM Disc")); -- } else if ((strcmp (vol->disc_type, "dvd_rw_restricted_overwrite") == 0) || (strcmp (vol->disc_type, "dvd_rw") == 0)) { -- if (vol->disc_is_blank) -- name = g_strdup (_("Blank DVD-RW Disc")); -- else -- name = g_strdup (_("DVD-RW Disc")); -- } else if (strcmp (vol->disc_type, "dvd_plus_rw") == 0) { -- if (vol->disc_is_blank) -- name = g_strdup (_("Blank DVD+RW Disc")); -- else -- name = g_strdup (_("DVD+RW Disc")); -- } else if (strcmp (vol->disc_type, "dvdplusr") == 0) { -- if (vol->disc_is_blank) -- name = g_strdup (_("Blank DVD+R Disc")); -- else -- name = g_strdup (_("DVD+R Disc")); -- } else { -- name = g_strdup (_("Optical Disc")); -- } -- -- /* Special case for pure audio disc */ -- if (vol->disc_has_audio && !vol->disc_has_data) { -- g_free (name); -- name = g_strdup (_("Audio Disc")); -- } -- -- } else if (strcmp (drive->type, "compact_flash") == 0) { -- name = g_strdup (_("Compact Flash Media")); -- } else if (strcmp (drive->type, "memory_stick") == 0) { -- name = g_strdup (_("Memory Stick Media")); -- } else if (strcmp (drive->type, "smart_media") == 0) { -- name = g_strdup (_("Smart Media Media")); -- } else if (strcmp (drive->type, "sd_mmc") == 0) { -- name = g_strdup (_("SD/MMC Media")); -- } else if (strcmp (drive->type, "floppy") == 0) { -- name = g_strdup (_("Floppy Disk")); -- } else if (strcmp (drive->type, "disk") == 0) { -- -- /* Look at the filesystem type, if applicable */ -- if (vol->fstype != NULL) { -- -- if (strcmp (vol->fstype, "hfs") == 0) { -- name = g_strdup (_("Mac OS disk")); -- } else if (strcmp (vol->fstype, "hfsplus") == 0) { -- name = g_strdup (_("Mac OS X disk")); -- } else if (strcmp (vol->fstype, "vfat") == 0 || -- strcmp (vol->fstype, "fat") == 0 || -- strcmp (vol->fstype, "msdos") == 0 || -- strcmp (vol->fstype, "msdosfs") == 0 ) { -- /* Many cameras and mp3 players use -- * FAT and we don't want the volume -- * icon to say "DOS Disk"; we'd rather -- * want the name of the device as fallback; -- * see below.. -- */ -- ; -- /*name = g_strdup (_("DOS Disk"));*/ -- } else if (strcmp (vol->fstype, "ntfs") == 0) { -- name = g_strdup (_("Windows Disk")); -- } else if (strcmp (vol->fstype, "ext2") == 0 || -- strcmp (vol->fstype, "ext3") == 0 || -- strcmp (vol->fstype, "jfs") == 0 || -- strcmp (vol->fstype, "xfs") == 0 || -- strcmp (vol->fstype, "reiser") == 0) { -- name = g_strdup (_("Linux Disk")); -- } -- } -- } -- -- /* fallback; use the same name as the drive */ -- if (name == NULL) -- name = _hal_get_drive_name (NULL, drive, hal_ctx); -- -- fixup_name (name); -+ {0x00, NULL} -+}; - -- return name; --} - --static char * --_hal_get_vol_icon (GnomeVFSHalVolume *vol, GnomeVFSHalDrive *drive, -- LibHalContext *hal_ctx) -+gboolean -+_gnome_vfs_hal_mounts_init (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) - { -- char *icon; -- char *category; -- -+ GnomeVFSHalUserData *hal_userdata; -+ HalStoragePolicy *hal_storage_policy; - -- category = hal_device_get_property_string (hal_ctx, -- drive->physical_device, -- "info.category"); -- if (category != NULL) { -- if (strcmp (category, "portable_audio_player") == 0) { -- icon = g_strdup (HAL_ICON_PORTABLE_AUDIO_PLAYER); -- return icon; -- } else if (strcmp (category, "camera") == 0) { -- icon = g_strdup (HAL_ICON_CAMERA); -- return icon; -- } -- } -- -- -- if (strcmp (drive->type, "cdrom") == 0) { -- -- /* If it's a optical disc, use the disc type */ -- if (strcmp (vol->disc_type, "cd_rom") == 0) { -- icon = g_strdup (HAL_ICON_DISC_CDROM); -- } else if (strcmp (vol->disc_type, "cd_r") == 0) { -- icon = g_strdup (HAL_ICON_DISC_CDR); -- } else if (strcmp (vol->disc_type, "cd_rw") == 0) { -- icon = g_strdup (HAL_ICON_DISC_CDRW); -- } else if (strcmp (vol->disc_type, "dvd_rom") == 0) { -- icon = g_strdup (HAL_ICON_DISC_DVDROM); -- } else if (strcmp (vol->disc_type, "dvd_r") == 0) { -- icon = g_strdup (HAL_ICON_DISC_DVDR); -- } else if (strcmp (vol->disc_type, "dvd_ram") == 0) { -- icon = g_strdup (HAL_ICON_DISC_DVDRAM); -- } else if ((strcmp (vol->disc_type, "dvd_rw_restricted_overwrite") == 0) || (strcmp (vol->disc_type, "dvd_rw") == 0)) { -- icon = g_strdup (HAL_ICON_DISC_DVDRW); -- } else if (strcmp (vol->disc_type, "dvd_plus_rw") == 0) { -- icon = g_strdup (HAL_ICON_DISC_DVDRW_PLUS); -- } else if (strcmp (vol->disc_type, "dvdplusr") == 0) { -- icon = g_strdup (HAL_ICON_DISC_DVDR_PLUS); -- } else { -- icon = g_strdup (HAL_ICON_DISC_CDROM); -- } -- -- } else if (strcmp (drive->type, "floppy") == 0) { -- icon = g_strdup (HAL_ICON_MEDIA_FLOPPY); -- } else if (strcmp (drive->type, "compact_flash") == 0) { -- icon = g_strdup (HAL_ICON_MEDIA_COMPACT_FLASH); -- } else if (strcmp (drive->type, "memory_stick") == 0) { -- icon = g_strdup (HAL_ICON_MEDIA_MEMORY_STICK); -- } else if (strcmp (drive->type, "smart_media") == 0) { -- icon = g_strdup (HAL_ICON_MEDIA_SMART_MEDIA); -- } else if (strcmp (drive->type, "sd_mmc") == 0) { -- icon = g_strdup (HAL_ICON_MEDIA_SD_MMC); -- } else { -- -- if (strcmp (drive->bus, "usb") == 0) { -- icon = g_strdup (HAL_ICON_MEDIA_HARDDISK_USB); -- } else if (strcmp (drive->bus, "ieee1394") == 0) { -- icon = g_strdup (HAL_ICON_MEDIA_HARDDISK_IEEE1394); -- } else { -- icon = g_strdup (HAL_ICON_MEDIA_HARDDISK); -- } -+ /* Initialise the connection to the hal daemon */ -+ if ((volume_monitor_daemon->hal_ctx = -+ hal_initialize (&hal_functions, FALSE)) == NULL) { -+ g_warning ("hal_initialize failed\n"); -+ return FALSE; - } -- -- return icon; --} -- --static int --_hal_get_vol_type (GnomeVFSHalVolume *vol, GnomeVFSHalDrive *drive, -- LibHalContext *hal_ctx) --{ -- return _hal_get_drive_type (NULL, drive, hal_ctx); --} -- --/***********************************************************************/ - --/** This function is used to skip certain volumes/drives we don't -- * want to expose in GnomeVFS. -- * -- */ --static gboolean --_hal_old_school_mount_point (GnomeVFSHalDrive *hal_drive, -- GnomeVFSHalVolume *hal_vol, /* may be NULL */ -- char *mount_point) --{ -- /* Skip standard UNIX-like mount points */ -- if (strcmp (mount_point, "/var") == 0 || -- strcmp (mount_point, "/usr") == 0 || -- strcmp (mount_point, "/bin") == 0 || -- strcmp (mount_point, "/sbin") == 0 || -- strcmp (mount_point, "/boot") == 0 || -- strcmp (mount_point, "/tmp") == 0 || -- strcmp (mount_point, "/opt") == 0 || -- strcmp (mount_point, "/home") == 0 || -- strcmp (mount_point, "/") == 0) -- return TRUE; - -- return FALSE; -+ /* Setup GNOME specific policy - right now this is only icons */ -+ hal_storage_policy = hal_storage_policy_new (); -+ hal_storage_policy_set_icon_mapping (hal_storage_policy, icon_mapping); -+ -+ /* Tie some data with the libhal context */ -+ hal_userdata = g_new0 (GnomeVFSHalUserData, 1); -+ hal_userdata->volume_monitor_daemon = volume_monitor_daemon; -+ hal_userdata->hal_storage_policy = hal_storage_policy; -+ hal_ctx_set_user_data (volume_monitor_daemon->hal_ctx, -+ hal_userdata); -+ return TRUE; - } - --/***********************************************************************/ -- -- --/* Add a drive where the media is not partition based. -- * -- * It's safe to call this function multiple times for the same HAL -- * UDI (Unique Device Identifier). -- */ --static void --_hal_add_drive_no_partitions ( -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon, -- const char *udi) -+void -+_gnome_vfs_hal_mounts_shutdown (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) - { -- GnomeVFSHalDrive *hal_drive = NULL; -- LibHalContext *hal_ctx = volume_monitor_daemon->hal_ctx; -- GnomeVFSDrive *drive; -- GnomeVFSVolumeMonitor *volume_monitor = -- GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon); -- char *name = NULL; -- char *icon = NULL; -- GnomeVFSDeviceType device_type = GNOME_VFS_DEVICE_TYPE_HARDDRIVE; -- gboolean computer_visible = TRUE; -- struct fstab *fst; -- char *mount_point = NULL; -- --#ifdef HAL_ONLY_SHOW_MOUNTED_VOLUMES -- return; --#endif -- -- /* -- * We create the GnomeVFSDrive for such beasts since we can -- * actually do it in advance due to the fact that we already -- * know the device file and the mount point. -- */ -- -- hal_drive = _hal_get_drive (udi, hal_ctx); -- if (hal_drive == NULL) -- goto out; -+ GnomeVFSHalUserData *hal_userdata; - -- /* get mount point from /etc/fstab */ -- if (setfsent () == 1) { -- fst = getfsspec (hal_drive->device_file); -- if (fst != NULL ) -- mount_point = strdup (fst->fs_file); -- endfsent (); -- } -- if (mount_point == NULL || mount_point[0] != '/') -- goto out; -+ hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (volume_monitor_daemon->hal_ctx); -+ hal_storage_policy_free (hal_userdata->hal_storage_policy); - -- /* Include, but hide, drives with a hidden mount point */ -- if (_hal_old_school_mount_point (hal_drive, NULL, mount_point)) { -- computer_visible = FALSE; -- } -- -- /* see if drive was already added */ -- drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi ( -- volume_monitor, udi); -- if (drive == NULL ) { -- -- /* nope, make one */ -- -- name = _hal_get_drive_name (NULL, hal_drive, hal_ctx); -- icon = _hal_get_drive_icon (NULL, hal_drive, hal_ctx); -- device_type = _hal_get_drive_type (NULL, hal_drive, hal_ctx); -- -- drive = g_object_new (GNOME_VFS_TYPE_DRIVE, NULL); -- drive->priv->device_path = g_strdup (hal_drive->device_file); -- -- drive->priv->activation_uri = gnome_vfs_get_uri_from_local_path (mount_point); -- drive->priv->is_connected = TRUE; -- drive->priv->device_type = device_type; -- drive->priv->icon = g_strdup (icon); -- drive->priv->display_name = _gnome_vfs_volume_monitor_uniquify_drive_name (volume_monitor, name); -- drive->priv->is_user_visible = computer_visible; -- drive->priv->volumes = NULL; -- drive->priv->hal_udi = g_strdup (udi); -- -- _gnome_vfs_volume_monitor_connected (volume_monitor, drive); -- gnome_vfs_drive_unref (drive); -+ if (hal_shutdown (volume_monitor_daemon->hal_ctx) != 0) { -+ g_warning ("hal_shutdown failed\n"); - } -- --out: -- _hal_free_drive (hal_drive); -- g_free (name); -- g_free (icon); -- free (mount_point); - } - -+/**************************************************************************/ - --/* Add a hal-volume, that is, a HalDevice of capability 'volume'. -+/** Ask HAL for more information about the drive and modify properties on the -+ * GnomeVFSDrive as appropriate. Note that this happens before the object -+ * is added to the volume monitor. - * -- * It's safe to call this function multiple times for the same HAL -- * UDI (Unique Device Identifier). -+ * @param volume_monitor_daemon Handle to the volume monitor daemon -+ * @param drive Handle to the GnomeVFSDrive object - */ --static void --_hal_add_volume (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon, -- const char *udi) -+void -+_gnome_vfs_hal_mounts_modify_drive (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon, -+ GnomeVFSDrive *drive) - { -- GnomeVFSHalVolume *hal_vol = NULL; -- GnomeVFSHalDrive *hal_drive = NULL; -- LibHalContext *hal_ctx = volume_monitor_daemon->hal_ctx; -+ char *drive_name; -+ char *drive_icon; -+ char *unique_drive_name; -+ LibHalContext *hal_ctx; -+ HalDrive *hal_drive; -+ HalVolume *hal_volume; -+ GnomeVFSHalUserData *hal_userdata; -+ HalStoragePolicy *hal_storage_policy; -+ char *target_mount_point; - -- GnomeVFSDrive *drive; -- GnomeVFSVolume *vol; -- GnomeVFSVolumeMonitor *volume_monitor = -- GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon); -- char *name = NULL; -- char *icon = NULL; -- GnomeVFSDeviceType device_type = GNOME_VFS_DEVICE_TYPE_HARDDRIVE; -- gboolean computer_visible = TRUE; -- gboolean desktop_visible = FALSE; -- struct fstab *fst; -- char *mount_point = NULL; -- gboolean is_blank_disc = FALSE; -- gboolean is_audio_disc = FALSE; -- -- /* Only care about capability volume */ -- if (!hal_device_query_capability ( -- volume_monitor_daemon->hal_ctx, -- udi, "volume")) -- { -+ hal_drive = NULL; -+ hal_volume = NULL; - -- /* And capability block where block.no_partition==TRUE and -- * block.is_volume==FALSE -- */ -- if (hal_device_query_capability ( -- hal_ctx, udi, "block") && -- (hal_device_get_property_bool ( -- hal_ctx, udi, "block.no_partitions")==TRUE) && -- (hal_device_get_property_bool ( -- hal_ctx, udi, "block.is_volume")==FALSE)) { -- /* This represent top-level block devices with -- * media not using partitions.. Such as floppy -- * drives or optical drives.. -- */ -- -- _hal_add_drive_no_partitions ( -- volume_monitor_daemon, udi); -- goto out; -- -- } else { -- /* Nothing we can use... */ -- goto out; -- } -- } -- -- -- /* get HAL drive and volume objects */ -- hal_vol = _hal_get_vol (udi, hal_ctx); -- if (hal_vol == NULL) -- goto out; -- hal_drive = _hal_get_drive_from_vol (hal_vol, hal_ctx); -- if (hal_drive == NULL) -+ if ((hal_ctx = volume_monitor_daemon->hal_ctx) == NULL) - goto out; - -- /* See if we should have an icon on the desktop */ -- if (hal_drive->is_hotpluggable || -- hal_vol->is_disc || -- hal_drive->is_removable) -- desktop_visible = TRUE; -- -- /* If we are mounted, use the mount point that HAL knows */ -- if (hal_vol->is_mounted) { -- mount_point = strdup (hal_vol->mount_point); -- } else { -- /* Otherwise... Yuck.. -- * -- * gnome-vfs expects a mount point for a not yet -- * mounted volume which is kind of gross as it may be -- * mounted anywhere by e.g. root in the -- * future. Surely, this is not needed at all, -- * gnome-vfs should just be able to do a 'mount -- * /dev/sda1' or something. -- * -- * Now, HAL *could* monitor the /etc/fstab file and -- * maintain volume.mount_point property while -- * volume.is_mounted is FALSE, but this is unclean and -- * we really want the volume.mount_point to be empty -- * if, and only if, volume.is_mounted is FALSE. -- * -- * So, we just need to read the /etc/fstab here to -- * find the mount point (which is probably created by -- * a callout anyway). Oh well, piece of cake anyway.. -- */ -- if (setfsent () == 1) { -- fst = getfsspec (hal_vol->device_file); -- if (fst != NULL ) -- mount_point = strdup (fst->fs_file); -- endfsent (); -- } -- } -+ hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ hal_storage_policy = hal_userdata->hal_storage_policy; - -- /* And we do need a mount point, and now we tried so hard to find -- * one.. bail out if we haven't got any.. -- * -- * Further, getfspec above may return 'swap', so only accept a mount -- * point that starts with /. Hmmm.. -- */ -- if (mount_point == NULL || mount_point[0]!='/') -+ if (drive == NULL || drive->priv == NULL || drive->priv->device_path == NULL) - goto out; - -- /* bail out if fstype is swap */ -- if (hal_vol->fstype != NULL && strcmp (hal_vol->fstype, "swap") == 0) -+ /* Note, the device_path may point to what hal calls a volume, e.g. -+ * /dev/sda1 etc, however we get the Drive object for the parent if -+ * that is the case. This is a feature of libhal-storage. -+ */ -+ if ((hal_drive = hal_drive_from_device_file (hal_ctx, drive->priv->device_path)) == NULL) { -+ g_warning ("%s: no hal drive for device=%s", __FUNCTION__, drive->priv->device_path); - goto out; -- -- /* see if we're a blank disc instead of being mounted */ -- is_blank_disc = hal_vol->is_disc && hal_vol->disc_is_blank; -- -- /* see if we're a pure audio disc instead of being mounted */ -- is_audio_disc = hal_vol->is_disc && hal_vol->disc_has_audio && -- !hal_vol->disc_has_data; -- -- /* Include, but hide, volumes with a hidden mount point */ -- if (_hal_old_school_mount_point (hal_drive, hal_vol, mount_point)) { -- desktop_visible = FALSE; -- computer_visible = FALSE; - } - --#ifdef HAL_ONLY_SHOW_MOUNTED_VOLUMES -- /* we should also show blank discs */ -- if (!hal_vol->is_mounted && !is_blank_disc) -- goto out; --#endif -+ /* There may not be a volume object associated, so hal_volume may be NULL */ -+ hal_volume = hal_volume_from_device_file (hal_ctx, drive->priv->device_path); - -- /* see if it was already added */ -- drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi ( -- volume_monitor, --#ifdef HAL_ONLY_SHOW_MOUNTED_VOLUMES -- udi); --#else -- hal_drive->no_partitions ? hal_drive->udi : udi); --#endif -- if (drive == NULL ) { -- -- /* nope, make one */ -- -- name = _hal_get_drive_name (hal_vol, hal_drive, hal_ctx); -- icon = _hal_get_drive_icon (hal_vol, hal_drive, hal_ctx); -- device_type = _hal_get_drive_type (hal_vol, hal_drive, hal_ctx); -- -- drive = g_object_new (GNOME_VFS_TYPE_DRIVE, NULL); -- drive->priv->device_path = g_strdup (hal_vol->device_file); -- -- drive->priv->activation_uri = gnome_vfs_get_uri_from_local_path (mount_point); -- drive->priv->is_connected = TRUE; -- drive->priv->device_type = device_type; -- drive->priv->icon = g_strdup (icon); -- drive->priv->display_name = _gnome_vfs_volume_monitor_uniquify_drive_name (volume_monitor, name); -- drive->priv->is_user_visible = computer_visible; -- drive->priv->volumes = NULL; -- -- drive->priv->hal_udi = g_strdup ( --#ifdef HAL_ONLY_SHOW_MOUNTED_VOLUMES -- udi --#else -- hal_drive->no_partitions ? hal_drive->udi : udi --#endif -- ); -- _gnome_vfs_volume_monitor_connected (volume_monitor, drive); -- gnome_vfs_drive_unref (drive); -- } -- -- g_free (name); name = NULL; -- g_free (icon); icon = NULL; -- -- /* drive is now a reference to GnomeVFSDrive */ -- -- /* Only create a GnomeVFSVolume object if the volume is mounted -- * or a blank disc */ -- if (hal_vol->is_mounted || is_blank_disc || is_audio_disc) { -- /* see if hal_vol was already added */ -- vol = _gnome_vfs_volume_monitor_find_volume_by_hal_udi ( -- volume_monitor, udi); -- if (vol == NULL ) { -- -- name = _hal_get_vol_name (hal_vol, hal_drive, hal_ctx); -- icon = _hal_get_vol_icon (hal_vol, hal_drive, hal_ctx); -- device_type = _hal_get_vol_type (hal_vol, hal_drive, hal_ctx); -- -- vol = g_object_new (GNOME_VFS_TYPE_VOLUME, NULL); -- vol->priv->hal_udi = g_strdup (udi); -- vol->priv->volume_type = GNOME_VFS_VOLUME_TYPE_MOUNTPOINT; -+ /* For optical discs, we manually add/remove GnomeVFSVolume optical discs without -+ * data (e.g. blank and pure audio) since these don't appear in the mounted filesystems -+ * file /etc/mtab -+ */ -+ if (hal_volume != NULL && -+ hal_drive_get_type (hal_drive)==HAL_DRIVE_TYPE_CDROM && -+ hal_volume_is_disc (hal_volume) && !hal_volume_disc_has_data (hal_volume)) { -+ GnomeVFSVolume *volume; -+ char *volume_name; -+ char *volume_icon; -+ -+ /* see if we already got a volume */ -+ volume = _gnome_vfs_volume_monitor_find_volume_by_device_path ( -+ GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), -+ hal_drive_get_device_file (hal_drive)); -+ if (volume == NULL) { -+ -+ volume_name = hal_volume_policy_compute_display_name ( -+ hal_drive, hal_volume, hal_storage_policy); -+ -+ /* set icon name; try dedicated icon name first... */ -+ if (hal_drive_get_dedicated_icon_volume (hal_drive) != NULL) -+ volume_icon = g_strdup (hal_drive_get_dedicated_icon_volume (hal_drive)); -+ else -+ volume_icon = hal_volume_policy_compute_icon_name ( -+ hal_drive, hal_volume, hal_storage_policy); -+ -+ volume = g_object_new (GNOME_VFS_TYPE_VOLUME, NULL); -+ volume->priv->hal_udi = g_strdup (hal_volume_get_udi (hal_volume)); -+ volume->priv->volume_type = GNOME_VFS_VOLUME_TYPE_MOUNTPOINT; - -- if (is_blank_disc) { -- vol->priv->device_path = g_strdup (hal_vol->device_file); -- vol->priv->activation_uri = g_strdup ("burn:///"); -- vol->priv->unix_device = makedev (hal_vol->device_major, -- hal_vol->device_minor); -- vol->priv->filesystem_type = g_strdup (hal_vol->fstype); -- -- } else if (is_audio_disc) { -- vol->priv->device_path = g_strdup (hal_vol->device_file); -- vol->priv->activation_uri = g_strdup_printf ( -- "cddb://%s", hal_vol->device_file); -- vol->priv->unix_device = makedev (hal_vol->device_major, -- hal_vol->device_minor); -- vol->priv->filesystem_type = g_strdup (hal_vol->fstype); -- -- } else { -- vol->priv->device_path = g_strdup (hal_vol->device_file); -- vol->priv->activation_uri = gnome_vfs_get_uri_from_local_path (mount_point); -- vol->priv->unix_device = makedev (hal_vol->device_major, -- hal_vol->device_minor); -- vol->priv->filesystem_type = g_strdup (hal_vol->fstype); -+ if (hal_volume_disc_is_blank (hal_volume)) { -+ /* Blank discs should open the burn:/// location */ -+ volume->priv->device_path = g_strdup (hal_volume_get_device_file (hal_volume)); -+ volume->priv->activation_uri = g_strdup ("burn:///"); -+ volume->priv->unix_device = makedev (hal_volume_get_device_major (hal_volume), -+ hal_volume_get_device_minor (hal_volume)); -+ volume->priv->filesystem_type = g_strdup (hal_volume_get_fstype (hal_volume)); -+ } else if (hal_volume_disc_has_audio (hal_volume)) { -+ /* Audio discs with data should open the cdda:///dev/cdrom location */ -+ volume->priv->device_path = g_strdup (hal_volume_get_device_file (hal_volume)); -+ volume->priv->activation_uri = g_strdup_printf ( -+ "cdda://%s", hal_volume_get_device_file (hal_volume)); -+ volume->priv->unix_device = makedev (hal_volume_get_device_major (hal_volume), -+ hal_volume_get_device_minor (hal_volume)); -+ volume->priv->filesystem_type = g_strdup (hal_volume_get_fstype (hal_volume)); - } -- -- vol->priv->is_read_only = FALSE; -- vol->priv->is_mounted = TRUE; - -- vol->priv->device_type = device_type; -+ volume->priv->is_read_only = TRUE; -+ volume->priv->is_mounted = FALSE; -+ -+ volume->priv->device_type = GNOME_VFS_DEVICE_TYPE_CDROM; - -- vol->priv->display_name = _gnome_vfs_volume_monitor_uniquify_volume_name (volume_monitor, name); -- vol->priv->icon = g_strdup(icon); -- vol->priv->is_user_visible = desktop_visible; -+ volume->priv->display_name = _gnome_vfs_volume_monitor_uniquify_volume_name ( -+ GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), volume_name); -+ volume->priv->icon = g_strdup (volume_icon); -+ volume->priv->is_user_visible = TRUE; - -- vol->priv->drive = drive; -- _gnome_vfs_drive_add_mounted_volume (drive, vol); -+ volume->priv->drive = drive; -+ _gnome_vfs_drive_add_mounted_volume (drive, volume); - -- _gnome_vfs_volume_monitor_mounted (volume_monitor, vol); gnome_vfs_volume_unref (vol); -+ _gnome_vfs_volume_monitor_mounted (GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), volume); -+ gnome_vfs_volume_unref (volume); - -+ free (volume_name); -+ free (volume_icon); - } -- } -- --out: -- _hal_free_vol (hal_vol); -- _hal_free_drive (hal_drive); -- g_free (name); -- g_free (icon); -- free (mount_point); --} -- -+ } else if (hal_volume == NULL && hal_drive_get_type (hal_drive)==HAL_DRIVE_TYPE_CDROM) { -+ GnomeVFSVolume *volume; - --/* Remove a hal-volume, that is, a HalDevice of capability 'volume'. -- * -- * It's safe to call this function even though the hal-volume doesn't -- * correspond to any (GnomeVFSDrive, GnomeVFSVolume) pair. -- */ --static void --_hal_remove_volume (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon, -- const char *udi) --{ -- GnomeVFSDrive *drive; -- GnomeVFSVolume *vol; -- GnomeVFSVolumeMonitor *volume_monitor; -- -- volume_monitor = GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon); -- -- drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi ( -- volume_monitor, udi); -- if (drive != NULL ) { -- _gnome_vfs_volume_monitor_disconnected (volume_monitor, drive); -- } -- -- vol = _gnome_vfs_volume_monitor_find_volume_by_hal_udi ( -- volume_monitor, udi); -- if (vol != NULL ) { -- _gnome_vfs_volume_monitor_unmounted (volume_monitor, vol); -- } --} -- -- --/* Call when a HAL volume is unmounted. -- * -- * It's safe to call this function even though the hal-volume doesn't -- * correspond to GnomeVFSVolume object. -- */ --static void --_hal_volume_unmounted (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon, -- const char *udi) --{ -- GnomeVFSVolume *vol; -- GnomeVFSVolumeMonitor *volume_monitor; -- -- volume_monitor = GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon); -- -- vol = _gnome_vfs_volume_monitor_find_volume_by_hal_udi ( -- volume_monitor, udi); -- -- if (vol != NULL ) { -- _gnome_vfs_volume_monitor_unmounted (volume_monitor, vol); -- } -- --#ifdef HAL_ONLY_SHOW_MOUNTED_VOLUMES -- { -- GnomeVFSDrive *drive; -- drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi ( -- volume_monitor, udi); -- if (drive != NULL ) { -- _gnome_vfs_volume_monitor_disconnected (volume_monitor, drive); -+ /* Remove GnomeVFSVolume with same device file */ -+ -+ volume = _gnome_vfs_volume_monitor_find_volume_by_device_path ( -+ GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), hal_drive_get_device_file (hal_drive)); -+ if (volume != NULL) { -+ _gnome_vfs_volume_monitor_unmounted (GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), volume); - } - } --#endif - --} -- -- --void --_gnome_vfs_monitor_hal_get_volume_list (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) --{ -- int i; -- int num_hal_volumes; -- char **hal_volumes; -- GnomeVFSVolumeMonitor *volume_monitor; - -+ /* Now, modify the drive with the hal stuff, unless we've already done so */ -+ if (drive->priv->hal_udi != NULL) -+ goto out; - -- volume_monitor = GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon); -- -- hal_volumes = hal_find_device_by_capability ( -- volume_monitor_daemon->hal_ctx, -- "volume", -- &num_hal_volumes); -- for (i=0; ipriv->should_eject = hal_drive_requires_eject (hal_drive); - -- _hal_add_volume (volume_monitor_daemon, udi); -+ /* set display name */ -+ drive_name = hal_drive_policy_compute_display_name (hal_drive, hal_volume, hal_storage_policy); -+ unique_drive_name = _gnome_vfs_volume_monitor_uniquify_drive_name ( -+ GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), drive_name); -+ if (drive->priv->display_name != NULL) -+ free (drive->priv->display_name); -+ drive->priv->display_name = unique_drive_name; -+ free (drive_name); -+ -+ /* set icon name; try dedicated icon name first... */ -+ if (hal_drive_get_dedicated_icon_drive (hal_drive) != NULL) -+ drive_icon = g_strdup (hal_drive_get_dedicated_icon_drive (hal_drive)); -+ else -+ drive_icon = hal_drive_policy_compute_icon_name (hal_drive, hal_volume, hal_storage_policy); -+ if (drive->priv->icon != NULL) -+ free (drive->priv->icon); -+ drive->priv->icon = g_strdup (drive_icon); -+ free (drive_icon); -+ -+ /* figure out target mount point; first see if we're mounted */ -+ target_mount_point = NULL; -+ if (hal_volume != NULL) { -+ const char *str; -+ str = hal_volume_get_mount_point (hal_volume); -+ if (str != NULL) -+ target_mount_point = g_strdup (str); -+ } -+ -+ /* otherwise lookup fstab */ -+ if (target_mount_point == NULL && setfsent () == 1) { -+ struct fstab *fst; -+ fst = getfsspec (drive->priv->device_path); -+ if (fst != NULL ) -+ target_mount_point = g_strdup (fst->fs_file); -+ endfsent (); - } -- hal_free_string_array (hal_volumes); -- -- hal_volumes = hal_find_device_by_capability ( -- volume_monitor_daemon->hal_ctx, -- "block", -- &num_hal_volumes); -- for (i=0; ipriv->is_user_visible = FALSE; - -- _hal_add_volume (volume_monitor_daemon, udi); -- } -- hal_free_string_array (hal_volumes); --} -- --static void --_hal_mainloop_integration (LibHalContext *ctx, -- DBusConnection * dbus_connection) --{ -- dbus_connection_setup_with_g_main (dbus_connection, NULL); --} -+ g_free (target_mount_point); - --static void --_hal_device_added (LibHalContext *ctx, -- const char *udi) --{ -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- volume_monitor_daemon = (GnomeVFSVolumeMonitorDaemon *) -- hal_ctx_get_user_data (ctx); -- _hal_add_volume (volume_monitor_daemon, udi); --} -+ /* set hal udi */ -+ drive->priv->hal_udi = g_strdup (hal_drive_get_udi (hal_drive)); - --static void --_hal_device_removed (LibHalContext *ctx, -- const char *udi) --{ -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- volume_monitor_daemon = (GnomeVFSVolumeMonitorDaemon *) -- hal_ctx_get_user_data (ctx); -- _hal_remove_volume (volume_monitor_daemon, udi); -+out: -+ hal_volume_free (hal_volume); -+ hal_drive_free (hal_drive); - } - --static void --_hal_device_new_capability (LibHalContext *ctx, -- const char *udi, -- const char *capability) -+void -+_gnome_vfs_hal_mounts_modify_volume (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon, -+ GnomeVFSVolume *volume) - { -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- volume_monitor_daemon = (GnomeVFSVolumeMonitorDaemon *) -- hal_ctx_get_user_data (ctx); -- _hal_add_volume (volume_monitor_daemon, udi); --} -+ char *volume_name; -+ char *volume_icon; -+ char *unique_volume_name; -+ LibHalContext *hal_ctx; -+ HalDrive *hal_drive; -+ HalVolume *hal_volume; -+ GnomeVFSHalUserData *hal_userdata; -+ HalStoragePolicy *hal_storage_policy; -+ char *target_mount_point; - --static void --_hal_device_lost_capability (LibHalContext *ctx, -- const char *udi, -- const char *capability) --{ --} -+ hal_volume = NULL; -+ hal_drive = NULL; - --static void --_hal_device_property_modified (LibHalContext *ctx, -- const char *udi, -- const char *key, -- dbus_bool_t is_removed, -- dbus_bool_t is_added) --{ -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- volume_monitor_daemon = (GnomeVFSVolumeMonitorDaemon *) -- hal_ctx_get_user_data (ctx); -+ if ((hal_ctx = volume_monitor_daemon->hal_ctx) == NULL) -+ goto out; -+ if (volume == NULL || volume->priv == NULL || volume->priv->device_path == NULL) -+ goto out; - -- if (!is_removed && strcmp (key, "volume.is_mounted") == 0) { -- dbus_bool_t is_mounted; -+ hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ hal_storage_policy = hal_userdata->hal_storage_policy; - -- is_mounted = hal_device_get_property_bool( -- ctx, udi, "volume.is_mounted"); -+ /* Now, modify the drive with the hal stuff, unless we've already done so */ -+ if (volume->priv->hal_udi != NULL) -+ goto out; - -- if( is_mounted ) -- _hal_add_volume (volume_monitor_daemon, udi); -- else -- _hal_volume_unmounted (volume_monitor_daemon, udi); -+ /* Note, the device_path points to what hal calls a volume, e.g. -+ * /dev/sda1 etc, however we get the Drive object for the parent if -+ * that is the case. This is a feature of libhal-storage. -+ */ -+ if ((hal_drive = hal_drive_from_device_file (hal_ctx, volume->priv->device_path)) == NULL) { -+ g_warning ("%s: no hal drive for device=%s", __FUNCTION__, volume->priv->device_path); -+ goto out; - } --} -- --static void --_hal_device_condition (LibHalContext *ctx, -- const char *udi, -- const char *condition_name, -- DBusMessage *message) --{ -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- volume_monitor_daemon = (GnomeVFSVolumeMonitorDaemon *) -- hal_ctx_get_user_data (ctx); -- -- if (strcmp (condition_name, "BlockForcedUnmountPartition") == 0) { -- _hal_remove_volume (volume_monitor_daemon, udi); -+ if ((hal_volume = hal_volume_from_device_file (hal_ctx, volume->priv->device_path)) == NULL) { -+ g_warning ("%s: no hal volume for device=%s", __FUNCTION__, volume->priv->device_path); -+ goto out; - } --} - --static LibHalFunctions --hal_functions = { _hal_mainloop_integration, -- _hal_device_added, -- _hal_device_removed, -- _hal_device_new_capability, -- _hal_device_lost_capability, -- _hal_device_property_modified, -- _hal_device_condition }; -+ /* set display name */ -+ volume_name = hal_volume_policy_compute_display_name (hal_drive, hal_volume, hal_storage_policy); -+ unique_volume_name = _gnome_vfs_volume_monitor_uniquify_volume_name ( -+ GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), volume_name); -+ if (volume->priv->display_name != NULL) -+ free (volume->priv->display_name); -+ volume->priv->display_name = unique_volume_name; -+ free (volume_name); -+ -+ /* set icon name; try dedicated icon name first... */ -+ if (hal_drive_get_dedicated_icon_volume (hal_drive) != NULL) -+ volume_icon = g_strdup (hal_drive_get_dedicated_icon_volume (hal_drive)); -+ else -+ volume_icon = hal_volume_policy_compute_icon_name (hal_drive, hal_volume, hal_storage_policy); -+ if (volume->priv->icon != NULL) -+ free (volume->priv->icon); -+ volume->priv->icon = g_strdup (volume_icon); -+ free (volume_icon); - --gboolean --_gnome_vfs_monitor_hal_mounts_init (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) --{ -- /* initialise the connection to the hal daemon */ -- if ((volume_monitor_daemon->hal_ctx = -- hal_initialize (&hal_functions, FALSE)) == NULL) { -- g_warning ("hal_initialize failed\n"); -- return FALSE; -+ /* figure out target mount point; first see if we're mounted */ -+ target_mount_point = NULL; -+ { -+ const char *str; -+ str = hal_volume_get_mount_point (hal_volume); -+ if (str != NULL) -+ target_mount_point = g_strdup (str); - } - -- hal_ctx_set_user_data (volume_monitor_daemon->hal_ctx, -- volume_monitor_daemon); -+ /* otherwise lookup fstab */ -+ if (target_mount_point == NULL && setfsent () == 1) { -+ struct fstab *fst; -+ fst = getfsspec (volume->priv->device_path); -+ if (fst != NULL ) -+ target_mount_point = g_strdup (fst->fs_file); -+ endfsent (); -+ } - -- hal_device_property_watch_all (volume_monitor_daemon->hal_ctx); -+ /* set whether it's visible on the desktop */ -+ volume->priv->is_user_visible = -+ hal_volume_policy_should_be_visible (hal_drive, hal_volume, hal_storage_policy, target_mount_point) && -+ (hal_drive_is_hotpluggable (hal_drive) || hal_drive_uses_removable_media (hal_drive)); - -- return TRUE; --} -+ g_free (target_mount_point); - --void --_gnome_vfs_monitor_hal_mounts_shutdown (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) --{ -- if (hal_shutdown (volume_monitor_daemon->hal_ctx) != 0) { -- g_warning ("hal_shutdown failed\n"); -- } -+ /* set hal udi */ -+ volume->priv->hal_udi = g_strdup (hal_volume_get_udi (hal_volume)); -+out: -+ hal_drive_free (hal_drive); -+ hal_volume_free (hal_volume); - } - - #endif /* USE_HAL */ -Index: libgnomevfs/gnome-vfs-hal-mounts.h -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.h,v -retrieving revision 1.3 -diff -u -p -r1.3 gnome-vfs-hal-mounts.h ---- libgnomevfs/gnome-vfs-hal-mounts.h 19 Aug 2004 07:34:01 -0000 1.3 -+++ libgnomevfs/gnome-vfs-hal-mounts.h 24 Sep 2004 22:50:34 -0000 -@@ -1,7 +1,7 @@ - /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */ - /* gnome-vfs-hal-mounts.h - read and monitor volumes using freedesktop HAL - -- Copyright (C) 2004 David Zeuthen -+ Copyright (C) 2004 Red Hat, Inc. - - The Gnome Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as -@@ -18,7 +18,7 @@ - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. - -- Author: David Zeuthen -+ Author: David Zeuthen - */ - - #ifndef GNOME_VFS_HAL_MOUNTS_H -@@ -26,12 +26,14 @@ - - #include "gnome-vfs-volume-monitor-daemon.h" - --gboolean _gnome_vfs_monitor_hal_mounts_init (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon); -+gboolean _gnome_vfs_hal_mounts_init (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon); - --void _gnome_vfs_monitor_hal_mounts_shutdown (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon); -- --void _gnome_vfs_monitor_hal_get_volume_list (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon); -+void _gnome_vfs_hal_mounts_shutdown (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon); - -+void _gnome_vfs_hal_mounts_modify_drive (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon, -+ GnomeVFSDrive *drive); -+void _gnome_vfs_hal_mounts_modify_volume (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon, -+ GnomeVFSVolume *volume); - - - #endif /* GNOME_VFS_HAL_MOUNTS_H */ -Index: libgnomevfs/gnome-vfs-volume-monitor-daemon.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-volume-monitor-daemon.c,v -retrieving revision 1.15 -diff -u -p -r1.15 gnome-vfs-volume-monitor-daemon.c ---- libgnomevfs/gnome-vfs-volume-monitor-daemon.c 22 Sep 2004 08:38:38 -0000 1.15 -+++ libgnomevfs/gnome-vfs-volume-monitor-daemon.c 24 Sep 2004 22:50:34 -0000 -@@ -154,7 +154,7 @@ static void - gnome_vfs_volume_monitor_daemon_init (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) - { - #ifdef USE_HAL -- if (_gnome_vfs_monitor_hal_mounts_init (volume_monitor_daemon)) { -+ if (_gnome_vfs_hal_mounts_init (volume_monitor_daemon)) { - /* It worked, do use HAL */ - dont_use_hald = FALSE; - } else { -@@ -163,12 +163,10 @@ gnome_vfs_volume_monitor_daemon_init (Gn - } - #endif /* USE_HAL */ - -- if (dont_use_hald) { -- _gnome_vfs_monitor_unix_mounts (fstab_changed, -- volume_monitor_daemon, -- mtab_changed, -- volume_monitor_daemon); -- } -+ _gnome_vfs_monitor_unix_mounts (fstab_changed, -+ volume_monitor_daemon, -+ mtab_changed, -+ volume_monitor_daemon); - - volume_monitor_daemon->gconf_client = gconf_client_get_default (); - gconf_client_add_dir (volume_monitor_daemon->gconf_client, -@@ -185,16 +183,8 @@ gnome_vfs_volume_monitor_daemon_init (Gn - NULL); - - -- if (dont_use_hald) { -- update_fstab_drives (volume_monitor_daemon); -- update_mtab_volumes (volume_monitor_daemon); -- } --#ifdef USE_HAL -- else { -- _gnome_vfs_monitor_hal_get_volume_list (volume_monitor_daemon); -- } --#endif /* USE_HAL */ -- -+ update_fstab_drives (volume_monitor_daemon); -+ update_mtab_volumes (volume_monitor_daemon); - update_connected_servers (volume_monitor_daemon); - } - -@@ -205,15 +195,8 @@ gnome_vfs_volume_monitor_daemon_force_pr - - volume_monitor_daemon = GNOME_VFS_VOLUME_MONITOR_DAEMON (volume_monitor); - -- if (dont_use_hald) { -- update_fstab_drives (volume_monitor_daemon); -- update_mtab_volumes (volume_monitor_daemon); -- } --#ifdef USE_HAL -- else { -- _gnome_vfs_monitor_hal_get_volume_list (volume_monitor_daemon); -- } --#endif /* USE_HAL */ -+ update_fstab_drives (volume_monitor_daemon); -+ update_mtab_volumes (volume_monitor_daemon); - update_connected_servers (volume_monitor_daemon); - } - -@@ -226,22 +209,15 @@ gnome_vfs_volume_monitor_daemon_finalize - - volume_monitor_daemon = GNOME_VFS_VOLUME_MONITOR_DAEMON (object); - -- if (dont_use_hald) { -- _gnome_vfs_stop_monitoring_unix_mounts (); -+ _gnome_vfs_stop_monitoring_unix_mounts (); - -- g_list_foreach (volume_monitor_daemon->last_mtab, -- (GFunc)_gnome_vfs_unix_mount_free, NULL); -- g_list_free (volume_monitor_daemon->last_mtab); -- -- g_list_foreach (volume_monitor_daemon->last_fstab, -- (GFunc)_gnome_vfs_unix_mount_point_free, NULL); -- g_list_free (volume_monitor_daemon->last_fstab); -- } --#ifdef USE_HAL -- else { -- _gnome_vfs_monitor_hal_mounts_shutdown (volume_monitor_daemon); -- } --#endif /* USE_HAL */ -+ g_list_foreach (volume_monitor_daemon->last_mtab, -+ (GFunc)_gnome_vfs_unix_mount_free, NULL); -+ g_list_free (volume_monitor_daemon->last_mtab); -+ -+ g_list_foreach (volume_monitor_daemon->last_fstab, -+ (GFunc)_gnome_vfs_unix_mount_point_free, NULL); -+ g_list_free (volume_monitor_daemon->last_fstab); - - gconf_client_notify_remove (volume_monitor_daemon->gconf_client, - volume_monitor_daemon->connected_id); -@@ -755,12 +731,19 @@ update_fstab_drives (GnomeVFSVolumeMonit - mount = l->data; - - drive = create_drive_from_mount_point (volume_monitor, mount); -+ - if (drive != NULL) { -+ -+#ifdef USE_HAL -+ if (!dont_use_hald) -+ _gnome_vfs_hal_mounts_modify_drive (volume_monitor_daemon, drive); -+#endif /* USE_HAL */ -+ - _gnome_vfs_volume_monitor_connected (volume_monitor, drive); - gnome_vfs_drive_unref (drive); - } - } -- -+ - g_list_free (added); - g_list_free (removed); - g_list_foreach (volume_monitor_daemon->last_fstab, -@@ -1021,6 +1004,10 @@ update_mtab_volumes (GnomeVFSVolumeMonit - - vol = create_vol_from_mount (volume_monitor, mount); - vol->priv->unix_device = unix_device; -+#ifdef USE_HAL -+ if (!dont_use_hald) -+ _gnome_vfs_hal_mounts_modify_volume (volume_monitor_daemon, vol); -+#endif /* USE_HAL */ - _gnome_vfs_volume_monitor_mounted (volume_monitor, vol); - gnome_vfs_volume_unref (vol); - } -@@ -1033,8 +1020,6 @@ update_mtab_volumes (GnomeVFSVolumeMonit - g_list_free (volume_monitor_daemon->last_mtab); - volume_monitor_daemon->last_mtab = new_mtab; - } -- -- - } - - /************************* connected server ***********************************/ -Index: libgnomevfs/gnome-vfs-volume-monitor-private.h -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-volume-monitor-private.h,v -retrieving revision 1.7 -diff -u -p -r1.7 gnome-vfs-volume-monitor-private.h ---- libgnomevfs/gnome-vfs-volume-monitor-private.h 15 Jul 2004 13:21:15 -0000 1.7 -+++ libgnomevfs/gnome-vfs-volume-monitor-private.h 24 Sep 2004 22:50:34 -0000 -@@ -85,6 +85,8 @@ struct _GnomeVFSDrivePrivate { - - /* Only for HAL devices: */ - char *hal_udi; -+ -+ gboolean should_eject; - }; - - void _gnome_vfs_volume_set_drive (GnomeVFSVolume *volume, -@@ -132,11 +134,17 @@ GnomeVFSVolume *_gnome_vfs_volume_monito - - #ifdef USE_HAL - GnomeVFSVolume *_gnome_vfs_volume_monitor_find_volume_by_hal_udi (GnomeVFSVolumeMonitor *volume_monitor, -- const char *hal_udi); --GnomeVFSDrive *_gnome_vfs_volume_monitor_find_drive_by_hal_udi (GnomeVFSVolumeMonitor *volume_monitor, -- const char *hal_udi); -+ const char *hal_udi); -+GnomeVFSDrive *_gnome_vfs_volume_monitor_find_drive_by_hal_udi (GnomeVFSVolumeMonitor *volume_monitor, -+ const char *hal_udi); - - #endif /* USE_HAL */ -+ -+GnomeVFSVolume *_gnome_vfs_volume_monitor_find_volume_by_device_path (GnomeVFSVolumeMonitor *volume_monitor, -+ const char *device_path); -+GnomeVFSDrive *_gnome_vfs_volume_monitor_find_drive_by_device_path (GnomeVFSVolumeMonitor *volume_monitor, -+ const char *device_path); -+ - - - char *_gnome_vfs_volume_monitor_uniquify_volume_name (GnomeVFSVolumeMonitor *volume_monitor, -Index: libgnomevfs/gnome-vfs-volume-monitor.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-volume-monitor.c,v -retrieving revision 1.9 -diff -u -p -r1.9 gnome-vfs-volume-monitor.c ---- libgnomevfs/gnome-vfs-volume-monitor.c 16 Sep 2004 18:17:27 -0000 1.9 -+++ libgnomevfs/gnome-vfs-volume-monitor.c 24 Sep 2004 22:50:35 -0000 -@@ -344,6 +344,52 @@ _gnome_vfs_volume_monitor_find_drive_by_ - } - #endif /* USE_HAL */ - -+GnomeVFSVolume * -+_gnome_vfs_volume_monitor_find_volume_by_device_path (GnomeVFSVolumeMonitor *volume_monitor, -+ const char *device_path) -+{ -+ GList *l; -+ GnomeVFSVolume *vol, *ret; -+ -+ /* Doesn't need locks, only called internally on main thread and doesn't write */ -+ -+ ret = NULL; -+ for (l = volume_monitor->priv->mtab_volumes; l != NULL; l = l->next) { -+ vol = l->data; -+ if (vol->priv != NULL && vol->priv->hal_udi != NULL && -+ vol->priv->device_path != NULL && /* Hmm */ -+ strcmp (vol->priv->device_path, device_path) == 0) { -+ ret = vol; -+ break; -+ } -+ } -+ -+ return ret; -+} -+ -+GnomeVFSDrive * -+_gnome_vfs_volume_monitor_find_drive_by_device_path (GnomeVFSVolumeMonitor *volume_monitor, -+ const char *device_path) -+{ -+ GList *l; -+ GnomeVFSDrive *drive, *ret; -+ -+ /* Doesn't need locks, only called internally on main thread and doesn't write */ -+ -+ ret = NULL; -+ for (l = volume_monitor->priv->fstab_drives; l != NULL; l = l->next) { -+ drive = l->data; -+ if (drive->priv != NULL && drive->priv->hal_udi != NULL && -+ drive->priv->device_path != NULL && /* Hmm */ -+ strcmp (drive->priv->device_path, device_path) == 0) { -+ ret = drive; -+ break; -+ } -+ } -+ -+ return ret; -+} -+ - - GnomeVFSVolume * - _gnome_vfs_volume_monitor_find_mtab_volume_by_activation_uri (GnomeVFSVolumeMonitor *volume_monitor, -Index: libgnomevfs/gnome-vfs-volume-ops.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-volume-ops.c,v -retrieving revision 1.14 -diff -u -p -r1.14 gnome-vfs-volume-ops.c ---- libgnomevfs/gnome-vfs-volume-ops.c 16 Aug 2004 08:44:06 -0000 1.14 -+++ libgnomevfs/gnome-vfs-volume-ops.c 24 Sep 2004 22:50:35 -0000 -@@ -331,15 +331,19 @@ mount_unmount_operation (const char *mou - int i; - - --#ifdef USE_VOLRMMOUNT -- name = strrchr (mount_point, '/'); -- if (name != NULL) { -- name = name + 1; -- } else { -- name = mount_point; -- } -+#ifdef __linux__ -+ name = device_path; - #else -+# ifdef USE_VOLRMMOUNT -+ name = strrchr (mount_point, '/'); -+ if (name != NULL) { -+ name = name + 1; -+ } else { -+ name = mount_point; -+ } -+# else - name = mount_point; -+# endif - #endif - - if (should_mount) { -@@ -501,7 +505,14 @@ gnome_vfs_volume_unmount (GnomeVFSVolume - char *mount_path, *device_path; - char *uri; - GnomeVFSVolumeType type; -- -+ -+ if (volume->priv->drive != NULL) { -+ if (volume->priv->drive->priv->should_eject) { -+ gnome_vfs_volume_eject (volume, callback, user_data); -+ return; -+ } -+ } -+ - emit_pre_unmount (volume); - - type = gnome_vfs_volume_get_volume_type (volume); -@@ -608,6 +619,11 @@ gnome_vfs_drive_unmount (GnomeVFSDrive - { - GList *vol_list; - GList *current_vol; -+ -+ if (drive->priv->should_eject) { -+ gnome_vfs_drive_eject(drive, callback, user_data); -+ return; -+ } - - vol_list = gnome_vfs_drive_get_mounted_volumes (drive); - diff --git a/gnome-vfs-2.8.1-locale-component-mem-fix.patch b/gnome-vfs-2.8.1-locale-component-mem-fix.patch deleted file mode 100644 index 8464f46..0000000 --- a/gnome-vfs-2.8.1-locale-component-mem-fix.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- gnome-vfs-2.8.1/libgnomevfs/eggdesktopentries.c 13 Sep 2004 15:26:51 -0000 1.5 -+++ gnome-vfs-2.8.1/libgnomevfs/eggdesktopentries.c 28 Sep 2004 03:43:14 -0000 1.7 -@@ -2448,9 +2448,9 @@ egg_desktop_entries_get_locale_country ( - q = strstr (p, "@"); - - if (!q) -- country_len = q - p; -- else - country_len = strlen (p); -+ else -+ country_len = q - p; - - if (country_len <= 0) - return NULL; -@@ -2508,9 +2508,9 @@ egg_desktop_entries_get_locale_encoding - q = strstr (p, "@"); - - if (!q) -- encoding_len = q - p; -- else - encoding_len = strlen (p); -+ else -+ encoding_len = q - p; - - if (encoding_len <= 0) - { diff --git a/gnome-vfs-2.8.1-performance.patch b/gnome-vfs-2.8.1-performance.patch deleted file mode 100644 index 5791098..0000000 --- a/gnome-vfs-2.8.1-performance.patch +++ /dev/null @@ -1,260 +0,0 @@ -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-unix-mounts.h,v -retrieving revision 1.2 -retrieving revision 1.3 -diff -u -r1.2 -r1.3 ---- libgnomevfs/gnome-vfs-unix-mounts.h 2003/11/05 15:44:53 1.2 -+++ libgnomevfs/gnome-vfs-unix-mounts.h 2004/09/22 08:38:38 1.3 -@@ -59,7 +59,7 @@ - GnomeVFSUnixMountPoint *mount_point2); - gboolean _gnome_vfs_get_unix_mount_table (GList **return_list); - gboolean _gnome_vfs_get_current_unix_mounts (GList **return_list); --dev_t _gnome_vfs_unix_mount_get_unix_device (GnomeVFSUnixMount *mount); -+GList * _gnome_vfs_unix_mount_get_unix_device (GList *mounts); - void _gnome_vfs_monitor_unix_mounts (GnomeVFSUnixMountCallback mount_table_changed, - gpointer mount_table_changed_user_data, - GnomeVFSUnixMountCallback current_mounts_changed, -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-unix-mounts.c,v -retrieving revision 1.16 -retrieving revision 1.17 -diff -u -r1.16 -r1.17 ---- libgnomevfs/gnome-vfs-unix-mounts.c 2004/09/21 07:45:25 1.16 -+++ libgnomevfs/gnome-vfs-unix-mounts.c 2004/09/22 08:38:38 1.17 -@@ -91,98 +91,111 @@ - * to avoid this... - * Various ugly workarounds can be tried later. - */ --dev_t --_gnome_vfs_unix_mount_get_unix_device (GnomeVFSUnixMount *mount) -+GList * -+_gnome_vfs_unix_mount_get_unix_device (GList *mounts) - { -- struct stat statbuf; -- dev_t unix_device; -- pid_t pid; -- int pipes[2]; --#ifdef HAVE_POLL -- struct pollfd poll_fd; --#else -- struct timeval tv; -- fd_set read_fds; --#endif -- int res; -- int status; -- -- if (pipe (pipes) == -1) { -- return 0; -- } -- -- pid = fork (); -+ GList *result = NULL; - -- if (pid == -1) { -- close (pipes[0]); -- close (pipes[1]); -- return 0; -- } -+ while (mounts) { -+ dev_t unix_device = 0; -+ pid_t pid; -+ int pipes[2]; -+ int status; - -- unix_device = 0; -- -- if (pid == 0) { -- /* Child */ -- close (pipes[0]); -+ if (pipe (pipes) == -1) -+ goto error; - - pid = fork (); -+ if (pid == -1) { -+ close (pipes[0]); -+ close (pipes[1]); -+ goto error; -+ } - -- /* Fork an intermediate child that immediately exits so -- * we can waitpid it. This means the final process will get -- * owned by init and not go zombie -- */ - if (pid == 0) { -- /* Grandchild */ -- if (stat (mount->mount_path, &statbuf) == 0) { -- write (pipes[1], (char *)&statbuf.st_dev, sizeof (dev_t)); -+ /* Child */ -+ close (pipes[0]); -+ -+ /* Fork an intermediate child that immediately exits -+ * so we can waitpid it. This means the final process -+ * will get owned by init and not go zombie. -+ */ -+ pid = fork (); -+ -+ if (pid == 0) { -+ /* Grandchild */ -+ struct stat statbuf; -+ while (mounts) { -+ GnomeVFSUnixMount *mount = mounts->data; -+ unix_device = -+ stat (mount->mount_path, &statbuf) == 0 -+ ? statbuf.st_dev -+ : 0; -+ write (pipes[1], (char *)&unix_device, sizeof (dev_t)); -+ mounts = mounts->next; -+ } - } -- } else { - close (pipes[1]); -+ _exit (0); -+ g_assert_not_reached (); - } - -- _exit (0); -- } else { - /* Parent */ - close (pipes[1]); -- -- wait_again: -+ -+ retry_waitpid: - if (waitpid (pid, &status, 0) < 0) { - if (errno == EINTR) -- goto wait_again; -+ goto retry_waitpid; - else if (errno == ECHILD) - ; /* do nothing, child already reaped */ - else - g_warning ("waitpid() should not fail in gnome_vfs_unix_mount_get_unix_device"); - } - -+ while (mounts) { -+ int res; - -- do { -+ do { - #ifdef HAVE_POLL -- poll_fd.fd = pipes[0]; -- poll_fd.events = POLLIN; -- res = poll (&poll_fd, 1, STAT_TIMEOUT_SECONDS*1000); -+ struct pollfd poll_fd; -+ poll_fd.fd = pipes[0]; -+ poll_fd.events = POLLIN; -+ res = poll (&poll_fd, 1, STAT_TIMEOUT_SECONDS * 1000); - #else -- tv.tv_sec = STAT_TIMEOUT_SECONDS; -- tv.tv_usec = 0; -+ struct timeval tv; -+ fd_set read_fds; -+ -+ tv.tv_sec = STAT_TIMEOUT_SECONDS; -+ tv.tv_usec = 0; - -- FD_ZERO(&read_fds); -- FD_SET(pipes[0], &read_fds); -+ FD_ZERO(&read_fds); -+ FD_SET(pipes[0], &read_fds); - -- res = select (pipes[0] + 1, -- &read_fds, NULL, NULL, &tv); -+ res = select (pipes[0] + 1, -+ &read_fds, NULL, NULL, &tv); - #endif -- } while (res == -1 && errno == EINTR); -- -- if (res > 0) { -- if (read (pipes[0], (char *)&unix_device, sizeof (dev_t)) != sizeof (dev_t)) { -- unix_device = 0; -- } -+ } while (res == -1 && errno == EINTR); -+ -+ if (res <= 0 || -+ read (pipes[0], (char *)&unix_device, sizeof (dev_t)) != sizeof (dev_t)) -+ break; -+ -+ result = g_list_prepend (result, GUINT_TO_POINTER ((gulong)unix_device)); -+ mounts = mounts->next; - } - - close (pipes[0]); -+ -+ error: -+ if (mounts) { -+ unix_device = 0; -+ result = g_list_prepend (result, GUINT_TO_POINTER ((gulong)unix_device)); -+ mounts = mounts->next; -+ } - } -- -- return unix_device; -+ -+ return g_list_reverse (result); - } - - #ifndef HAVE_SETMNTENT -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-volume-monitor-daemon.c,v -retrieving revision 1.14 -retrieving revision 1.15 -diff -u -r1.14 -r1.15 ---- libgnomevfs/gnome-vfs-volume-monitor-daemon.c 2004/09/02 15:51:48 1.14 -+++ libgnomevfs/gnome-vfs-volume-monitor-daemon.c 2004/09/22 08:38:38 1.15 -@@ -851,7 +851,7 @@ - - vol->priv->volume_type = GNOME_VFS_VOLUME_TYPE_MOUNTPOINT; - vol->priv->device_path = g_strdup (mount->device_path); -- vol->priv->unix_device = _gnome_vfs_unix_mount_get_unix_device (mount); -+ vol->priv->unix_device = 0; /* Caller must fill in. */ - vol->priv->activation_uri = gnome_vfs_get_uri_from_local_path (mount->mount_path); - vol->priv->filesystem_type = g_strdup (mount->filesystem_type); - vol->priv->is_read_only = mount->is_read_only; -@@ -981,9 +981,8 @@ - update_mtab_volumes (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) - { - GList *new_mtab; -- GList *removed, *added; -- GList *l; -- GnomeVFSUnixMount *mount; -+ GList *removed, *added, *devices; -+ GList *l, *ld; - char *uri; - GnomeVFSVolume *vol; - GnomeVFSVolumeMonitor *volume_monitor; -@@ -998,7 +997,7 @@ - &added, &removed); - - for (l = removed; l != NULL; l = l->next) { -- mount = l->data; -+ GnomeVFSUnixMount *mount = l->data; - uri = gnome_vfs_get_uri_from_local_path (mount->mount_path); - - vol = _gnome_vfs_volume_monitor_find_mtab_volume_by_activation_uri (volume_monitor, uri); -@@ -1011,15 +1010,22 @@ - - g_free (uri); - } -- -- for (l = added; l != NULL; l = l->next) { -- mount = l->data; -+ -+ devices = _gnome_vfs_unix_mount_get_unix_device (added); -+ -+ for (l = added, ld = devices; -+ l != NULL; -+ l = l->next, ld = ld->next) { -+ GnomeVFSUnixMount *mount = l->data; -+ dev_t unix_device = GPOINTER_TO_UINT (ld->data); - - vol = create_vol_from_mount (volume_monitor, mount); -+ vol->priv->unix_device = unix_device; - _gnome_vfs_volume_monitor_mounted (volume_monitor, vol); - gnome_vfs_volume_unref (vol); - } -- -+ -+ g_list_free (devices); - g_list_free (added); - g_list_free (removed); - g_list_foreach (volume_monitor_daemon->last_mtab, diff --git a/gnome-vfs-2.8.2-bufer-fix.patch b/gnome-vfs-2.8.2-bufer-fix.patch deleted file mode 100644 index c0389e8..0000000 --- a/gnome-vfs-2.8.2-bufer-fix.patch +++ /dev/null @@ -1,19 +0,0 @@ -Index: libgnomevfs/gnome-vfs-socket-buffer.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-socket-buffer.c,v -retrieving revision 1.11 -diff -u -p -r1.11 gnome-vfs-socket-buffer.c ---- libgnomevfs/gnome-vfs-socket-buffer.c 7 Jul 2004 15:04:30 -0000 1.11 -+++ libgnomevfs/gnome-vfs-socket-buffer.c 13 Oct 2004 11:51:08 -0000 -@@ -412,7 +412,10 @@ flush (GnomeVFSSocketBuffer *socket_buff - if (result != GNOME_VFS_OK) { - return result; - } -- -+ -+ memmove (output_buffer->data, -+ output_buffer->data + bytes_written, -+ output_buffer->byte_count - bytes_written); - output_buffer->byte_count -= bytes_written; - } - diff --git a/gnome-vfs-2.8.2-mtab-mtime-check.patch b/gnome-vfs-2.8.2-mtab-mtime-check.patch deleted file mode 100644 index fb80768..0000000 --- a/gnome-vfs-2.8.2-mtab-mtime-check.patch +++ /dev/null @@ -1,151 +0,0 @@ -Index: libgnomevfs/gnome-vfs-unix-mounts.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-unix-mounts.c,v -retrieving revision 1.17 -diff -u -p -r1.17 gnome-vfs-unix-mounts.c ---- libgnomevfs/gnome-vfs-unix-mounts.c 22 Sep 2004 08:38:38 -0000 1.17 -+++ libgnomevfs/gnome-vfs-unix-mounts.c 15 Oct 2004 08:14:01 -0000 -@@ -235,6 +235,7 @@ gboolean - _gnome_vfs_get_current_unix_mounts (GList **return_list) - { - static time_t last_mtime = 0; -+ static off_t last_size = 0; - struct mntent *mntent; - FILE *file; - char *read_file; -@@ -254,11 +255,12 @@ _gnome_vfs_get_current_unix_mounts (GLis - return TRUE; - } - -- if (sb.st_mtime == last_mtime) { -+ if (sb.st_mtime == last_mtime && sb.st_size == last_size) { - return FALSE; - } - - last_mtime = sb.st_mtime; -+ last_size = sb.st_size; - - file = setmntent (read_file, "r"); - if (file == NULL) { -@@ -332,6 +334,7 @@ gboolean - _gnome_vfs_get_current_unix_mounts (GList **return_list) - { - static time_t last_mtime = 0; -+ static off_t last_size = 0; - struct mnttab mntent; - FILE *file; - char *read_file; -@@ -350,11 +353,12 @@ _gnome_vfs_get_current_unix_mounts (GLis - return TRUE; - } - -- if (sb.st_mtime == last_mtime) { -+ if (sb.st_mtime == last_mtime && sb.st_size == last_size) { - return FALSE; - } - - last_mtime = sb.st_mtime; -+ last_size = sb.st_size; - - file = setmntent (read_file, "r"); - if (file == NULL) { -@@ -526,6 +530,7 @@ gboolean - _gnome_vfs_get_unix_mount_table (GList **return_list) - { - static time_t last_mtime = 0; -+ static off_t last_size = 0; - struct mntent *mntent; - FILE *file; - char *read_file; -@@ -544,11 +549,12 @@ _gnome_vfs_get_unix_mount_table (GList * - return TRUE; - } - -- if (sb.st_mtime == last_mtime) { -+ if (sb.st_mtime == last_mtime && sb.st_size == last_size) { - return FALSE; - } - - last_mtime = sb.st_mtime; -+ last_size = sb.st_size; - - file = setmntent (read_file, "r"); - if (file == NULL) { -@@ -613,6 +619,7 @@ gboolean - _gnome_vfs_get_unix_mount_table (GList **return_list) - { - static time_t last_mtime = 0; -+ static off_t last_size = 0; - struct mnttab mntent; - FILE *file; - char *read_file; -@@ -630,11 +637,12 @@ _gnome_vfs_get_unix_mount_table (GList * - return TRUE; - } - -- if (sb.st_mtime == last_mtime) { -+ if (sb.st_mtime == last_mtime && sb.st_size == last_size) { - return FALSE; - } - - last_mtime = sb.st_mtime; -+ last_size = sb.st_size; - - file = setmntent (read_file, "r"); - if (file == NULL) { -@@ -801,6 +809,7 @@ gboolean - _gnome_vfs_get_unix_mount_table (GList **return_list) - { - static time_t last_mtime = 0; -+ static off_t last_size = 0; - struct mntent *mntent; - FILE *file; - char *read_file; -@@ -813,17 +822,17 @@ _gnome_vfs_get_unix_mount_table (GList * - - *return_list = NULL; - -- if (last_mtime != 0) { -- if (stat (stat_file, &sb) < 0) { -- g_warning ("Unable to stat %s: %s", stat_file, -- g_strerror (errno)); -- return TRUE; -- } -+ if (stat (stat_file, &sb) < 0) { -+ g_warning ("Unable to stat %s: %s", stat_file, -+ g_strerror (errno)); -+ return TRUE; -+ } - -- if (sb.st_mtime == last_mtime) { -- return FALSE; -- } -+ if (last_mtime != 0 && fsb.st_mtime == last_mtime && fsb.st_size == last_size) { -+ return FALSE; - } -+ last_mtime = fsb.st_mtime; -+ last_size = fsb.st_size; - - file = setmntent (read_file, "r"); - if (file == NULL) { -@@ -857,6 +866,7 @@ gboolean - _gnome_vfs_get_unix_mount_table (GList **return_list) - { - static time_t last_mtime = 0; -+ static off_t last_size = 0; - struct fstab *fstab = NULL; - char *stat_file; - struct stat fsb; -@@ -875,10 +885,11 @@ _gnome_vfs_get_unix_mount_table (GList * - return TRUE; - } - -- if (last_mtime != 0 && fsb.st_mtime == last_mtime) { -+ if (last_mtime != 0 && fsb.st_mtime == last_mtime && fsb.st_size == last_size) { - return FALSE; - } - last_mtime = fsb.st_mtime; -+ last_size = fsb.st_size; - - *return_list = NULL; - diff --git a/gnome-vfs-2.9.90-old-modules.patch b/gnome-vfs-2.9.90-old-modules.patch deleted file mode 100644 index b5a62ec..0000000 --- a/gnome-vfs-2.9.90-old-modules.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- gnome-vfs-2.9.90/modules/Makefile.am.old-modules 2005-01-10 11:22:41.000000000 -0500 -+++ gnome-vfs-2.9.90/modules/Makefile.am 2005-01-31 10:11:41.564778000 -0500 -@@ -67,6 +67,7 @@ - $(SMB_LTLIBS) \ - libsftp.la \ - libtar.la \ -+ libdesktop.la \ - $(NULL) - - # Not currently supported -@@ -161,6 +162,12 @@ - libftp_la_LDFLAGS = $(module_flags) - libftp_la_LIBADD = $(MODULES_LIBS) $(GSSAPI_LIBS) ../libgnomevfs/libgnomevfs-2.la - -+### `desktop' method -+ -+libdesktop_la_SOURCES = desktop-method.c -+libdesktop_la_LDFLAGS = $(module_flags) -+libdesktop_la_LIBADD = ../libgnomevfs/libgnomevfs-2.la -+ - ### `nfs' method - - #libnfs_la_SOURCES = \ diff --git a/gnome-vfs-2.9.91-fix-gcc4-build.patch b/gnome-vfs-2.9.91-fix-gcc4-build.patch deleted file mode 100644 index ae30cc6..0000000 --- a/gnome-vfs-2.9.91-fix-gcc4-build.patch +++ /dev/null @@ -1,31 +0,0 @@ ---- libgnomevfs/gnome-vfs-handle.c.orig 2005-03-07 20:34:58.000000000 -0500 -+++ libgnomevfs/gnome-vfs-handle.c 2005-03-07 20:40:01.000000000 -0500 -@@ -129,6 +129,8 @@ _gnome_vfs_handle_do_read (GnomeVFSHandl - GnomeVFSFileSize *bytes_read, - GnomeVFSContext *context) - { -+/* workaround to build to build with gcc 4.0 */ -+#undef read - INVOKE_AND_RETURN (handle, read, (handle->uri->method, handle->method_handle, - buffer, num_bytes, bytes_read, - context)); ---- modules/translate-method.c.orig 2005-03-07 21:05:39.000000000 -0500 -+++ modules/translate-method.c 2005-03-07 21:06:25.000000000 -0500 -@@ -572,6 +572,7 @@ - GnomeVFSFileSize * bytes_read_return, GnomeVFSContext * context) - { - TranslateMethod *tm = (TranslateMethod *) method; -+#undef read - return tm->real_method->read(tm->real_method, method_handle, - buffer, num_bytes, bytes_read_return, - context); ---- modules/smb-method.c.orig 2005-03-07 21:11:06.000000000 -0500 -+++ modules/smb-method.c 2005-03-07 21:07:14.000000000 -0500 -@@ -1433,6 +1433,7 @@ - - /* Important: perform_authentication leaves and re-enters the lock! */ - while (perform_authentication (&actx) > 0) { -+#undef read - n = smb_context->read (smb_context, handle->file, buffer, num_bytes); - actx.res = (n >= 0) ? GNOME_VFS_OK : gnome_vfs_result_from_errno (); - } diff --git a/gnome-vfs-2.9.91-hal-api-2.patch b/gnome-vfs-2.9.91-hal-api-2.patch deleted file mode 100644 index 1193359..0000000 --- a/gnome-vfs-2.9.91-hal-api-2.patch +++ /dev/null @@ -1,637 +0,0 @@ ---- libgnomevfs/gnome-vfs-hal-mounts.c.orig 2005-02-26 17:51:58.000000000 -0500 -+++ libgnomevfs/gnome-vfs-hal-mounts.c 2005-02-26 16:46:28.000000000 -0500 -@@ -49,16 +49,9 @@ - - typedef struct { - GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- HalStoragePolicy *hal_storage_policy; -+ LibHalStoragePolicy *hal_storage_policy; - } GnomeVFSHalUserData; - --static void --_hal_mainloop_integration (LibHalContext *ctx, -- DBusConnection * dbus_connection) --{ -- dbus_connection_setup_with_g_main (dbus_connection, NULL); --} -- - static void - _hal_device_added (LibHalContext *hal_ctx, - const char *udi) -@@ -66,16 +59,16 @@ _hal_device_added (LibHalContext *hal_ct - GnomeVFSHalUserData *hal_userdata; - GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; - -- hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ hal_userdata = (GnomeVFSHalUserData *) libhal_ctx_get_user_data (hal_ctx); - volume_monitor_daemon = hal_userdata->volume_monitor_daemon; - - /* Handle optical discs without data since these are not handled - * by GNOME VFS - */ -- if (hal_device_get_property_bool (hal_ctx, udi, "volume.is_disc")) { -+ if (libhal_device_get_property_bool (hal_ctx, udi, "volume.is_disc", NULL)) { - const char *storage_udi; - -- storage_udi = hal_device_get_property_string (hal_ctx, udi, "block.storage_device"); -+ storage_udi = libhal_device_get_property_string (hal_ctx, udi, "block.storage_device", NULL); - if (storage_udi != NULL) { - GnomeVFSDrive *drive; - -@@ -97,7 +90,7 @@ _hal_device_removed (LibHalContext *hal_ - GnomeVFSHalUserData *hal_userdata; - GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; - -- hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ hal_userdata = (GnomeVFSHalUserData *) libhal_ctx_get_user_data (hal_ctx); - volume_monitor_daemon = hal_userdata->volume_monitor_daemon; - - drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi ( -@@ -122,153 +115,93 @@ _hal_device_removed (LibHalContext *hal_ - } - } - --static void --_hal_device_new_capability (LibHalContext *hal_ctx, -- const char *udi, -- const char *capability) --{ -- GnomeVFSHalUserData *hal_userdata; -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- -- hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -- volume_monitor_daemon = hal_userdata->volume_monitor_daemon; -- -- /* do nothing */ --} -- --static void --_hal_device_lost_capability (LibHalContext *hal_ctx, -- const char *udi, -- const char *capability) --{ -- GnomeVFSHalUserData *hal_userdata; -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- -- hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -- volume_monitor_daemon = hal_userdata->volume_monitor_daemon; - -- /* do nothing */ --} - --static void --_hal_device_property_modified (LibHalContext *hal_ctx, -- const char *udi, -- const char *key, -- dbus_bool_t is_removed, -- dbus_bool_t is_added) --{ -- GnomeVFSHalUserData *hal_userdata; -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- -- hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -- volume_monitor_daemon = hal_userdata->volume_monitor_daemon; -- -- /* do nothing */ --} -- --static void --_hal_device_condition (LibHalContext *hal_ctx, -- const char *udi, -- const char *condition_name, -- DBusMessage *message) --{ -- GnomeVFSHalUserData *hal_userdata; -- GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon; -- -- hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -- volume_monitor_daemon = hal_userdata->volume_monitor_daemon; -- -- /* do nothing */ --} -- --static LibHalFunctions --hal_functions = { _hal_mainloop_integration, -- _hal_device_added, -- _hal_device_removed, -- _hal_device_new_capability, -- _hal_device_lost_capability, -- _hal_device_property_modified, -- _hal_device_condition }; -- --static HalStoragePolicyIconPair icon_mapping[] = { -- {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IDE, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_SCSI, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_USB, "gnome-dev-removable-usb"}, -- {HAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IEEE1394, "gnome-dev-removable-1394"}, -- {HAL_STORAGE_ICON_DRIVE_DISK, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_DISK_IDE, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_DISK_SCSI, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_DISK_USB, "gnome-dev-removable-usb"}, -- {HAL_STORAGE_ICON_DRIVE_DISK_IEEE1394, "gnome-dev-removable-1394"}, -- {HAL_STORAGE_ICON_DRIVE_CDROM, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_CDROM_IDE, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_CDROM_SCSI, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_CDROM_USB, "gnome-dev-removable-usb"}, -- {HAL_STORAGE_ICON_DRIVE_CDROM_IEEE1394, "gnome-dev-removable-1394"}, -- {HAL_STORAGE_ICON_DRIVE_FLOPPY, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_FLOPPY_IDE, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_FLOPPY_SCSI, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_FLOPPY_USB, "gnome-dev-removable-usb"}, -- {HAL_STORAGE_ICON_DRIVE_FLOPPY_IEEE1394, "gnome-dev-removable-1394"}, -- {HAL_STORAGE_ICON_DRIVE_TAPE, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_COMPACT_FLASH, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_MEMORY_STICK, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_SMART_MEDIA, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_SD_MMC, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_CAMERA, "gnome-dev-removable"}, -- {HAL_STORAGE_ICON_DRIVE_PORTABLE_AUDIO_PLAYER, "gnome-dev-removable"}, -- -- {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK, "gnome-dev-harddisk"}, -- {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IDE, "gnome-dev-harddisk"}, -- {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_SCSI, "gnome-dev-harddisk"}, -- {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_USB, "gnome-dev-harddisk-usb"}, -- {HAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IEEE1394, "gnome-dev-harddisk-1394"}, -- {HAL_STORAGE_ICON_VOLUME_DISK, "gnome-dev-harddisk"}, -- {HAL_STORAGE_ICON_VOLUME_DISK_IDE, "gnome-dev-harddisk"}, -- {HAL_STORAGE_ICON_VOLUME_DISK_SCSI, "gnome-dev-harddisk"}, -- {HAL_STORAGE_ICON_VOLUME_DISK_USB, "gnome-dev-harddisk-usb"}, -- {HAL_STORAGE_ICON_VOLUME_DISK_IEEE1394, "gnome-dev-harddisk-1394"}, -- {HAL_STORAGE_ICON_VOLUME_CDROM, "gnome-dev-cdrom"}, -- {HAL_STORAGE_ICON_VOLUME_CDROM_IDE, "gnome-dev-cdrom"}, -- {HAL_STORAGE_ICON_VOLUME_CDROM_SCSI, "gnome-dev-cdrom"}, -- {HAL_STORAGE_ICON_VOLUME_CDROM_USB, "gnome-dev-cdrom"}, -- {HAL_STORAGE_ICON_VOLUME_CDROM_IEEE1394, "gnome-dev-cdrom"}, -- {HAL_STORAGE_ICON_VOLUME_FLOPPY, "gnome-dev-floppy"}, -- {HAL_STORAGE_ICON_VOLUME_FLOPPY_IDE, "gnome-dev-floppy"}, -- {HAL_STORAGE_ICON_VOLUME_FLOPPY_SCSI, "gnome-dev-floppy"}, -- {HAL_STORAGE_ICON_VOLUME_FLOPPY_USB, "gnome-dev-floppy"}, -- {HAL_STORAGE_ICON_VOLUME_FLOPPY_IEEE1394, "gnome-dev-floppy"}, -- {HAL_STORAGE_ICON_VOLUME_TAPE, "gnome-dev-harddisk"}, -- {HAL_STORAGE_ICON_VOLUME_COMPACT_FLASH, "gnome-dev-media-cf"}, -- {HAL_STORAGE_ICON_VOLUME_MEMORY_STICK, "gnome-dev-media-ms"}, -- {HAL_STORAGE_ICON_VOLUME_SMART_MEDIA, "gnome-dev-media-sm"}, -- {HAL_STORAGE_ICON_VOLUME_SD_MMC, "gnome-dev-media-sdmmc"}, -- {HAL_STORAGE_ICON_VOLUME_CAMERA, "camera"}, -- {HAL_STORAGE_ICON_VOLUME_PORTABLE_AUDIO_PLAYER, "gnome-dev-ipod"}, -- -- {HAL_STORAGE_ICON_DISC_CDROM, "gnome-dev-cdrom"}, -- {HAL_STORAGE_ICON_DISC_CDR, "gnome-dev-cdrom"}, -- {HAL_STORAGE_ICON_DISC_CDRW, "gnome-dev-cdrom"}, -- {HAL_STORAGE_ICON_DISC_DVDROM, "gnome-dev-dvd"}, -- {HAL_STORAGE_ICON_DISC_DVDRAM, "gnome-dev-dvd"}, -- {HAL_STORAGE_ICON_DISC_DVDR, "gnome-dev-dvd"}, -- {HAL_STORAGE_ICON_DISC_DVDRW, "gnome-dev-dvd"}, -- {HAL_STORAGE_ICON_DISC_DVDPLUSR, "gnome-dev-dvd"}, -- {HAL_STORAGE_ICON_DISC_DVDPLUSRW, "gnome-dev-dvd"}, -+static LibHalStoragePolicyIconPair icon_mapping[] = { -+ {LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IDE, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_SCSI, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_USB, "gnome-dev-removable-usb"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_REMOVABLE_DISK_IEEE1394, "gnome-dev-removable-1394"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_DISK, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_DISK_IDE, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_DISK_SCSI, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_DISK_USB, "gnome-dev-removable-usb"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_DISK_IEEE1394, "gnome-dev-removable-1394"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_CDROM, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_CDROM_IDE, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_CDROM_SCSI, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_CDROM_USB, "gnome-dev-removable-usb"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_CDROM_IEEE1394, "gnome-dev-removable-1394"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_FLOPPY, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IDE, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_SCSI, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_USB, "gnome-dev-removable-usb"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_FLOPPY_IEEE1394, "gnome-dev-removable-1394"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_TAPE, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_COMPACT_FLASH, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_MEMORY_STICK, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_SMART_MEDIA, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_SD_MMC, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_CAMERA, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_PORTABLE_AUDIO_PLAYER, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_ZIP, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_JAZ, "gnome-dev-removable"}, -+ {LIBHAL_STORAGE_ICON_DRIVE_FLASH_KEY, "gnome-dev-removable"}, -+ -+ {LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK, "gnome-dev-harddisk"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IDE, "gnome-dev-harddisk"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_SCSI, "gnome-dev-harddisk"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_USB, "gnome-dev-harddisk-usb"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_REMOVABLE_DISK_IEEE1394, "gnome-dev-harddisk-1394"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_DISK, "gnome-dev-harddisk"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_DISK_IDE, "gnome-dev-harddisk"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_DISK_SCSI, "gnome-dev-harddisk"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_DISK_USB, "gnome-dev-harddisk-usb"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_DISK_IEEE1394, "gnome-dev-harddisk-1394"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_CDROM, "gnome-dev-cdrom"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_CDROM_IDE, "gnome-dev-cdrom"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_CDROM_SCSI, "gnome-dev-cdrom"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_CDROM_USB, "gnome-dev-cdrom"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_CDROM_IEEE1394, "gnome-dev-cdrom"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_FLOPPY, "gnome-dev-floppy"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IDE, "gnome-dev-floppy"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_SCSI, "gnome-dev-floppy"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_USB, "gnome-dev-floppy"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_FLOPPY_IEEE1394, "gnome-dev-floppy"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_TAPE, "gnome-dev-harddisk"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_COMPACT_FLASH, "gnome-dev-media-cf"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_MEMORY_STICK, "gnome-dev-media-ms"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_SMART_MEDIA, "gnome-dev-media-sm"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_SD_MMC, "gnome-dev-media-sdmmc"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_CAMERA, "camera"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_PORTABLE_AUDIO_PLAYER, "gnome-dev-ipod"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_ZIP, "gnome-dev-zipdisk"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_JAZ, "gnome-dev-jazdisk"}, -+ {LIBHAL_STORAGE_ICON_VOLUME_FLASH_KEY, "gnome-dev-harddisk"}, - - /* -- {HAL_STORAGE_ICON_DISC_CDROM, "gnome-dev-disc-cdrom"}, -- {HAL_STORAGE_ICON_DISC_CDR, "gnome-dev-disc-cdr"}, -- {HAL_STORAGE_ICON_DISC_CDRW, "gnome-dev-disc-cdrw"}, -- {HAL_STORAGE_ICON_DISC_DVDROM, "gnome-dev-disc-dvdrom"}, -- {HAL_STORAGE_ICON_DISC_DVDRAM, "gnome-dev-disc-dvdram"}, -- {HAL_STORAGE_ICON_DISC_DVDR, "gnome-dev-disc-dvdr"}, -- {HAL_STORAGE_ICON_DISC_DVDRW, "gnome-dev-disc-dvdrw"}, -- {HAL_STORAGE_ICON_DISC_DVDPLUSR, "gnome-dev-disc-dvdr-plus"}, -- {HAL_STORAGE_ICON_DISC_DVDPLUSRW, "gnome-dev-disc-dvdrw-plus"}, -+ {LIBHAL_STORAGE_ICON_DISC_CDROM, "gnome-dev-cdrom"}, -+ {LIBHAL_STORAGE_ICON_DISC_CDR, "gnome-dev-cdrom"}, -+ {LIBHAL_STORAGE_ICON_DISC_CDRW, "gnome-dev-cdrom"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDROM, "gnome-dev-dvd"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDRAM, "gnome-dev-dvd"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDR, "gnome-dev-dvd"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDRW, "gnome-dev-dvd"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDPLUSR, "gnome-dev-dvd"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDPLUSRW, "gnome-dev-dvd"}, - */ - -+ {LIBHAL_STORAGE_ICON_DISC_CDROM, "gnome-dev-cdrom"}, -+ {LIBHAL_STORAGE_ICON_DISC_CDR, "gnome-dev-disc-cdr"}, -+ {LIBHAL_STORAGE_ICON_DISC_CDRW, "gnome-dev-disc-cdrw"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDROM, "gnome-dev-disc-dvdrom"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDRAM, "gnome-dev-disc-dvdram"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDR, "gnome-dev-disc-dvdr"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDRW, "gnome-dev-disc-dvdrw"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDPLUSR, "gnome-dev-disc-dvdr-plus"}, -+ {LIBHAL_STORAGE_ICON_DISC_DVDPLUSRW, "gnome-dev-disc-dvdrw"}, /* missing -plus icon here! */ -+ - {0x00, NULL} - }; - -@@ -276,26 +209,52 @@ static HalStoragePolicyIconPair icon_map - gboolean - _gnome_vfs_hal_mounts_init (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) - { -+ DBusError error; -+ DBusConnection *dbus_connection; - GnomeVFSHalUserData *hal_userdata; -- HalStoragePolicy *hal_storage_policy; -+ LibHalStoragePolicy *hal_storage_policy; - - /* Initialise the connection to the hal daemon */ - if ((volume_monitor_daemon->hal_ctx = -- hal_initialize (&hal_functions, FALSE)) == NULL) { -- g_warning ("hal_initialize failed\n"); -+ libhal_ctx_new ()) == NULL) { -+ g_warning ("libhal_ctx_new failed\n"); -+ return FALSE; -+ } -+ -+ dbus_error_init (&error); -+ dbus_connection = dbus_bus_get (DBUS_BUS_SYSTEM, &error); -+ if (dbus_error_is_set (&error)) { -+ g_warning ("Error connecting to D-BUS system bus: %s\n", -+ error.message); -+ dbus_error_free (&error); -+ return FALSE; -+ } -+ dbus_connection_setup_with_g_main (dbus_connection, NULL); -+ -+ libhal_ctx_set_dbus_connection (volume_monitor_daemon->hal_ctx, -+ dbus_connection); -+ -+ libhal_ctx_set_device_added (volume_monitor_daemon->hal_ctx, -+ _hal_device_added); -+ libhal_ctx_set_device_removed (volume_monitor_daemon->hal_ctx, -+ _hal_device_removed); -+ -+ if (!libhal_ctx_init (volume_monitor_daemon->hal_ctx, &error)) { -+ g_warning ("libhal_ctx_init failed: %s\n", error.message); -+ dbus_error_free (&error); - return FALSE; - } - - - /* Setup GNOME specific policy - right now this is only icons */ -- hal_storage_policy = hal_storage_policy_new (); -- hal_storage_policy_set_icon_mapping (hal_storage_policy, icon_mapping); -+ hal_storage_policy = libhal_storage_policy_new (); -+ libhal_storage_policy_set_icon_mapping (hal_storage_policy, icon_mapping); - - /* Tie some data with the libhal context */ - hal_userdata = g_new0 (GnomeVFSHalUserData, 1); - hal_userdata->volume_monitor_daemon = volume_monitor_daemon; - hal_userdata->hal_storage_policy = hal_storage_policy; -- hal_ctx_set_user_data (volume_monitor_daemon->hal_ctx, -+ libhal_ctx_set_user_data (volume_monitor_daemon->hal_ctx, - hal_userdata); - return TRUE; - } -@@ -304,13 +263,22 @@ void - _gnome_vfs_hal_mounts_shutdown (GnomeVFSVolumeMonitorDaemon *volume_monitor_daemon) - { - GnomeVFSHalUserData *hal_userdata; -+ DBusError error; -+ -+ hal_userdata = (GnomeVFSHalUserData *) libhal_ctx_get_user_data (volume_monitor_daemon->hal_ctx); -+ libhal_storage_policy_free (hal_userdata->hal_storage_policy); - -- hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (volume_monitor_daemon->hal_ctx); -- hal_storage_policy_free (hal_userdata->hal_storage_policy); -+ dbus_error_init (&error); -+ if (!libhal_ctx_shutdown (volume_monitor_daemon->hal_ctx, &error)) { -+ g_warning ("hal_shutdown failed: %s\n", error.message); -+ dbus_error_free (&error); -+ return; -+ } - -- if (hal_shutdown (volume_monitor_daemon->hal_ctx) != 0) { -- g_warning ("hal_shutdown failed\n"); -+ if (!libhal_ctx_free (volume_monitor_daemon->hal_ctx)) { -+ g_warning ("hal_shutdown failed - unable to free hal context\n"); - } -+ - } - - /**************************************************************************/ -@@ -330,10 +298,10 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - char *drive_icon; - char *unique_drive_name; - LibHalContext *hal_ctx; -- HalDrive *hal_drive; -- HalVolume *hal_volume; -+ LibHalDrive *hal_drive; -+ LibHalVolume *hal_volume; - GnomeVFSHalUserData *hal_userdata; -- HalStoragePolicy *hal_storage_policy; -+ LibHalStoragePolicy *hal_storage_policy; - char *target_mount_point; - - hal_drive = NULL; -@@ -342,7 +310,7 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - if ((hal_ctx = volume_monitor_daemon->hal_ctx) == NULL) - goto out; - -- hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ hal_userdata = (GnomeVFSHalUserData *) libhal_ctx_get_user_data (hal_ctx); - hal_storage_policy = hal_userdata->hal_storage_policy; - - if (drive == NULL || drive->priv == NULL || drive->priv->device_path == NULL) -@@ -352,21 +320,21 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - * /dev/sda1 etc, however we get the Drive object for the parent if - * that is the case. This is a feature of libhal-storage. - */ -- if ((hal_drive = hal_drive_from_device_file (hal_ctx, drive->priv->device_path)) == NULL) { -+ if ((hal_drive = libhal_drive_from_device_file (hal_ctx, drive->priv->device_path)) == NULL) { - g_warning ("%s: no hal drive for device=%s", __FUNCTION__, drive->priv->device_path); - goto out; - } - - /* There may not be a volume object associated, so hal_volume may be NULL */ -- hal_volume = hal_volume_from_device_file (hal_ctx, drive->priv->device_path); -+ hal_volume = libhal_volume_from_device_file (hal_ctx, drive->priv->device_path); - - /* For optical discs, we manually add/remove GnomeVFSVolume optical discs without - * data (e.g. blank and pure audio) since these don't appear in the mounted filesystems - * file /etc/mtab - */ - if (hal_volume != NULL && -- hal_drive_get_type (hal_drive) == HAL_DRIVE_TYPE_CDROM && -- hal_volume_is_disc (hal_volume) && !hal_volume_disc_has_data (hal_volume)) { -+ libhal_drive_get_type (hal_drive) == LIBHAL_DRIVE_TYPE_CDROM && -+ libhal_volume_is_disc (hal_volume) && !libhal_volume_disc_has_data (hal_volume)) { - GnomeVFSVolume *volume; - char *volume_name; - char *volume_icon; -@@ -377,35 +345,35 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - gnome_vfs_volume_unref (volume); - } else { - -- volume_name = hal_volume_policy_compute_display_name ( -+ volume_name = libhal_volume_policy_compute_display_name ( - hal_drive, hal_volume, hal_storage_policy); - - /* set icon name; try dedicated icon name first... */ -- if (hal_drive_get_dedicated_icon_volume (hal_drive) != NULL) -- volume_icon = strdup (hal_drive_get_dedicated_icon_volume (hal_drive)); -+ if (libhal_drive_get_dedicated_icon_volume (hal_drive) != NULL) -+ volume_icon = strdup (libhal_drive_get_dedicated_icon_volume (hal_drive)); - else -- volume_icon = hal_volume_policy_compute_icon_name ( -+ volume_icon = libhal_volume_policy_compute_icon_name ( - hal_drive, hal_volume, hal_storage_policy); - - volume = g_object_new (GNOME_VFS_TYPE_VOLUME, NULL); -- volume->priv->hal_udi = g_strdup (hal_volume_get_udi (hal_volume)); -+ volume->priv->hal_udi = g_strdup (libhal_volume_get_udi (hal_volume)); - volume->priv->volume_type = GNOME_VFS_VOLUME_TYPE_MOUNTPOINT; - -- if (hal_volume_disc_is_blank (hal_volume)) { -+ if (libhal_volume_disc_is_blank (hal_volume)) { - /* Blank discs should open the burn:/// location */ -- volume->priv->device_path = g_strdup (hal_volume_get_device_file (hal_volume)); -+ volume->priv->device_path = g_strdup (libhal_volume_get_device_file (hal_volume)); - volume->priv->activation_uri = g_strdup ("burn:///"); -- volume->priv->unix_device = makedev (hal_volume_get_device_major (hal_volume), -- hal_volume_get_device_minor (hal_volume)); -- volume->priv->filesystem_type = g_strdup (hal_volume_get_fstype (hal_volume)); -- } else if (hal_volume_disc_has_audio (hal_volume)) { -+ volume->priv->unix_device = makedev (libhal_volume_get_device_major (hal_volume), -+ libhal_volume_get_device_minor (hal_volume)); -+ volume->priv->filesystem_type = g_strdup (libhal_volume_get_fstype (hal_volume)); -+ } else if (libhal_volume_disc_has_audio (hal_volume)) { - /* Audio discs with data should open the cdda:///dev/cdrom location */ -- volume->priv->device_path = g_strdup (hal_volume_get_device_file (hal_volume)); -+ volume->priv->device_path = g_strdup (libhal_volume_get_device_file (hal_volume)); - volume->priv->activation_uri = g_strdup_printf ( -- "cdda://%s", hal_volume_get_device_file (hal_volume)); -- volume->priv->unix_device = makedev (hal_volume_get_device_major (hal_volume), -- hal_volume_get_device_minor (hal_volume)); -- volume->priv->filesystem_type = g_strdup (hal_volume_get_fstype (hal_volume)); -+ "cdda://%s", libhal_volume_get_device_file (hal_volume)); -+ volume->priv->unix_device = makedev (libhal_volume_get_device_major (hal_volume), -+ libhal_volume_get_device_minor (hal_volume)); -+ volume->priv->filesystem_type = g_strdup (libhal_volume_get_fstype (hal_volume)); - } - - volume->priv->is_read_only = TRUE; -@@ -419,6 +387,7 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - volume->priv->is_user_visible = TRUE; - - volume->priv->drive = drive; -+ - _gnome_vfs_drive_add_mounted_volume (drive, volume); - - _gnome_vfs_volume_monitor_mounted (GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), volume); -@@ -427,7 +396,7 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - free (volume_name); - free (volume_icon); - } -- } else if (hal_volume == NULL && hal_drive_get_type (hal_drive) == HAL_DRIVE_TYPE_CDROM) { -+ } else if (hal_volume == NULL && libhal_drive_get_type (hal_drive) == LIBHAL_DRIVE_TYPE_CDROM) { - GnomeVFSVolume *volume; - - /* Remove GnomeVFSVolume with same device file */ -@@ -444,10 +413,10 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - goto out; - - /* set whether we need to eject */ -- drive->priv->must_eject_at_unmount = hal_drive_requires_eject (hal_drive); -+ drive->priv->must_eject_at_unmount = libhal_drive_requires_eject (hal_drive); - - /* set display name */ -- drive_name = hal_drive_policy_compute_display_name (hal_drive, hal_volume, hal_storage_policy); -+ drive_name = libhal_drive_policy_compute_display_name (hal_drive, hal_volume, hal_storage_policy); - unique_drive_name = _gnome_vfs_volume_monitor_uniquify_drive_name ( - GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), drive_name); - if (drive->priv->display_name != NULL) -@@ -456,10 +425,10 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - free (drive_name); - - /* set icon name; try dedicated icon name first... */ -- if (hal_drive_get_dedicated_icon_drive (hal_drive) != NULL) -- drive_icon = strdup (hal_drive_get_dedicated_icon_drive (hal_drive)); -+ if (libhal_drive_get_dedicated_icon_drive (hal_drive) != NULL) -+ drive_icon = strdup (libhal_drive_get_dedicated_icon_drive (hal_drive)); - else -- drive_icon = hal_drive_policy_compute_icon_name (hal_drive, hal_volume, hal_storage_policy); -+ drive_icon = libhal_drive_policy_compute_icon_name (hal_drive, hal_volume, hal_storage_policy); - if (drive->priv->icon != NULL) - g_free (drive->priv->icon); - drive->priv->icon = g_strdup (drive_icon); -@@ -469,7 +438,7 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - target_mount_point = NULL; - if (hal_volume != NULL) { - const char *str; -- str = hal_volume_get_mount_point (hal_volume); -+ str = libhal_volume_get_mount_point (hal_volume); - if (str != NULL) - target_mount_point = g_strdup (str); - } -@@ -479,18 +448,18 @@ _gnome_vfs_hal_mounts_modify_drive (Gnom - target_mount_point = gnome_vfs_get_local_path_from_uri (drive->priv->activation_uri); - - /* if we don't use removable media and the volume shouldn't be visible, then hide the drive */ -- if(!hal_drive_uses_removable_media (hal_drive) && -- !hal_volume_policy_should_be_visible (hal_drive, hal_volume, hal_storage_policy, target_mount_point)) -+ if(!libhal_drive_uses_removable_media (hal_drive) && -+ !libhal_volume_policy_should_be_visible (hal_drive, hal_volume, hal_storage_policy, target_mount_point)) - drive->priv->is_user_visible = FALSE; - - g_free (target_mount_point); - - /* set hal udi */ -- drive->priv->hal_udi = g_strdup (hal_drive_get_udi (hal_drive)); -+ drive->priv->hal_udi = g_strdup (libhal_drive_get_udi (hal_drive)); - - out: -- hal_volume_free (hal_volume); -- hal_drive_free (hal_drive); -+ libhal_volume_free (hal_volume); -+ libhal_drive_free (hal_drive); - } - - void -@@ -501,10 +470,10 @@ _gnome_vfs_hal_mounts_modify_volume (Gno - char *volume_icon; - char *unique_volume_name; - LibHalContext *hal_ctx; -- HalDrive *hal_drive; -- HalVolume *hal_volume; -+ LibHalDrive *hal_drive; -+ LibHalVolume *hal_volume; - GnomeVFSHalUserData *hal_userdata; -- HalStoragePolicy *hal_storage_policy; -+ LibHalStoragePolicy *hal_storage_policy; - char *target_mount_point; - - hal_volume = NULL; -@@ -515,7 +484,7 @@ _gnome_vfs_hal_mounts_modify_volume (Gno - if (volume == NULL || volume->priv == NULL || volume->priv->device_path == NULL) - goto out; - -- hal_userdata = (GnomeVFSHalUserData *) hal_ctx_get_user_data (hal_ctx); -+ hal_userdata = (GnomeVFSHalUserData *) libhal_ctx_get_user_data (hal_ctx); - hal_storage_policy = hal_userdata->hal_storage_policy; - - /* Now, modify the drive with the hal stuff, unless we've already done so */ -@@ -526,17 +495,17 @@ _gnome_vfs_hal_mounts_modify_volume (Gno - * /dev/sda1 etc, however we get the Drive object for the parent if - * that is the case. This is a feature of libhal-storage. - */ -- if ((hal_drive = hal_drive_from_device_file (hal_ctx, volume->priv->device_path)) == NULL) { -+ if ((hal_drive = libhal_drive_from_device_file (hal_ctx, volume->priv->device_path)) == NULL) { - g_warning ("%s: no hal drive for device=%s", __FUNCTION__, volume->priv->device_path); - goto out; - } -- if ((hal_volume = hal_volume_from_device_file (hal_ctx, volume->priv->device_path)) == NULL) { -+ if ((hal_volume = libhal_volume_from_device_file (hal_ctx, volume->priv->device_path)) == NULL) { - g_warning ("%s: no hal volume for device=%s", __FUNCTION__, volume->priv->device_path); - goto out; - } - - /* set display name */ -- volume_name = hal_volume_policy_compute_display_name (hal_drive, hal_volume, hal_storage_policy); -+ volume_name = libhal_volume_policy_compute_display_name (hal_drive, hal_volume, hal_storage_policy); - unique_volume_name = _gnome_vfs_volume_monitor_uniquify_volume_name ( - GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), volume_name); - if (volume->priv->display_name != NULL) -@@ -545,10 +514,10 @@ _gnome_vfs_hal_mounts_modify_volume (Gno - free (volume_name); - - /* set icon name; try dedicated icon name first... */ -- if (hal_drive_get_dedicated_icon_volume (hal_drive) != NULL) -- volume_icon = strdup (hal_drive_get_dedicated_icon_volume (hal_drive)); -+ if (libhal_drive_get_dedicated_icon_volume (hal_drive) != NULL) -+ volume_icon = strdup (libhal_drive_get_dedicated_icon_volume (hal_drive)); - else -- volume_icon = hal_volume_policy_compute_icon_name (hal_drive, hal_volume, hal_storage_policy); -+ volume_icon = libhal_volume_policy_compute_icon_name (hal_drive, hal_volume, hal_storage_policy); - if (volume->priv->icon != NULL) - g_free (volume->priv->icon); - volume->priv->icon = g_strdup (volume_icon); -@@ -558,7 +527,7 @@ _gnome_vfs_hal_mounts_modify_volume (Gno - target_mount_point = NULL; - { - const char *str; -- str = hal_volume_get_mount_point (hal_volume); -+ str = libhal_volume_get_mount_point (hal_volume); - if (str != NULL) - target_mount_point = g_strdup (str); - } -@@ -569,16 +538,16 @@ _gnome_vfs_hal_mounts_modify_volume (Gno - - /* set whether it's visible on the desktop */ - volume->priv->is_user_visible = -- hal_volume_policy_should_be_visible (hal_drive, hal_volume, hal_storage_policy, target_mount_point) && -- (hal_drive_is_hotpluggable (hal_drive) || hal_drive_uses_removable_media (hal_drive)); -+ libhal_volume_policy_should_be_visible (hal_drive, hal_volume, hal_storage_policy, target_mount_point) && -+ (libhal_drive_is_hotpluggable (hal_drive) || libhal_drive_uses_removable_media (hal_drive)); - - g_free (target_mount_point); - - /* set hal udi */ -- volume->priv->hal_udi = g_strdup (hal_volume_get_udi (hal_volume)); -+ volume->priv->hal_udi = g_strdup (libhal_volume_get_udi (hal_volume)); - out: -- hal_drive_free (hal_drive); -- hal_volume_free (hal_volume); -+ libhal_drive_free (hal_drive); -+ libhal_volume_free (hal_volume); - } - - #endif /* USE_HAL */ diff --git a/gnome-vfs-atexit-fix.patch b/gnome-vfs-atexit-fix.patch deleted file mode 100644 index ada129e..0000000 --- a/gnome-vfs-atexit-fix.patch +++ /dev/null @@ -1,36 +0,0 @@ -Index: libgnomevfs/gnome-vfs-module-callback.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-module-callback.c,v -retrieving revision 1.10 -diff -u -p -r1.10 gnome-vfs-module-callback.c ---- libgnomevfs/gnome-vfs-module-callback.c 14 Nov 2005 11:41:13 -0000 1.10 -+++ libgnomevfs/gnome-vfs-module-callback.c 7 Nov 2006 09:03:37 -0000 -@@ -411,11 +411,17 @@ stack_table_destroy (gpointer specific) - stack_table = specific; - - g_static_mutex_lock (&callback_table_lock); -- g_hash_table_remove (stack_tables_to_free, stack_table); -+ if (stack_tables_to_free != NULL) { -+ g_hash_table_remove (stack_tables_to_free, stack_table); -+ } else { -+ stack_table = NULL; -+ } - g_static_mutex_unlock (&callback_table_lock); - -- clear_stack_table (stack_table); -- g_hash_table_destroy (stack_table); -+ if (stack_table) { -+ clear_stack_table (stack_table); -+ g_hash_table_destroy (stack_table); -+ } - } - - static gboolean -@@ -440,6 +446,7 @@ free_stack_tables_to_free (void) - g_static_mutex_lock (&callback_table_lock); - g_hash_table_foreach_remove (stack_tables_to_free, stack_table_free_hr_func , NULL); - g_hash_table_destroy (stack_tables_to_free); -+ stack_tables_to_free = NULL; - g_static_mutex_unlock (&callback_table_lock); - } - diff --git a/gnome-vfs-avahi.patch b/gnome-vfs-avahi.patch deleted file mode 100644 index 1beba50..0000000 --- a/gnome-vfs-avahi.patch +++ /dev/null @@ -1,661 +0,0 @@ ---- gnome-vfs-2.13.1/modules/dns-sd-method.c.avahi 2005-12-02 13:32:54.000000000 -0500 -+++ gnome-vfs-2.13.1/modules/dns-sd-method.c 2005-12-02 13:33:07.000000000 -0500 -@@ -31,7 +31,9 @@ - - #ifdef HAVE_AVAHI - #include -+#include - #include -+#include - #include - #include - #endif -@@ -320,7 +322,7 @@ - AvahiSimplePoll *poll; - - poll = user_data; -- if (state == AVAHI_CLIENT_DISCONNECTED) { -+ if (state == AVAHI_CLIENT_FAILURE) { - avahi_simple_poll_quit (poll); - } - } -@@ -333,12 +335,18 @@ - const char *name, - const char *type, - const char *domain, -+ AvahiLookupResultFlags flags, - void *user_data) - { -+ AvahiSimplePoll *poll = user_data; -+ - if (event == AVAHI_BROWSER_NEW) - local_browse (TRUE, name, type, domain); - else if (event == AVAHI_BROWSER_REMOVE) - local_browse (FALSE, name, type, domain); -+ else if (event == AVAHI_BROWSER_ALL_FOR_NOW) -+ avahi_simple_poll_quit (poll); -+ - } - - static void -@@ -385,7 +393,7 @@ - } - - poll = avahi_simple_poll_get (simple_poll); -- client = avahi_client_new (poll, -+ client = avahi_client_new (poll, 0, - avahi_client_callback, simple_poll, &error); - - /* Check wether creating the client object succeeded */ -@@ -400,7 +408,8 @@ - for (i = 0; i < G_N_ELEMENTS (dns_sd_types); i++) { - sb[i] = avahi_service_browser_new (client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, - dns_sd_types[i].type, "local", -- local_browse_callback_sync, NULL); -+ AVAHI_LOOKUP_USE_MULTICAST, -+ local_browse_callback_sync, simple_poll); - } - - ---- gnome-vfs-2.13.1/libgnomevfs/gnome-vfs-dns-sd.c.avahi 2005-12-02 13:32:36.000000000 -0500 -+++ gnome-vfs-2.13.1/libgnomevfs/gnome-vfs-dns-sd.c 2005-12-02 13:33:21.000000000 -0500 -@@ -36,6 +36,15 @@ - #include - #include - -+#ifdef HAVE_AVAHI -+#include -+#include -+#include -+#include -+#include -+#include -+#endif -+ - #ifdef HAVE_HOWL - /* Need to work around howl exporting its config file... */ - #undef PACKAGE -@@ -722,6 +731,60 @@ - - /* multicast DNS functions */ - -+#ifdef HAVE_AVAHI -+static AvahiClient *global_client = NULL; -+static gboolean avahi_initialized = FALSE; -+ -+static AvahiClient *get_global_avahi_client (void); -+ -+/* Callback for state changes on the Client */ -+static void -+avahi_client_callback (AvahiClient *client, AvahiClientState state, void *userdata) -+{ -+ if (state == AVAHI_CLIENT_FAILURE) { -+ if (avahi_client_errno (client) == AVAHI_ERR_DISCONNECTED) { -+ /* Destroy old client */ -+ avahi_client_free (client); -+ global_client = NULL; -+ avahi_initialized = FALSE; -+ -+ /* Reconnect */ -+ get_global_avahi_client (); -+ } -+ } -+} -+ -+static AvahiClient * -+get_global_avahi_client (void) { -+ static AvahiGLibPoll *glib_poll = NULL; -+ int error; -+ -+ if (!avahi_initialized) { -+ if (glib_poll == NULL) { -+ glib_poll = avahi_glib_poll_new (NULL, G_PRIORITY_DEFAULT); -+ } -+ -+ /* Create a new AvahiClient instance */ -+ global_client = avahi_client_new (avahi_glib_poll_get (glib_poll), -+ AVAHI_CLIENT_NO_FAIL, -+ avahi_client_callback, -+ glib_poll, -+ &error); -+ -+ if (global_client == NULL) { -+ /* Print out the error string */ -+ g_warning ("Error initializing Avahi: %s", avahi_strerror (error)); -+ avahi_glib_poll_free (glib_poll); -+ glib_poll = NULL; -+ return NULL; -+ } -+ avahi_initialized = TRUE; -+ } -+ -+ return global_client; -+} -+#endif -+ - #ifdef HAVE_HOWL - - static gboolean -@@ -788,6 +851,10 @@ - - /* multicast: */ - -+#ifdef HAVE_AVAHI -+ AvahiServiceBrowser *avahi_sb; -+#endif -+ - #ifdef HAVE_HOWL - sw_discovery_oid howl_id; - #endif -@@ -864,6 +931,41 @@ - return NULL; - } - -+#ifdef HAVE_AVAHI -+static void -+avahi_browse_callback (AvahiServiceBrowser *b, -+ AvahiIfIndex interface, -+ AvahiProtocol protocol, -+ AvahiBrowserEvent event, -+ const char *name, -+ const char *type, -+ const char *domain, -+ AvahiLookupResultFlags flags, -+ void *userdata) -+{ -+ GnomeVFSDNSSDBrowseHandle *handle; -+ GnomeVFSDNSSDService service; -+ handle = userdata; -+ -+ service.name = (char *)name; -+ service.type = (char *)type; -+ service.domain = (char *)domain; -+ -+ if (event == AVAHI_BROWSER_FAILURE || -+ event == AVAHI_BROWSER_ALL_FOR_NOW || -+ event == AVAHI_BROWSER_CACHE_EXHAUSTED) { -+ return; -+ } -+ -+ if (!handle->cancelled) { -+ handle->callback (handle, -+ (event == AVAHI_BROWSER_NEW) ? GNOME_VFS_DNS_SD_SERVICE_ADDED : GNOME_VFS_DNS_SD_SERVICE_REMOVED, -+ &service, -+ handle->callback_data); -+ } -+} -+#endif -+ - #ifdef HAVE_HOWL - - struct howl_browse_idle_data { -@@ -1012,7 +1114,25 @@ - handle->callback_data_destroy_func = callback_data_destroy_func; - - if (strcmp (domain, "local") == 0) { --#ifdef HAVE_HOWL -+#ifdef HAVE_AVAHI -+ AvahiClient *client; -+ AvahiServiceBrowser *sb; -+ -+ handle->is_local = TRUE; -+ client = get_global_avahi_client (); -+ if (client) { -+ sb = avahi_service_browser_new (client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, type, NULL, -+ AVAHI_LOOKUP_USE_MULTICAST, -+ avahi_browse_callback, handle); -+ if (sb != NULL) { -+ handle->avahi_sb = sb; -+ *handle_out = handle; -+ return GNOME_VFS_OK; -+ } -+ g_warning ("Failed to create service browser: %s\n", avahi_strerror( avahi_client_errno (client))); -+ } -+ return GNOME_VFS_ERROR_GENERIC; -+#elif defined (HAVE_HOWL) - sw_result res; - sw_discovery session; - -@@ -1063,6 +1183,11 @@ - gnome_vfs_dns_sd_stop_browse (GnomeVFSDNSSDBrowseHandle *handle) - { - if (handle->is_local) { -+#ifdef HAVE_AVAHI -+ handle->cancelled = TRUE; -+ avahi_service_browser_free (handle->avahi_sb); -+ free_browse_handle (handle); -+#endif - #ifdef HAVE_HOWL - handle->cancelled = TRUE; - sw_discovery_cancel (get_global_howl_session (), handle->howl_id); -@@ -1093,6 +1218,10 @@ - int text_len; - - /* multicast: */ -+#ifdef HAVE_AVAHI -+ AvahiServiceResolver *avahi_sr; -+#endif -+ - #ifdef HAVE_HOWL - sw_discovery_oid howl_id; - guint timeout_tag; -@@ -1174,6 +1303,71 @@ - return NULL; - } - -+#ifdef HAVE_AVAHI -+static void -+avahi_resolve_async_callback (AvahiServiceResolver *r, -+ AvahiIfIndex interface, -+ AvahiProtocol protocol, -+ AvahiResolverEvent event, -+ const char *name, -+ const char *type, -+ const char *domain, -+ const char *host_name, -+ const AvahiAddress *address, -+ uint16_t port, -+ AvahiStringList *txt, -+ AvahiLookupResultFlags flags, -+ void *user_data) -+{ -+ GnomeVFSDNSSDResolveHandle *handle; -+ GnomeVFSDNSSDService service; -+ GHashTable *hash; -+ size_t text_len; -+ char *text; -+ char host[128]; -+ -+ handle = user_data; -+ if (event == AVAHI_RESOLVER_FOUND) { -+ text_len = avahi_string_list_serialize (txt, NULL, 0); -+ text = g_malloc (text_len); -+ text_len = avahi_string_list_serialize (txt, text, text_len); -+ -+ hash = decode_txt_record (text, text_len); -+ -+ service.name = (char *)name; -+ service.type = (char *)type; -+ service.domain = (char *)domain; -+ -+ avahi_address_snprint (host, sizeof(host), address); -+ handle->callback (handle, -+ GNOME_VFS_OK, -+ &service, -+ host, -+ port, -+ hash, -+ handle->text_len, -+ handle->text, -+ handle->callback_data); -+ if (hash) { -+ g_hash_table_destroy (hash); -+ } -+ g_free (text); -+ -+ } else if (event == AVAHI_RESOLVER_FAILURE) { -+ handle->callback (handle, -+ GNOME_VFS_ERROR_HOST_NOT_FOUND, -+ NULL, -+ NULL, 0, -+ NULL, 0, NULL, -+ handle->callback_data); -+ } -+ -+ avahi_service_resolver_free (r); -+ free_resolve_handle (handle); -+} -+ -+#endif -+ - - #ifdef HAVE_HOWL - static gboolean -@@ -1329,7 +1523,25 @@ - handle->callback_data_destroy_func = callback_data_destroy_func; - - if (strcmp (domain, "local") == 0) { --#ifdef HAVE_HOWL -+#ifdef HAVE_AVAHI -+ AvahiClient *client; -+ AvahiServiceResolver *sr; -+ -+ handle->is_local = TRUE; -+ client = get_global_avahi_client (); -+ if (client) { -+ sr = avahi_service_resolver_new (client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, -+ name, type, domain, AVAHI_PROTO_UNSPEC, -+ AVAHI_LOOKUP_USE_MULTICAST, -+ avahi_resolve_async_callback, handle); -+ if (sr != NULL) { -+ handle->avahi_sr = sr; -+ *handle_out = handle; -+ return GNOME_VFS_OK; -+ } -+ } -+ return GNOME_VFS_ERROR_GENERIC; -+#elif defined (HAVE_HOWL) - sw_result res; - sw_discovery session; - -@@ -1386,6 +1598,10 @@ - gnome_vfs_dns_sd_cancel_resolve (GnomeVFSDNSSDResolveHandle *handle) - { - if (handle->is_local) { -+#ifdef HAVE_AVAHI -+ avahi_service_resolver_free (handle->avahi_sr); -+ free_resolve_handle (handle); -+#endif - #ifdef HAVE_HOWL - g_source_remove (handle->timeout_tag); - if (handle->idle_tag) { -@@ -1408,8 +1624,7 @@ - } - } - -- --#ifdef HAVE_HOWL -+#if defined(HAVE_AVAHI) || defined(HAVE_HOWL) - static int - find_existing_service (GArray *array, - const char *name, -@@ -1430,6 +1645,89 @@ - return -1; - - } -+#endif -+ -+ -+#ifdef HAVE_AVAHI -+struct sync_browse_data { -+ AvahiSimplePoll *poll; -+ GArray *array; -+}; -+ -+static void -+avahi_browse_sync_client_callback (AvahiClient *client, AvahiClientState state, void *user_data) -+{ -+ struct sync_browse_data *data; -+ -+ data = user_data; -+ if (state == AVAHI_CLIENT_FAILURE) { -+ avahi_simple_poll_quit (data->poll); -+ } -+} -+ -+static void -+avahi_browse_sync_callback (AvahiServiceBrowser *b, -+ AvahiIfIndex interface, -+ AvahiProtocol protocol, -+ AvahiBrowserEvent event, -+ const char *name, -+ const char *type, -+ const char *domain, -+ AvahiLookupResultFlags flags, -+ void *user_data) -+{ -+ struct sync_browse_data *data; -+ GnomeVFSDNSSDService service, *existing; -+ int i; -+ gboolean free_service; -+ -+ data = user_data; -+ -+ free_service = TRUE; -+ service.name = g_strdup (name); -+ service.type = g_strdup (type); -+ service.domain = g_strdup (domain); -+ -+ if (event == AVAHI_BROWSER_NEW) { -+ if (find_existing_service (data->array, service.name, service.type, -+ service.domain) == -1) { -+ free_service = FALSE; -+ g_array_append_val (data->array, service); -+ } -+ } else if (event == AVAHI_BROWSER_REMOVE) { -+ i = find_existing_service (data->array, service.name, service.type, -+ service.domain); -+ if (i != -1) { -+ existing = &g_array_index (data->array, GnomeVFSDNSSDService, i); -+ g_free (existing->name); -+ g_free (existing->type); -+ g_free (existing->domain); -+ g_array_remove_index (data->array, i); -+ } -+ } else if (event == AVAHI_BROWSER_ALL_FOR_NOW) { -+ avahi_simple_poll_quit (data->poll); -+ } -+ -+ -+ if (free_service) { -+ g_free (service.name); -+ g_free (service.type); -+ g_free (service.domain); -+ } -+} -+ -+static void -+stop_poll_timeout (AvahiTimeout *timeout, void *user_data) -+{ -+ AvahiSimplePoll *poll = user_data; -+ -+ avahi_simple_poll_quit (poll); -+} -+ -+#endif -+ -+ -+#ifdef HAVE_HOWL - - - static sw_result -@@ -1530,7 +1828,66 @@ - *services = NULL; - - if (strcmp (domain, "local") == 0) { --#ifdef HAVE_HOWL -+#ifdef HAVE_AVAHI -+ AvahiSimplePoll *simple_poll; -+ const AvahiPoll *poll; -+ AvahiClient *client = NULL; -+ AvahiServiceBrowser *sb; -+ int error; -+ GArray *array; -+ struct sync_browse_data data; -+ struct timeval tv; -+ -+ simple_poll = avahi_simple_poll_new (); -+ data.poll = simple_poll; -+ if (simple_poll == NULL) { -+ g_warning ("Failed to create simple poll object"); -+ return GNOME_VFS_ERROR_GENERIC; -+ } -+ -+ poll = avahi_simple_poll_get (simple_poll); -+ client = avahi_client_new (poll, 0, -+ avahi_browse_sync_client_callback, &data, &error); -+ -+ /* Check wether creating the client object succeeded */ -+ if (client == NULL) { -+ g_warning ("Failed to create client: %s\n", avahi_strerror (error)); -+ avahi_simple_poll_free (simple_poll); -+ return GNOME_VFS_ERROR_GENERIC; -+ } -+ -+ -+ array = g_array_new (FALSE, FALSE, sizeof (GnomeVFSDNSSDService)); -+ data.array = array; -+ sb = avahi_service_browser_new (client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, type, NULL, -+ AVAHI_LOOKUP_USE_MULTICAST, avahi_browse_sync_callback, &data); -+ if (sb == NULL) { -+ g_warning ("Failed to create service browser: %s\n", avahi_strerror (avahi_client_errno (client))); -+ g_array_free (array, TRUE); -+ avahi_client_free (client); -+ avahi_simple_poll_free (simple_poll); -+ return GNOME_VFS_ERROR_GENERIC; -+ } -+ -+ -+ avahi_elapse_time (&tv, timeout_msec, 0); -+ poll->timeout_new (poll, &tv, stop_poll_timeout, (void *)simple_poll); -+ -+ /* Run the main loop util reply or timeout */ -+ for (;;) -+ if (avahi_simple_poll_iterate (simple_poll, -1) != 0) -+ break; -+ -+ -+ avahi_service_browser_free (sb); -+ avahi_client_free (client); -+ avahi_simple_poll_free (simple_poll); -+ -+ *n_services = array->len; -+ *services = (GnomeVFSDNSSDService *)g_array_free (array, FALSE); -+ -+ return GNOME_VFS_OK; -+#elif defined (HAVE_HOWL) - sw_discovery session; - sw_salt salt; - sw_result res; -@@ -1599,6 +1956,63 @@ - } - } - -+#ifdef HAVE_AVAHI -+struct sync_resolve_data { -+ AvahiSimplePoll *poll; -+ gboolean got_data; -+ char *host; -+ int port; -+ char *text; -+ int text_len; -+}; -+ -+ -+static void -+avahi_resolve_sync_client_callback (AvahiClient *c, AvahiClientState state, void *user_data) -+{ -+ struct sync_resolve_data *data; -+ -+ data = user_data; -+ if (state == AVAHI_CLIENT_FAILURE) { -+ avahi_simple_poll_quit (data->poll); -+ } -+} -+ -+static void -+avahi_resolve_sync_callback (AvahiServiceResolver *r, -+ AvahiIfIndex interface, -+ AvahiProtocol protocol, -+ AvahiResolverEvent event, -+ const char *name, -+ const char *type, -+ const char *domain, -+ const char *host_name, -+ const AvahiAddress *address, -+ uint16_t port, -+ AvahiStringList *txt, -+ AvahiLookupResultFlags flags, -+ void *user_data) -+{ -+ struct sync_resolve_data *data; -+ char a[128]; -+ -+ data = user_data; -+ if (event == AVAHI_RESOLVER_FOUND) { -+ data->got_data = TRUE; -+ avahi_address_snprint (a, sizeof(a), address); -+ data->host = g_strdup (a); -+ data->port = port; -+ data->text_len = avahi_string_list_serialize (txt, NULL, 0); -+ data->text = g_malloc (data->text_len); -+ avahi_string_list_serialize (txt, data->text, data->text_len); -+ } -+ -+ avahi_service_resolver_free (r); -+ avahi_simple_poll_quit (data->poll); -+} -+ -+#endif -+ - #ifdef HAVE_HOWL - struct sync_resolve_data { - gboolean got_data; -@@ -1672,7 +2086,65 @@ - GnomeVFSResult res; - - if (strcmp (domain, "local") == 0) { --#ifdef HAVE_HOWL -+#ifdef HAVE_AVAHI -+ AvahiSimplePoll *simple_poll; -+ AvahiClient *client = NULL; -+ AvahiServiceResolver *sr; -+ int error; -+ struct sync_resolve_data resolve_data = {0}; -+ -+ simple_poll = avahi_simple_poll_new (); -+ resolve_data.poll = simple_poll; -+ if (simple_poll == NULL) { -+ g_warning ("Failed to create simple poll object"); -+ return GNOME_VFS_ERROR_GENERIC; -+ } -+ -+ client = avahi_client_new (avahi_simple_poll_get (simple_poll), 0, -+ avahi_resolve_sync_client_callback, &resolve_data, &error); -+ -+ /* Check wether creating the client object succeeded */ -+ if (client == NULL) { -+ g_warning ("Failed to create client: %s\n", avahi_strerror (error)); -+ avahi_simple_poll_free (simple_poll); -+ return GNOME_VFS_ERROR_GENERIC; -+ } -+ -+ sr = avahi_service_resolver_new (client, AVAHI_IF_UNSPEC, AVAHI_PROTO_UNSPEC, -+ name, type, domain, AVAHI_PROTO_UNSPEC, -+ AVAHI_LOOKUP_USE_MULTICAST, -+ avahi_resolve_sync_callback, &resolve_data); -+ if (sr == NULL) { -+ g_warning ("Failed to resolve service '%s': %s\n", name, avahi_strerror (avahi_client_errno (client))); -+ avahi_client_free (client); -+ avahi_simple_poll_free (simple_poll); -+ return GNOME_VFS_ERROR_GENERIC; -+ } -+ -+ /* Run the main loop util reply or timeout */ -+ for (;;) -+ if (avahi_simple_poll_iterate (simple_poll, -1) != 0) -+ break; -+ -+ avahi_client_free (client); -+ avahi_simple_poll_free (simple_poll); -+ -+ if (resolve_data.got_data) { -+ *host = resolve_data.host; -+ *port = resolve_data.port; -+ if (text != NULL) -+ *text = decode_txt_record (resolve_data.text, resolve_data.text_len); -+ if (text_raw_len_out != NULL && text_raw_out) { -+ *text_raw_len_out = resolve_data.text_len; -+ *text_raw_out = resolve_data.text; -+ } else { -+ g_free (resolve_data.text); -+ } -+ return GNOME_VFS_OK; -+ } -+ -+ return GNOME_VFS_ERROR_HOST_NOT_FOUND; -+#elif defined (HAVE_HOWL) - sw_discovery session; - sw_salt salt; - sw_result res; ---- gnome-vfs-2.13.1/configure.in.avahi 2005-12-02 13:34:02.000000000 -0500 -+++ gnome-vfs-2.13.1/configure.in 2005-12-02 13:34:27.000000000 -0500 -@@ -662,7 +662,7 @@ - AC_ARG_ENABLE(avahi, [ --disable-avahi build without avahi support]) - msg_avahi=no - if test "x$enable_avahi" != "xno"; then -- PKG_CHECK_MODULES(AVAHI, avahi-glib avahi-client, -+ PKG_CHECK_MODULES(AVAHI, avahi-glib >= 0.6 avahi-client >= 0.6, - [AM_CONDITIONAL(HAVE_AVAHI, true) - AC_DEFINE(HAVE_AVAHI, [], [Set if we can use avahi])] - msg_avahi=yes, diff --git a/gnome-vfs-handle-drives-without-media-detection.patch b/gnome-vfs-handle-drives-without-media-detection.patch deleted file mode 100644 index 6486369..0000000 --- a/gnome-vfs-handle-drives-without-media-detection.patch +++ /dev/null @@ -1,32 +0,0 @@ -Index: libgnomevfs/gnome-vfs-hal-mounts.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/libgnomevfs/gnome-vfs-hal-mounts.c,v -retrieving revision 1.15 -diff -u -p -r1.15 gnome-vfs-hal-mounts.c ---- libgnomevfs/gnome-vfs-hal-mounts.c 23 Jul 2005 22:28:15 -0000 1.15 -+++ libgnomevfs/gnome-vfs-hal-mounts.c 10 Aug 2005 20:50:50 -0000 -@@ -1475,6 +1475,24 @@ _gnome_vfs_hal_mounts_modify_volume (Gno - */ - hal_drive = libhal_drive_from_device_file (hal_ctx, volume->priv->device_path); - if (hal_drive != NULL) { -+ -+ /* handle drives that HAL can't poll and the user can still mount */ -+ if (libhal_device_get_property_bool (hal_ctx, -+ libhal_drive_get_udi (hal_drive), -+ "storage.media_check_enabled", -+ NULL) == FALSE) { -+ GnomeVFSDrive *drive; -+ -+ if ((drive = _gnome_vfs_volume_monitor_find_drive_by_hal_udi ( -+ GNOME_VFS_VOLUME_MONITOR (volume_monitor_daemon), -+ libhal_drive_get_udi (hal_drive))) != NULL) { -+ volume->priv->drive = drive; -+ _gnome_vfs_drive_add_mounted_volume (drive, volume); -+ -+ goto out; -+ } -+ } -+ - /* ok, this device file is in HAL and thus managed by this backend */ - gnome_vfs_volume_unref (volume); - result = NULL; diff --git a/gnome-vfs-mime-cache.patch b/gnome-vfs-mime-cache.patch deleted file mode 100644 index 83d1a03..0000000 --- a/gnome-vfs-mime-cache.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up gnome-vfs-2.20.1/configure.in.mime-cache gnome-vfs-2.20.1/configure.in ---- gnome-vfs-2.20.1/configure.in.mime-cache 2007-12-03 00:45:24.000000000 -0500 -+++ gnome-vfs-2.20.1/configure.in 2007-12-03 00:41:43.000000000 -0500 -@@ -158,7 +158,7 @@ AC_SEARCH_LIBS(setsockopt, socket) - AC_SEARCH_LIBS(login_tty, util, [AC_DEFINE([HAVE_LOGIN_TTY],[],[Whether login_tty is available])]) - - AC_FUNC_ALLOCA --AC_CHECK_FUNCS(getdtablesize open64 lseek64 statfs statvfs seteuid setegid setresuid setresgid readdir_r mbrtowc inet_pton getdelim sysctlbyname poll posix_fadvise fchmod atoll) -+AC_CHECK_FUNCS(getdtablesize open64 lseek64 statfs statvfs seteuid setegid setresuid setresgid readdir_r mbrtowc inet_pton getdelim sysctlbyname poll posix_fadvise fchmod atoll mmap) - AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_rdev]) - AC_STRUCT_ST_BLOCKS - diff --git a/gnome-vfs2-2.5.5-vfolder-hacks.patch b/gnome-vfs2-2.5.5-vfolder-hacks.patch deleted file mode 100644 index fbcb901..0000000 --- a/gnome-vfs2-2.5.5-vfolder-hacks.patch +++ /dev/null @@ -1,550 +0,0 @@ ---- gnome-vfs-2.5.5/libgnomevfs/Makefile.am.vfolder-hacks 2004-01-08 03:31:06.000000000 -0500 -+++ gnome-vfs-2.5.5/libgnomevfs/Makefile.am 2004-01-29 18:44:53.000000000 -0500 -@@ -19,6 +19,7 @@ - -DGNOMEVFS_LOCALEDIR=\"$(prefix)/@DATADIRNAME@/locale\" \ - -DSYSCONFDIR=\"$(sysconfdir)\" \ - -DG_LOG_DOMAIN=\"libgnomevfs\" \ -+ -I/usr/kerberos/include \ - $(NULL) - - libgnomevfs_headers_to_scan_for_enums = \ ---- gnome-vfs-2.5.5/modules/vfolder/vfolder-common.c.vfolder-hacks 2003-04-24 11:46:24.000000000 -0400 -+++ gnome-vfs-2.5.5/modules/vfolder/vfolder-common.c 2004-01-29 18:44:53.000000000 -0500 -@@ -61,7 +61,8 @@ - entry->weight = weight; - - entry->dirty = TRUE; -- -+ entry->not_shown = FALSE; -+ - /* - * Lame-O special case .directory handling, as we don't want them - * showing up for all-applications:///. -@@ -201,7 +202,7 @@ - entry_reload_if_needed (Entry *entry) - { - gboolean changed = FALSE; -- gchar *keywords, *deprecates; -+ gchar *keywords, *deprecates, *onlyshowin; - int i; - - if (!entry->dirty) -@@ -211,8 +212,17 @@ - "Categories", - &keywords, - "Deprecates", -- &deprecates); -- -+ &deprecates, -+ "OnlyShowIn", -+ &onlyshowin); -+ -+#if 0 -+ g_printerr ("Read cats=%s onlyshowin=%s from entry %s\n", -+ keywords ? keywords : "none", -+ onlyshowin ? onlyshowin : "none", -+ entry->filename); -+#endif -+ - /* - * Clear keywords from file, leaving only ones added from - * the directory. -@@ -269,8 +279,28 @@ - g_strfreev (parsed); - } - -+ if (onlyshowin) { -+ char **parsed = g_strsplit (onlyshowin, ";", -1); -+ -+ /* If OnlyShowIn exists, then the default is -+ * that we don't show the entry, unless the -+ * value includes "GNOME" -+ */ -+ entry->not_shown = TRUE; -+ -+ for (i = 0; parsed[i] != NULL; i++) { -+ if (strcmp (parsed[i], "GNOME") == 0) -+ entry->not_shown = FALSE; -+ } -+ -+ /* FIXME do we need to emit some kind of notification here? */ -+ -+ g_strfreev (parsed); -+ } -+ - g_free (keywords); - g_free (deprecates); -+ g_free (onlyshowin); - - entry->dirty = FALSE; - } -@@ -380,7 +410,9 @@ - const gchar *key1, - gchar **result1, - const gchar *key2, -- gchar **result2) -+ gchar **result2, -+ const gchar *key3, -+ gchar **result3) - { - GnomeVFSHandle *handle; - GnomeVFSFileSize readlen; -@@ -389,7 +421,9 @@ - - *result1 = NULL; - if (key2) -- *result2 = NULL; -+ *result2 = NULL; -+ if (key3) -+ *result3 = NULL; - - if (gnome_vfs_open (&handle, - entry_get_filename (entry), -@@ -416,6 +450,9 @@ - if (key2) - entry_key_val_from_string (fullbuf->str, key2, result2); - -+ if (key3) -+ entry_key_val_from_string (fullbuf->str, key3, result3); -+ - g_string_free (fullbuf, TRUE); - } - -@@ -458,7 +495,7 @@ - folder->refcnt = 1; - - folder->dirty = TRUE; -- -+ - return folder; - } - -@@ -832,6 +869,10 @@ - { - Query *query = folder_get_query (folder); - -+#if 0 -+ g_printerr ("reading one extended entry %s\n", file_uri ? file_uri : "null"); -+#endif -+ - if (is_excluded (folder, file_uri, file_info->name)) - return FALSE; - -@@ -897,6 +938,13 @@ - result = gnome_vfs_directory_open (&handle, - extend_uri, - GNOME_VFS_FILE_INFO_DEFAULT); -+ -+#if 0 -+ g_printerr ("reading extended entries from %s result = %s\n"< -+ extend_uri ? extend_uri : "null", -+ result == GNOME_VFS_OK ? "ok" : "failed"); -+#endif -+ - if (result != GNOME_VFS_OK) - return FALSE; - -@@ -1038,6 +1086,11 @@ - { - gboolean changed = FALSE; - -+#if 0 -+ g_printerr ("folder maybe reload dirty = %d loading = %d\n", -+ folder->dirty, folder->loading); -+#endif -+ - if (!folder->dirty || folder->loading) - return; - -@@ -1066,6 +1119,11 @@ - folder_get_extend_uri (folder), - folder_extend_monitor_cb, - folder); -+ } else { -+#if 0 -+ g_printerr ("folder %s has no extend uri, not reading\n", -+ folder->name); -+#endif - } - - if (folder_get_query (folder)) -@@ -1123,6 +1181,12 @@ - void - folder_set_extend_uri (Folder *folder, const gchar *uri) - { -+#if 0 -+ g_printerr ("setting extend URI of %s to %s\n", -+ folder->name, -+ uri ? uri : "null"); -+#endif -+ - g_free (folder->extend_uri); - folder->extend_uri = g_strdup (uri); - -@@ -1262,6 +1326,9 @@ - if (query && !query_try_match (query, folder, entry)) - continue; - -+ if (entry->not_shown) -+ continue; -+ - g_hash_table_insert ( - name_hash, - (gchar *) entry_get_displayname (entry), -@@ -1276,6 +1343,8 @@ - "SortOrder", - &sortorder, - NULL, -+ NULL, -+ NULL, - NULL); - if (sortorder) { - list = child_list_prepend_sorted (sortorder, -@@ -1527,6 +1596,9 @@ - if (entry_is_allocated (entry)) - continue; - -+ if (entry->not_shown) -+ continue; -+ - if (query && !query_try_match (query, folder, entry)) - continue; - -@@ -1601,9 +1673,12 @@ - { - GSList *li; - -+ if (efile->not_shown) -+ return FALSE; -+ - if (query == NULL) - return TRUE; -- -+ - switch (query->type) { - case QUERY_OR: - for (li = query->val.queries; li != NULL; li = li->next) { ---- gnome-vfs-2.5.5/modules/vfolder/vfolder-common.h.vfolder-hacks 2002-10-25 01:54:43.000000000 -0400 -+++ gnome-vfs-2.5.5/modules/vfolder/vfolder-common.h 2004-01-29 18:44:53.000000000 -0500 -@@ -82,6 +82,7 @@ - - guint dirty : 1; - guint user_private : 1; -+ guint not_shown : 1; /* OnlyShowIn=SomeOtherDesktop */ - } Entry; - - Entry *entry_new (VFolderInfo *info, -@@ -120,7 +121,9 @@ - const gchar *key1, - gchar **value1, - const gchar *key2, -- gchar **value2); -+ gchar **value2, -+ const gchar *key3, -+ gchar **value3); - - void entry_dump (Entry *entry, int indent); - ---- gnome-vfs-2.5.5/modules/vfolder/vfolder-info.c.vfolder-hacks 2003-10-31 06:17:59.000000000 -0500 -+++ gnome-vfs-2.5.5/modules/vfolder/vfolder-info.c 2004-01-29 18:52:06.000000000 -0500 -@@ -193,12 +193,15 @@ - folder_get_name (folder) /* content */); - - extend_uri = folder_get_extend_uri (folder); -+#if 0 -+ /* this would confuse KDE, just use hardcoded value. */ - if (extend_uri) { - xmlNewChild (folder_node /* parent */, - NULL /* ns */, - folder->is_link ? "ParentLink" : "Parent", - extend_uri /* content */); - } -+#endif - - if (folder->user_private) { - const gchar *desktop_file; -@@ -274,12 +277,17 @@ - NULL /* content */); - doc->xmlRootNode = topnode; - -+#if 0 -+ /* Never write the WriteDir field, it will -+ * break KDE menus. Just use the hardcoded one. -+ */ - if (info->write_dir != NULL) { - xmlNewChild (topnode /* parent */, - NULL /* ns */, - "WriteDir" /* name */, - info->write_dir /* content */); - } -+#endif - - /* Deprecated */ - if (info->desktop_dir != NULL) { -@@ -539,8 +547,10 @@ - gchar *esc_parent; - - esc_parent = vfolder_escape_home (parent); -- folder_set_extend_uri (folder, esc_parent); -- folder->is_link = FALSE; -+ if (*esc_parent != '\0') { -+ folder_set_extend_uri (folder, esc_parent); -+ folder->is_link = FALSE; -+ } - - xmlFree (parent); - g_free (esc_parent); -@@ -553,8 +563,10 @@ - gchar *esc_parent; - - esc_parent = vfolder_escape_home (parent); -- folder_set_extend_uri (folder, esc_parent); -- folder->is_link = TRUE; -+ if (*esc_parent != '\0') { -+ folder_set_extend_uri (folder, esc_parent); -+ folder->is_link = TRUE; -+ } - - xmlFree (parent); - g_free (esc_parent); -@@ -734,6 +746,53 @@ - g_free (itemdir); - } - -+static void -+set_hardcoded_extend_uri_recursive (Folder *parent, -+ const char *parent_uri) -+{ -+ GSList *subfolders; -+ GSList *tmp; -+ -+ /* we set the extend URI unconditionally, -+ * ignoring anything in the file -+ */ -+ folder_set_extend_uri (parent, parent_uri); -+ -+ subfolders = (GSList*) folder_list_subfolders (parent); -+ tmp = subfolders; -+ while (tmp != NULL) { -+ Folder *sub = tmp->data; -+ char *child_uri; -+ -+ child_uri = g_strconcat (parent_uri, folder_get_name (sub), -+ "/", NULL); -+ -+ set_hardcoded_extend_uri_recursive (sub, child_uri); -+ -+ g_free (child_uri); -+ -+ tmp = tmp->next; -+ } -+} -+ -+static void -+set_hardcoded_extend_uri (VFolderInfo *info) -+{ -+ gchar *all_user_scheme; -+ -+ /* -+ * Set the extend uri for the root folder to the -all-users version of -+ * the scheme, in case the user doesn't have a private .vfolder-info -+ * file yet. -+ */ -+ if (!g_str_has_suffix (info->scheme, -+ "-all-users")) { -+ all_user_scheme = g_strconcat (info->scheme, "-all-users:///", NULL); -+ set_hardcoded_extend_uri_recursive (info->root, all_user_scheme); -+ g_free (all_user_scheme); -+ } -+} -+ - static gboolean - read_vfolder_from_file (VFolderInfo *info, - const gchar *filename, -@@ -829,6 +888,7 @@ - folder_unref (info->root); - - info->root = folder; -+ set_hardcoded_extend_uri (info); - } - } - else if (g_ascii_strcasecmp (node->name, "ReadOnly") == 0) { -@@ -1723,23 +1783,45 @@ - GnomeVFSURI *file_uri; - gboolean exists; - -- /* -- * FIXME: load from gconf -+ /* Here we're finding the primary XML file -+ * that this URI will write changes to. -+ * It's the .menu file for -all-users, -+ * and the ~/.gnome2/vfolders/scheme.vfolder-info -+ * file otherwise. - */ -+ -+ if (g_str_has_suffix (info->scheme, -+ "-all-users")) { -+ /* The all-users scheme uses the -+ * .menu files -+ */ -+ const char *suffix; -+ char *single_scheme; -+ -+ suffix = g_strrstr (info->scheme, "-all-users"); -+ g_assert (suffix != NULL); -+ single_scheme = g_strndup (info->scheme, -+ suffix - info->scheme); -+ -+ info->filename = g_strconcat (SYSCONFDIR, -+ "/X11/desktop-menus/", -+ single_scheme, -+ ".menu", -+ NULL); -+ g_free (single_scheme); - -- /* -- * 1st: Try mandatory system-global file located at -- * /etc/gnome-vfs-2.0/vfolders/scheme.vfolder-info. Writability will -- * depend on permissions of this file. -- */ -- info->filename = g_strconcat (SYSCONFDIR, -- "/gnome-vfs-2.0/vfolders/", -- scheme, ".vfolder-info", -- NULL); -- file_uri = gnome_vfs_uri_new (info->filename); -+ file_uri = gnome_vfs_uri_new (info->filename); -+ -+ exists = gnome_vfs_uri_exists (file_uri); -+ gnome_vfs_uri_unref (file_uri); - -- exists = gnome_vfs_uri_exists (file_uri); -- gnome_vfs_uri_unref (file_uri); -+#if 0 -+ g_printerr ("all-users filename %s exists = %d\n", -+ info->filename, exists); -+#endif -+ } else { -+ exists = FALSE; -+ } - - if (!exists) { - /* -@@ -1751,37 +1833,6 @@ - scheme, ".vfolder-info", - NULL); - } -- -- /* -- * Special case for applications-all-users where we want to add any -- * paths specified in $GNOME2_PATH, for people installing in strange -- * places. -- */ -- if (!strcmp (scheme, "applications-all-users")) { -- int i; -- const char *path; -- char *dir, **ppath; -- ItemDir *id; -- int weight = 800; -- -- path = g_getenv ("GNOME2_PATH"); -- if (path) { -- ppath = g_strsplit (path, ":", -1); -- -- for (i = 0; ppath[i] != NULL; i++) { -- dir = g_build_filename (ppath[i], -- "/share/applications/", -- NULL); -- id = itemdir_new (info, -- dir, -- ITEM_DIR, -- weight--); -- g_free (dir); -- } -- -- g_strfreev (ppath); -- } -- } - } - - static gboolean -@@ -1811,25 +1862,16 @@ - static gboolean - vfolder_info_init (VFolderInfo *info) - { -- gchar *all_user_scheme; -- - info->loading = TRUE; - info->entries_ht = g_hash_table_new (g_str_case_hash, g_str_case_equal); - info->root = folder_new (info, "Root", TRUE); - -+ set_hardcoded_extend_uri (info); -+ - /* -- * Set the extend uri for the root folder to the -all-users version of -- * the scheme, in case the user doesn't have a private .vfolder-info -- * file yet. -- */ -- all_user_scheme = g_strconcat (info->scheme, "-all-users:///", NULL); -- folder_set_extend_uri (info->root, all_user_scheme); -- g_free (all_user_scheme); -- -- /* -- * Set the default writedir, in case there is no .vfolder-info for this -- * scheme yet. Otherwise this will be overwritten when we read our -- * source. -+ * Set the default writedir, in case there is no .vfolder-info -+ * for this scheme yet. Otherwise this will be overwritten -+ * when we read our source. - */ - info->write_dir = g_strconcat (g_get_home_dir (), - "/" DOT_GNOME "/vfolders/", -@@ -1839,29 +1881,6 @@ - /* Figure out which .vfolder-info to read */ - vfolder_info_find_filenames (info); - -- if (g_getenv ("GNOME_VFS_VFOLDER_INFODIR")) { -- gchar *filename = g_strconcat (info->scheme, -- ".vfolder-info", -- NULL); -- -- g_free (info->filename); -- info->filename = -- vfolder_build_uri ( -- g_getenv ("GNOME_VFS_VFOLDER_INFODIR"), -- filename, -- NULL); -- g_free (filename); -- } -- -- if (g_getenv ("GNOME_VFS_VFOLDER_WRITEDIR")) { -- g_free (info->write_dir); -- info->write_dir = -- vfolder_build_uri ( -- g_getenv ("GNOME_VFS_VFOLDER_WRITEDIR"), -- info->scheme, -- NULL); -- } -- - info->filename_monitor = - vfolder_monitor_file_new (info->filename, - filename_monitor_cb, ---- gnome-vfs-2.5.5/modules/vfolder/vfolder-util.c.vfolder-hacks 2002-10-10 00:46:29.000000000 -0400 -+++ gnome-vfs-2.5.5/modules/vfolder/vfolder-util.c 2004-01-29 18:44:53.000000000 -0500 -@@ -207,6 +207,7 @@ - { - GnomeVFSResult result; - VFolderMonitor *monitor; -+#if 0 - GnomeVFSFileInfo *info; - - /* Check the file exists so we don't get a bogus DELETED event */ -@@ -218,7 +219,8 @@ - - if (result != GNOME_VFS_OK) - return NULL; -- -+#endif -+ - monitor = g_new0 (VFolderMonitor, 1); - monitor->callback = callback; - monitor->user_data = user_data; diff --git a/gnome-vfs2.spec b/gnome-vfs2.spec index 5ca2d00..9b6c493 100644 --- a/gnome-vfs2.spec +++ b/gnome-vfs2.spec @@ -64,8 +64,6 @@ Patch104: gnome-vfs-2.8.2-browser_default.patch Patch201: gnome-vfs-2.8.1-console-mount-opt.patch -Patch4: gnome-vfs-2.15.1-use-sys-inotify.patch - # RH bug #197868 Patch6: gnome-vfs-2.15.91-mailto-command.patch @@ -75,9 +73,6 @@ Patch8: gnome-vfs-2.16.0-no-dbus.patch # http://bugzilla.gnome.org/show_bug.cgi?id=427958 Patch9: glob-leak.patch -# http://bugzilla.gnome.org/show_bug.cgi?id=501160 -Patch10: gnome-vfs-mime-cache.patch - # https://bugzilla.redhat.com/show_bug.cgi?id=333041 # https://bugzilla.redhat.com/show_bug.cgi?id=335241 Patch300: gnome-vfs-2.20.0-ignore-certain-mountpoints.patch @@ -122,8 +117,6 @@ shares (SMB) to applications using GNOME VFS. %patch3 -p1 -b .modules-conf -%patch4 -p1 -b .use-sys-inotify - %patch6 -p1 -b .mailto-command # send to upstream @@ -134,7 +127,6 @@ shares (SMB) to applications using GNOME VFS. %patch8 -p1 -b .no-dbus %patch9 -p1 -b .glob-leak -%patch10 -p1 -b .mime-cache %patch300 -p1 -b .ignore-certain-mount-points diff --git a/neon-0.24.7-gssapi.patch b/neon-0.24.7-gssapi.patch deleted file mode 100644 index 81fd434..0000000 --- a/neon-0.24.7-gssapi.patch +++ /dev/null @@ -1,516 +0,0 @@ - -Update to the GSSAPI implementation from HEAD. - ---- imported/neon/ne_auth.c (revision 309) -+++ imported/neon/ne_auth.c (working copy) -@@ -161,8 +161,11 @@ - /* This used for Basic auth */ - char *basic; - #ifdef HAVE_GSSAPI -- /* This used for GSSAPI auth */ -+ /* for the GSSAPI/Negotiate scheme: */ - char *gssapi_token; -+ gss_ctx_id_t gssctx; -+ gss_name_t gssname; -+ gss_OID gssmech; - #endif - /* These all used for Digest auth */ - char *realm; -@@ -202,7 +205,7 @@ - struct ne_md5_ctx response_body; - - /* Results of response-header callbacks */ -- char *auth_hdr, *auth_info_hdr; -+ ne_buffer *auth_hdr, *auth_info_hdr; - }; - - static void clean_session(auth_session *sess) -@@ -214,6 +217,17 @@ - NE_FREE(sess->opaque); - NE_FREE(sess->realm); - #ifdef HAVE_GSSAPI -+ { -+ int major; -+ -+ if (sess->gssctx != GSS_C_NO_CONTEXT) -+ gss_delete_sec_context(&major, sess->gssctx, GSS_C_NO_BUFFER); -+ -+ if (sess->gssmech != GSS_C_NO_OID) { -+ gss_release_oid(&major, &sess->gssmech); -+ sess->gssmech = GSS_C_NO_OID; -+ } -+ } - NE_FREE(sess->gssapi_token); - #endif - } -@@ -321,69 +335,162 @@ - /* Add GSSAPI authentication credentials to a request */ - static char *request_gssapi(auth_session *sess) - { -- return ne_concat("Negotiate ", sess->gssapi_token, "\r\n", NULL); -+ if (sess->gssapi_token) -+ return ne_concat("Negotiate ", sess->gssapi_token, "\r\n", NULL); -+ else -+ return NULL; - } - --static int get_gss_name(gss_name_t *server, auth_session *sess) -+/* Create an GSSAPI name for server HOSTNAME; returns non-zero on -+ * error. */ -+static void get_gss_name(gss_name_t *server, const char *hostname) - { -- unsigned int major_status, minor_status; -+ unsigned int major, minor; - gss_buffer_desc token = GSS_C_EMPTY_BUFFER; - -- token.value = ne_concat("HTTP@", sess->sess->server.hostname, NULL); -+ token.value = ne_concat("HTTP@", hostname, NULL); - token.length = strlen(token.value); - -- major_status = gss_import_name(&minor_status, &token, -- GSS_C_NT_HOSTBASED_SERVICE, -- server); -- return GSS_ERROR(major_status) ? -1 : 0; -+ major = gss_import_name(&minor, &token, GSS_C_NT_HOSTBASED_SERVICE, -+ server); -+ ne_free(token.value); -+ -+ if (GSS_ERROR(major)) { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: gss_import_name failed.\n"); -+ *server = GSS_C_NO_NAME; -+ } - } - --/* Examine a GSSAPI auth challenge; returns 0 if a valid challenge, -- * else non-zero. */ --static int --gssapi_challenge(auth_session *sess, struct auth_challenge *parms) -+/* Append GSSAPI error(s) for STATUS of type TYPE to BUF; prepending -+ * ": " to each error if *FLAG is non-zero, setting *FLAG after an -+ * error has been appended. */ -+static void make_gss_error(ne_buffer *buf, int *flag, -+ unsigned int status, int type) - { -- gss_ctx_id_t context; -- gss_name_t server_name; -- unsigned int major_status, minor_status; -- gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; -- gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER; -+ int major, minor; -+ int context = 0; -+ -+ do { -+ gss_buffer_desc msg; -+ major = gss_display_status(&minor, status, type, -+ GSS_C_NO_OID, &context, &msg); -+ if (major == GSS_S_COMPLETE && msg.length) { -+ if ((*flag)++) ne_buffer_append(buf, ": ", 2); -+ ne_buffer_append(buf, msg.value, msg.length); -+ } -+ if (msg.length) gss_release_buffer(&minor, &msg); -+ } while (context); -+} - -- clean_session(sess); -+/* Continue a GSS-API Negotiate exchange, using input TOKEN if -+ * non-NULL. Returns non-zero on error. */ -+static int continue_negotiate(auth_session *sess, const char *token) -+{ -+ unsigned int major, minor; -+ gss_buffer_desc input = GSS_C_EMPTY_BUFFER; -+ gss_buffer_desc output = GSS_C_EMPTY_BUFFER; -+ unsigned char *bintoken = NULL; -+ int ret; -+ gss_OID mech = sess->gssmech; - -- if (get_gss_name(&server_name, sess)) -+ if (token) { -+ input.length = ne_unbase64(token, &bintoken); -+ if (input.length == 0) { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: Invalid input [%s].\n", -+ token); -+ return -1; -+ } -+ input.value = bintoken; -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: Continuation token [%s]\n", token); -+ } -+ else if (sess->gssctx != GSS_C_NO_CONTEXT) { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: Reset incomplete context.\n"); -+ gss_delete_sec_context(&minor, &sess->gssctx, GSS_C_NO_BUFFER); -+ } -+ -+ major = gss_init_sec_context(&minor, GSS_C_NO_CREDENTIAL, &sess->gssctx, -+ sess->gssname, mech, -+ GSS_C_MUTUAL_FLAG, GSS_C_INDEFINITE, -+ GSS_C_NO_CHANNEL_BINDINGS, -+ &input, &sess->gssmech, &output, NULL, NULL); -+ -+ /* done with the input token. */ -+ if (bintoken) ne_free(bintoken); -+ -+ if (GSS_ERROR(major)) { -+ ne_buffer *err = ne_buffer_create(); -+ int flag = 0; -+ -+ make_gss_error(err, &flag, major, GSS_C_GSS_CODE); -+ make_gss_error(err, &flag, minor, GSS_C_MECH_CODE); -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: Error: %s\n", err->data); -+ ne_set_error(sess->sess, _("GSSAPI authentication error (%s)"), -+ err->data); -+ ne_buffer_destroy(err); - return -1; -+ } - -- major_status = gss_init_sec_context(&minor_status, -- GSS_C_NO_CREDENTIAL, -- &context, -- server_name, -- GSS_C_NO_OID, -- 0, -- GSS_C_INDEFINITE, -- GSS_C_NO_CHANNEL_BINDINGS, -- &input_token, -- NULL, -- &output_token, -- NULL, -- NULL); -- gss_release_name(&minor_status, &server_name); -+ if (major == GSS_S_CONTINUE_NEEDED || major == GSS_S_COMPLETE) { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: init_sec_context OK. (major=%d)\n", -+ major); -+ ret = 0; -+ } -+ else { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: Init failure %d.\n", major); -+ ret = -1; -+ } - -- if (GSS_ERROR(major_status)) { -- NE_DEBUG(NE_DBG_HTTPAUTH, "gss_init_sec_context failed.\n"); -+ if (major != GSS_S_CONTINUE_NEEDED) { -+ /* context no longer needed: destroy it */ -+ gss_delete_sec_context(&minor, &sess->gssctx, GSS_C_NO_BUFFER); -+ } -+ -+ if (output.length) { -+ sess->gssapi_token = ne_base64(output.value, output.length); -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: Output token: [%s]\n", -+ sess->gssapi_token); -+ gss_release_buffer(&minor, &output); -+ } else { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: No output token.\n"); -+ } -+ -+ return ret; -+} -+ -+/* Process a Negotiate challange CHALL in session SESS; returns zero -+ * if challenge is accepted. */ -+static int gssapi_challenge(auth_session *sess, struct auth_challenge *chall) -+{ -+ int ret = continue_negotiate(sess, chall->opaque); -+ if (ret == 0) -+ sess->scheme = auth_scheme_gssapi; -+ return ret; -+} -+ -+/* Verify the header HDR in a Negotiate response. */ -+static int verify_negotiate_response(auth_session *sess, char *hdr) -+{ -+ char *sep, *ptr = strchr(hdr, ' '); -+ -+ if (strncmp(hdr, "Negotiate", ptr - hdr) != 0) { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: Not a Negotiate response!\n"); - return -1; - } - -- if (output_token.length == 0) -- return -1; -+ ptr++; - -- sess->gssapi_token = ne_base64(output_token.value, output_token.length); -- gss_release_buffer(&major_status, &output_token); -+ if (strlen(ptr) == 0) { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: No token in Negotiate response!\n"); -+ return 0; -+ } - -- NE_DEBUG(NE_DBG_HTTPAUTH, -- "Base64 encoded GSSAPI challenge: %s.\n", sess->gssapi_token); -- sess->scheme = auth_scheme_gssapi; -- return 0; -+ if ((sep = strchr(ptr, ',')) != NULL) -+ *sep = '\0'; -+ if ((sep = strchr(ptr, ' ')) != NULL) -+ *sep = '\0'; -+ -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: Negotiate response token [%s]\n", ptr); -+ return continue_negotiate(sess, ptr); - } - #endif - -@@ -637,7 +744,8 @@ - *pnt = '\0'; - *value = pnt + 1; - state = AFTER_EQ; -- } else if (*pnt == ' ' && ischall && *key != NULL) { -+ } else if ((*pnt == ' ' || *pnt == ',') -+ && ischall && *key != NULL) { - *value = NULL; - *pnt = '\0'; - *hdr = pnt + 1; -@@ -679,8 +787,8 @@ - * 0 if it gives a valid authentication for the server - * non-zero otherwise (don't believe the response in this case!). - */ --static int verify_response(struct auth_request *req, auth_session *sess, -- const char *value) -+static int verify_digest_response(struct auth_request *req, auth_session *sess, -+ const char *value) - { - char *hdr, *pnt, *key, *val; - auth_qop qop = auth_qop_none; -@@ -842,36 +950,39 @@ - while (!tokenize(&pnt, &key, &val, 1)) { - - if (val == NULL) { -- /* We have a new challenge */ -- NE_DEBUG(NE_DBG_HTTPAUTH, "New challenge for scheme [%s]\n", key); -- chall = ne_calloc(sizeof *chall); -+ auth_scheme scheme; - -- chall->next = challenges; -- challenges = chall; -- /* Initialize the challenge parameters */ -- /* Which auth-scheme is it (case-insensitive matching) */ - if (strcasecmp(key, "basic") == 0) { -- NE_DEBUG(NE_DBG_HTTPAUTH, "Basic scheme.\n"); -- chall->scheme = auth_scheme_basic; -+ scheme = auth_scheme_basic; - } else if (strcasecmp(key, "digest") == 0) { -- NE_DEBUG(NE_DBG_HTTPAUTH, "Digest scheme.\n"); -- chall->scheme = auth_scheme_digest; --#ifdef HAVE_GSSAPI -+ scheme = auth_scheme_digest; -+ } -+#ifdef HAVE_GSSAPI -+ /* cope with a Negotiate parameter which doesn't match the -+ * auth-param due to the broken spec. */ -+ else if (chall && chall->scheme == auth_scheme_gssapi -+ && chall->opaque == NULL) { -+ chall->opaque = key; -+ continue; - } else if (strcasecmp(key, "negotiate") == 0) { -- NE_DEBUG(NE_DBG_HTTPAUTH, "GSSAPI scheme.\n"); -- chall->scheme = auth_scheme_gssapi; -+ scheme = auth_scheme_gssapi; -+ } - #endif -- } else { -- NE_DEBUG(NE_DBG_HTTPAUTH, "Unknown scheme.\n"); -- ne_free(chall); -- challenges = NULL; -- break; -+ else { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "Ignoring challenge '%s'.\n", key); -+ chall = NULL; -+ continue; - } -+ -+ NE_DEBUG(NE_DBG_HTTPAUTH, "New '%s' challenge.\n", key); -+ chall = ne_calloc(sizeof *chall); -+ chall->scheme = scheme; -+ chall->next = challenges; -+ challenges = chall; - continue; - } else if (chall == NULL) { -- /* If we haven't got an auth-scheme, and we're -- * haven't yet found a challenge, skip this pair. -- */ -+ /* Ignore pairs for an unknown challenge. */ -+ NE_DEBUG(NE_DBG_HTTPAUTH, "Ignored pair: %s = %s\n", key, val); - continue; - } - -@@ -924,15 +1035,17 @@ - success = 0; - - #ifdef HAVE_GSSAPI -- if (strcmp(ne_get_scheme(sess->sess), "https") == 0) { -+ /* Ignore Negotiate challenges from origin servers which don't -+ * come over SSL. */ -+ if (sess->spec == &ah_proxy_class || sess->context != AUTH_ANY) { - NE_DEBUG(NE_DBG_HTTPAUTH, "Looking for GSSAPI.\n"); - /* Try a GSSAPI challenge */ - for (chall = challenges; chall != NULL; chall = chall->next) { - if (chall->scheme == auth_scheme_gssapi) { -- if (!gssapi_challenge(sess, chall)) { -- success = 1; -- break; -- } -+ if (!gssapi_challenge(sess, chall)) { -+ success = 1; -+ break; -+ } - } - } - } -@@ -993,6 +1106,14 @@ - ne_md5_process_bytes(block, length, ctx); - } - -+/* Collect auth challenges into an ne_buffer */ -+static void ah_collect_header(void *userdata, const char *value) -+{ -+ ne_buffer *ar = userdata; -+ if (ne_buffer_size(ar)) ne_buffer_append(ar, ", ", 2); -+ ne_buffer_zappend(ar, value); -+} -+ - static void ah_create(ne_request *req, void *session, const char *method, - const char *uri) - { -@@ -1009,14 +1130,14 @@ - areq->method = method; - areq->uri = uri; - areq->request = req; -+ areq->auth_hdr = ne_buffer_create(); -+ areq->auth_info_hdr = ne_buffer_create(); - - ne_add_response_header_handler(req, sess->spec->resp_hdr, -- ne_duplicate_header, &areq->auth_hdr); -- -+ ah_collect_header, areq->auth_hdr); - - ne_add_response_header_handler(req, sess->spec->resp_info_hdr, -- ne_duplicate_header, -- &areq->auth_info_hdr); -+ ah_collect_header, areq->auth_info_hdr); - - sess->attempt = 0; - -@@ -1035,7 +1156,7 @@ - } else { - char *value; - -- NE_DEBUG(NE_DBG_HTTPAUTH, "Handling."); -+ NE_DEBUG(NE_DBG_HTTPAUTH, "Handling auth session.\n"); - req->will_handle = 1; - - if (sess->qop == auth_qop_auth_int) { -@@ -1082,22 +1203,44 @@ - - if (!areq) return NE_OK; - -+#ifdef HAVE_GSSAPI -+ /* whatever happens: forget the GSSAPI token cached thus far */ -+ if (sess->gssapi_token) { -+ ne_free(sess->gssapi_token); -+ sess->gssapi_token = NULL; -+ } -+#endif -+ - NE_DEBUG(NE_DBG_HTTPAUTH, - "ah_post_send (#%d), code is %d (want %d), %s is %s\n", - sess->attempt, status->code, sess->spec->status_code, -- sess->spec->resp_hdr, SAFELY(areq->auth_hdr)); -- if (areq->auth_info_hdr != NULL && -- verify_response(areq, sess, areq->auth_info_hdr)) { -- NE_DEBUG(NE_DBG_HTTPAUTH, "Response authentication invalid.\n"); -- ne_set_error(sess->sess, "%s", _(sess->spec->fail_msg)); -- ret = NE_ERROR; -- } else if ((status->code == sess->spec->status_code || -- (status->code == 401 && sess->context == AUTH_CONNECT)) && -- areq->auth_hdr != NULL) { -+ sess->spec->resp_hdr, areq->auth_hdr->data); -+ if (ne_buffer_size(areq->auth_info_hdr) -+ && sess->scheme == auth_scheme_digest) { -+ if (verify_digest_response(areq, sess, areq->auth_info_hdr->data)) { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "Response authentication invalid.\n"); -+ ne_set_error(sess->sess, "%s", _(sess->spec->fail_msg)); -+ ret = NE_ERROR; -+ } -+ } -+#ifdef HAVE_GSSAPI -+ /* one must wonder... has Mr Brezak actually read RFC2617? */ -+ else if (sess->scheme == auth_scheme_gssapi -+ && (status->klass == 2 || status->klass == 3) -+ && ne_buffer_size(areq->auth_hdr)) { -+ if (verify_negotiate_response(sess, areq->auth_hdr->data)) { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "gssapi: Mutual auth failed.\n"); -+ ret = NE_ERROR; -+ } -+ } -+#endif /* HAVE_GSSAPI */ -+ else if ((status->code == sess->spec->status_code || -+ (status->code == 401 && sess->context == AUTH_CONNECT)) && -+ ne_buffer_size(areq->auth_hdr)) { - /* note above: allow a 401 in response to a CONNECT request - * from a proxy since some buggy proxies send that. */ -- NE_DEBUG(NE_DBG_HTTPAUTH, "Got challenge with code %d.\n", status->code); -- if (!auth_challenge(sess, areq->auth_hdr)) { -+ NE_DEBUG(NE_DBG_HTTPAUTH, "Got challenge (code %d).\n", status->code); -+ if (!auth_challenge(sess, areq->auth_hdr->data)) { - ret = NE_RETRY; - } else { - clean_session(sess); -@@ -1105,9 +1248,9 @@ - } - } - -- NE_FREE(areq->auth_info_hdr); -- NE_FREE(areq->auth_hdr); -- -+ ne_buffer_clear(areq->auth_hdr); -+ ne_buffer_clear(areq->auth_info_hdr); -+ - return ret; - } - -@@ -1115,13 +1258,25 @@ - { - auth_session *sess = session; - struct auth_request *areq = ne_get_request_private(req, sess->spec->id); -- if (areq) ne_free(areq); -+ -+ if (areq) { -+ ne_buffer_destroy(areq->auth_info_hdr); -+ ne_buffer_destroy(areq->auth_hdr); -+ ne_free(areq); -+ } - } - - static void free_auth(void *cookie) - { - auth_session *sess = cookie; - -+#ifdef HAVE_GSSAPI -+ if (sess->gssname != GSS_C_NO_NAME) { -+ int major; -+ gss_release_name(&major, sess->gssname); -+ } -+#endif -+ - clean_session(sess); - ne_free(sess); - } -@@ -1137,10 +1292,17 @@ - ahs->sess = sess; - ahs->spec = ahc; - -- if (strcmp(ne_get_scheme(sess), "https") == 0) -+ if (strcmp(ne_get_scheme(sess), "https") == 0) { - ahs->context = isproxy ? AUTH_CONNECT : AUTH_NOTCONNECT; -- else -+ } else { - ahs->context = AUTH_ANY; -+ } -+#ifdef HAVE_GSSAPI -+ get_gss_name(&ahs->gssname, (isproxy ? sess->proxy.hostname -+ : sess->server.hostname)); -+ ahs->gssctx = GSS_C_NO_CONTEXT; -+ ahs->gssmech = GSS_C_NO_OID; -+#endif - - /* Register hooks */ - ne_hook_create_request(sess, ah_create, ahs); diff --git a/vfs-inotify-types.patch b/vfs-inotify-types.patch deleted file mode 100644 index f04b229..0000000 --- a/vfs-inotify-types.patch +++ /dev/null @@ -1,19 +0,0 @@ -Index: modules/inotify-path.c -=================================================================== -RCS file: /cvs/gnome/gnome-vfs/modules/inotify-path.c,v -retrieving revision 1.1 -retrieving revision 1.2 -diff -u -p -r1.1 -r1.2 ---- modules/inotify-path.c 10 Dec 2005 23:50:19 -0000 1.1 -+++ modules/inotify-path.c 12 Dec 2005 16:03:49 -0000 1.2 -@@ -24,6 +24,10 @@ - */ - - #include "config.h" -+ -+/* Don't put conflicting kernel types in the global namespace: */ -+#define __KERNEL_STRICT_NAMES -+ - #include "local_inotify.h" - #if 0 - #ifdef HAVE_SYS_INOTIFY_H