diff options
Diffstat (limited to 'packages/pcmanfm/files/desired_mount_point.patch')
-rw-r--r-- | packages/pcmanfm/files/desired_mount_point.patch | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/packages/pcmanfm/files/desired_mount_point.patch b/packages/pcmanfm/files/desired_mount_point.patch new file mode 100644 index 0000000000..d548abe8fa --- /dev/null +++ b/packages/pcmanfm/files/desired_mount_point.patch @@ -0,0 +1,91 @@ +--- a/src/vfs/vfs-volume-hal.c 2008-06-11 15:38:25.000000000 -0300 ++++ b/src/vfs/vfs-volume-hal.c 2008-12-16 10:20:18.000000000 -0200 +@@ -944,7 +944,7 @@ + if (G_LIKELY (desired_mount_point != NULL && *desired_mount_point != '\0')) + { + filename = g_build_filename (mount_root, desired_mount_point, NULL); +- volume->mount_point = filename; ++ volume->mount_point = g_strdup( desired_mount_point ); + } + libhal_free_string (desired_mount_point); + } +@@ -954,8 +954,7 @@ + { + /* <mount-root>/<device> looks like a good idea */ + basename = g_path_get_basename (volume->device_file); +- filename = g_build_filename (mount_root, basename, NULL); +- volume->mount_point = filename; ++ volume->mount_point = g_strdup( basename ); + g_free (basename); + } + +@@ -2310,7 +2309,7 @@ + } + + gboolean +-vfs_volume_hal_mount (ExoMountHalDevice *device, ++vfs_volume_hal_mount (VFSVolume *vol, + GError **error) + { + DBusMessage *message; +@@ -2323,8 +2322,13 @@ + const gchar *uuid = NULL, *label = NULL; + gint m, n = 0; + VFSVolumeOptions opts; ++ ExoMountHalDevice* device = NULL; ++ ++ g_return_val_if_fail (vol != NULL, FALSE); ++ ++ if (!(device = vfs_volume_hal_from_udi( vol->udi, error ))) ++ return FALSE; + +- g_return_val_if_fail (device != NULL, FALSE); + g_return_val_if_fail (error == NULL || *error == NULL, FALSE); + + if( device->volume != NULL) { +@@ -2472,16 +2476,23 @@ + } + } + +- /* try to determine a usable mount point */ +- if (G_LIKELY (device->volume != NULL)) ++ if (G_LIKELY (vol->mount_point == NULL)) + { +- /* maybe we can use the volume's label... */ +- mount_point = g_strdup( libhal_volume_get_label (device->volume) ); ++ /* try to determine a usable mount point */ ++ if (G_LIKELY (device->volume != NULL)) ++ { ++ /* maybe we can use the volume's label... */ ++ mount_point = g_strdup( libhal_volume_get_label (device->volume) ); ++ } ++ else ++ { ++ /* maybe we can use the the textual type... */ ++ mount_point = g_strdup( libhal_drive_get_type_textual (device->drive) ); ++ } + } + else + { +- /* maybe we can use the the textual type... */ +- mount_point = g_strdup( libhal_drive_get_type_textual (device->drive) ); ++ mount_point = g_strdup( vol->mount_point ); + } + + /* However, the label may contain G_DIR_SEPARATOR so just replace these +@@ -2825,13 +2836,10 @@ + + gboolean vfs_volume_mount( VFSVolume* vol, GError** err ) + { +- ExoMountHalDevice* device; + gboolean ret = FALSE; +- device = vfs_volume_hal_from_udi( vol->udi, err ); +- if( device ) ++ if( vol ) + { +- ret = vfs_volume_hal_mount( device, err ); +- vfs_volume_hal_free( device ); ++ ret = vfs_volume_hal_mount( vol, err ); + } + return ret; + } |