Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:vuntz:Attic_11.3
gnome-mount
gnome-mount-old-hal.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gnome-mount-old-hal.patch of Package gnome-mount
--- configure.in +++ configure.in @@ -83,12 +83,12 @@ fi AM_CONDITIONAL(ENABLE_NAUTILUS_EXTENSION, test "x$enable_nautilus_extension" = "xyes") -PKG_CHECK_MODULES(GNOME_MOUNT, gconf-2.0 gnome-keyring-1 >= 0.4 dbus-glib-1 >= 0.31 hal-storage >= 0.5.8.1 gtk+-2.0 >= 2.8.0) +PKG_CHECK_MODULES(GNOME_MOUNT, gconf-2.0 gnome-keyring-1 >= 0.4 dbus-glib-1 >= 0.31 hal-storage >= 0.5.6 gtk+-2.0 >= 2.8.0) AC_SUBST(GNOME_MOUNT_CFLAGS) AC_SUBST(GNOME_MOUNT_LIBS) if test "x$enable_nautilus_extension" = "xyes"; then - PKG_CHECK_MODULES(GNOME_MOUNT_PROPERTIES, libgnomeui-2.0 >= 2.1.5 libglade-2.0 hal-storage >= 0.5.8.1 dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gtk+-2.0 >= 2.8.0) + PKG_CHECK_MODULES(GNOME_MOUNT_PROPERTIES, libgnomeui-2.0 >= 2.1.5 libglade-2.0 hal-storage >= 0.5.6 dbus-1 >= 0.60 dbus-glib-1 >= 0.60 gtk+-2.0 >= 2.8.0) AC_SUBST(GNOME_MOUNT_PROPERTIES_CFLAGS) AC_SUBST(GNOME_MOUNT_PROPERTIES_LIBS) --- src/gnome-mount.c +++ src/gnome-mount.c @@ -1560,38 +1560,25 @@ char *vendor; char *drive_name; DBusPendingCall *pending_return; - gboolean is_ro; ret = FALSE; g_debug ("Unmounting %s", udi); - is_ro = FALSE; - model = NULL; vendor = NULL; if (drive != NULL) { model = g_strdup (libhal_drive_get_model (drive)); vendor = g_strdup (libhal_drive_get_vendor (drive)); - if (libhal_drive_get_type (drive) == LIBHAL_DRIVE_TYPE_CDROM) { - is_ro = TRUE; - } } else if (volume != NULL) { drive = libhal_drive_from_udi (hal_ctx, libhal_volume_get_storage_device_udi (volume)); if (drive != NULL) { model = g_strdup (libhal_drive_get_model (drive)); vendor = g_strdup (libhal_drive_get_vendor (drive)); - if (libhal_drive_get_type (drive) == LIBHAL_DRIVE_TYPE_CDROM) { - is_ro = TRUE; - } libhal_drive_free (drive); drive = NULL; } - - if (!is_ro) { - is_ro = libhal_volume_is_mounted_read_only (volume); - } } if (vendor != NULL && model != NULL) @@ -1695,9 +1682,7 @@ * So put up a dialog after some time that tells the user we're flushing * the cache. */ - if (!is_ro) { - unmount_cache_timeout_start (drive_name, FALSE); - } + unmount_cache_timeout_start (drive_name, FALSE); /* it also means we can't use dbus_connection_send_with_reply_and_block() as * that function doesn't enter the mainloop @@ -1722,9 +1707,7 @@ dbus_error_init (&error); if (dbus_set_error_from_message (&error, reply)) { - if (!is_ro) { - unmount_cache_timeout_cancel (FALSE); - } + unmount_cache_timeout_cancel (FALSE); g_warning ("Unmount failed for %s: %s : %s\n", udi, error.name, error.message); show_error_dialog_unmount (udi, volume, drive, error.name, error.message); dbus_error_free (&error); @@ -1732,9 +1715,7 @@ } g_print (_("Unmounted %s\n"), get_dev_file (volume, drive)); - if (!is_ro) { - unmount_cache_timeout_cancel (TRUE); - } + unmount_cache_timeout_cancel (TRUE); ret = TRUE; out: @@ -1764,39 +1745,26 @@ char *model; char *vendor; char *drive_name; - gboolean is_ro; DBusPendingCall *pending_return; ret = FALSE; g_debug ("Ejecting %s", udi); - is_ro = FALSE; - model = NULL; vendor = NULL; if (drive != NULL) { model = g_strdup (libhal_drive_get_model (drive)); vendor = g_strdup (libhal_drive_get_vendor (drive)); - if (libhal_drive_get_type (drive) == LIBHAL_DRIVE_TYPE_CDROM) { - is_ro = TRUE; - } } else if (volume != NULL) { drive = libhal_drive_from_udi (hal_ctx, libhal_volume_get_storage_device_udi (volume)); if (drive != NULL) { model = g_strdup (libhal_drive_get_model (drive)); vendor = g_strdup (libhal_drive_get_vendor (drive)); - if (libhal_drive_get_type (drive) == LIBHAL_DRIVE_TYPE_CDROM) { - is_ro = TRUE; - } libhal_drive_free (drive); drive = NULL; } - - if (!is_ro) { - is_ro = libhal_volume_is_mounted_read_only (volume); - } } if (vendor != NULL && model != NULL) @@ -1899,9 +1867,7 @@ * So put up a dialog after some time that tells the user we're flushing * the cache. */ - if (!is_ro) { - unmount_cache_timeout_start (drive_name, TRUE); - } + unmount_cache_timeout_start (drive_name, TRUE); /* it also means we can't use dbus_connection_send_with_reply_and_block() as * that function doesn't enter the mainloop @@ -1926,9 +1892,7 @@ dbus_error_init (&error); if (dbus_set_error_from_message (&error, reply)) { - if (!is_ro) { - unmount_cache_timeout_cancel (FALSE); - } + unmount_cache_timeout_cancel (FALSE); g_warning ("Eject failed for %s: %s : %s\n", udi, error.name, error.message); show_error_dialog_eject (udi, volume, drive, error.name, error.message); dbus_error_free (&error); @@ -1936,9 +1900,7 @@ } g_print (_("Ejected %s\n"), get_dev_file (volume, drive)); - if (!is_ro) { - unmount_cache_timeout_cancel (TRUE); - } + unmount_cache_timeout_cancel (TRUE); ret = TRUE; @@ -2157,192 +2119,6 @@ return result; } -static gboolean -setup_crypto (const char *udi, LibHalVolume *volume, LibHalDrive *drive, - const char *password, gboolean *password_error) -{ - gboolean ret = FALSE; - DBusMessage *msg = NULL; - DBusMessage *reply = NULL; - DBusError error; - - *password_error = FALSE; - - g_debug ("Setting up %s for crypto", udi); - - msg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, - "org.freedesktop.Hal.Device.Volume.Crypto", - "Setup"); - if (msg == NULL) { - g_warning ("Could not create dbus message for %s", udi); - goto out; - } - - if (!dbus_message_append_args (msg, - DBUS_TYPE_STRING, &password, - DBUS_TYPE_INVALID)) { - g_warning ("Could not append args to dbus message for %s", udi); - goto out; - } - - dbus_error_init (&error); - if (!(reply = dbus_connection_send_with_reply_and_block (dbus_connection, msg, DBUS_TIMEOUT, &error)) || - dbus_error_is_set (&error)) { - g_warning ("Setup failed for %s: %s : %s\n", udi, error.name, error.message); - if (strcmp (error.name, "org.freedesktop.Hal.Device.Volume.Crypto.SetupPasswordError") == 0) { - *password_error = TRUE; - } - dbus_error_free (&error); - goto out; - } - - - ret = TRUE; - - g_print (_("Setup clear-text device for %s.\n"), get_dev_file (volume, drive)); - -out: - if (msg != NULL) - dbus_message_unref (msg); - if (reply != NULL) - dbus_message_unref (reply); - - return ret; -} - -static gboolean -teardown_crypto (const char *udi, LibHalVolume *volume, LibHalDrive *drive) -{ - gboolean ret = FALSE; - DBusMessage *msg = NULL; - DBusMessage *reply = NULL; - DBusError error; - char *clear_udi; - - g_debug ("Tearing down %s for crypto", udi); - - clear_udi = libhal_volume_crypto_get_clear_volume_udi (hal_ctx, volume); - if (clear_udi != NULL) { - LibHalVolume *clear_volume; - gboolean unmount_child_failed; - - unmount_child_failed = FALSE; - - clear_volume = libhal_volume_from_udi (hal_ctx, clear_udi); - if (clear_volume != NULL) { - if (libhal_volume_is_mounted (clear_volume)) { - if (!volume_unmount (clear_udi, clear_volume, NULL)) - unmount_child_failed = TRUE; - } - libhal_volume_free (clear_volume); - } - free (clear_udi); - - if (unmount_child_failed) - goto out; - } - - - msg = dbus_message_new_method_call ("org.freedesktop.Hal", udi, - "org.freedesktop.Hal.Device.Volume.Crypto", - "Teardown"); - if (msg == NULL) { - g_warning ("Could not create dbus message for %s", udi); - goto out; - } - - if (!dbus_message_append_args (msg, - DBUS_TYPE_INVALID)) { - g_warning ("Could not append args to dbus message for %s", udi); - goto out; - } - - dbus_error_init (&error); - if (!(reply = dbus_connection_send_with_reply_and_block (dbus_connection, msg, DBUS_TIMEOUT, &error)) || - dbus_error_is_set (&error)) { - g_warning ("Teardown failed for %s: %s : %s\n", udi, error.name, error.message); - dbus_error_free (&error); - goto out; - } - - g_print (_("Teared down clear-text device for %s.\n"), get_dev_file (volume, drive)); - - ret = TRUE; - -out: - if (msg != NULL) - dbus_message_unref (msg); - if (reply != NULL) - dbus_message_unref (reply); - - return ret; -} - -static const char *crypto_setup_backing_udi = NULL; -static int crypto_setup_rc = 1; - -static void -crypto_setup_device_removed (LibHalContext *ctx, const char *udi) -{ - g_debug ("In crypto_setup_device_removed for %s", udi); - - if (strcmp (udi, crypto_setup_backing_udi) == 0) { - g_debug ("Backing volume removed! Exiting.."); - gtk_exit (1); - } -} - -static void -crypto_setup_device_added (LibHalContext *ctx, const char *udi) -{ - const char *backing_udi; - DBusError error; - LibHalVolume *volume; - - g_debug ("In crypto_setup_device_added for %s", udi); - - backing_udi = NULL; - volume = libhal_volume_from_udi (hal_ctx, udi); - if (volume != NULL) { - backing_udi = libhal_volume_crypto_get_backing_volume_udi (volume); - if (backing_udi != NULL) { - if (strcmp (backing_udi, crypto_setup_backing_udi) == 0) { - LibHalVolumeUsage fsuage; - - g_debug ("%s is backed by %s - will mount", udi, backing_udi); - - g_print (_("Clear text device is %s. Mounting.\n"), get_dev_file (volume, NULL)); - - fsuage = libhal_volume_get_fsusage (volume); - - if (fsuage == LIBHAL_VOLUME_USAGE_MOUNTABLE_FILESYSTEM) { - if (volume_mount (udi, volume, NULL)) - crypto_setup_rc = 0; - } else { - g_warning ("%s does not have a mountable filesystem", udi); - } - - notify_parent (crypto_setup_rc == 0); - gtk_main_quit (); - } - } - - libhal_volume_free (volume); - } - -} - -static gboolean -crypto_setup_timeout (gpointer data) -{ - g_warning ("Timeout for waiting for cleartext device... Exiting."); - notify_parent (FALSE); - gtk_main_quit (); - - return FALSE; -} - - static void my_empty_log_handler (const gchar *log_domain, GLogLevelFlags log_level, @@ -2576,8 +2352,6 @@ LibHalVolume *volume = NULL; const char *udi; char *resolved_device_file = NULL; - static gboolean opt_connect_crypto = FALSE; - static gboolean opt_disconnect_crypto = FALSE; static gboolean opt_verbose = FALSE; static gboolean opt_unmount = FALSE; static gboolean opt_eject = FALSE; @@ -2599,8 +2373,6 @@ { "no-ui", 'n', 0, G_OPTION_ARG_NONE, &opt_noui, "Don't show any dialogs", NULL}, { "block", 'b', 0, G_OPTION_ARG_NONE, &opt_block, "Allow gnome-mount to block for UI", NULL}, { "unmount", 'u', 0, G_OPTION_ARG_NONE, &opt_unmount, "Unmount", NULL}, - { "connect-crypto", 0, 0, G_OPTION_ARG_NONE, &opt_connect_crypto, "Setup crypto device", NULL}, - { "disconnect-crypto", 0, 0, G_OPTION_ARG_NONE, &opt_disconnect_crypto, "Tear down crypto device", NULL}, { "eject", 'e', 0, G_OPTION_ARG_NONE, &opt_eject, "Eject", NULL}, { "hal-udi", 'h', 0, G_OPTION_ARG_STRING, &opt_hal_udi, "Mount by HAL UDI", NULL}, { "device", 'd', 0, G_OPTION_ARG_STRING, &opt_device_file, "Mount by device file", NULL}, @@ -2633,10 +2405,6 @@ extra_mount_options_from_command_line = g_strdup (opt_extra_mount_options); fstype_from_command_line = g_strdup (opt_fstype); - if (opt_disconnect_crypto) { - opt_unmount = TRUE; - } - /* these options are only meaningful from the commandline */ if (opt_display_settings || opt_write_settings || @@ -2857,27 +2625,12 @@ fsusage = LIBHAL_VOLUME_USAGE_UNKNOWN; } - if (fsusage == LIBHAL_VOLUME_USAGE_CRYPTO) { - if (teardown_crypto (udi, volume, drive)) - rc = 0; - } else { + { if (volume_unmount (udi, volume, drive)) { /* as a convenience also tear down the crypto backing volume if appropriate */ if (volume != NULL) { - const char *backing_udi; - backing_udi = libhal_volume_crypto_get_backing_volume_udi (volume); - if (backing_udi != NULL) { - LibHalVolume *backing_volume; - backing_volume = libhal_volume_from_udi (hal_ctx, backing_udi); - if (backing_volume != NULL) { - if (teardown_crypto (backing_udi, backing_volume, NULL)) - rc = 0; - libhal_volume_free (backing_volume); - } - } else { rc = 0; - } } } } @@ -2894,70 +2647,7 @@ fsusage = LIBHAL_VOLUME_USAGE_UNKNOWN; } - if (fsusage == LIBHAL_VOLUME_USAGE_CRYPTO) { - char *password; - gboolean password_error; - gboolean setup_success; - char *clear_udi; - gboolean password_retry; - int password_num_tries; - - /* see if we're already setup */ - clear_udi = libhal_volume_crypto_get_clear_volume_udi (hal_ctx, volume); - if (clear_udi != NULL) { - g_warning (_("Crypto volume '%s' is already setup with clear volume '%s'"), - udi, clear_udi); - - free (clear_udi); - goto out; - } - - g_debug ("Crypto volume - UDI '%s'", udi); - - setup_success = FALSE; - - /* we need this to catch when the cleartext device is added */ - crypto_setup_backing_udi = udi; - libhal_ctx_set_device_added (hal_ctx, crypto_setup_device_added); - /* we need to catch this if the backing device is removed (to remove the password dialog) */ - libhal_ctx_set_device_removed (hal_ctx, crypto_setup_device_removed); - - password_retry = FALSE; - password_num_tries = 0; - retry_password: - password = get_password (udi, volume, drive, password_retry); - password_num_tries++; - if (password != NULL) { - setup_success = setup_crypto (udi, volume, drive, password, &password_error); - if (!setup_success && password_error) { - g_warning (_("Bad crypto password")); - if (!opt_nodisplay && password_num_tries < 3) { - g_free (password); - password_retry = TRUE; - goto retry_password; - } else { - g_warning (_("Bailing out...")); - } - } - } - - /* mount the clear volume except if --connect-crypto was explicitly passed */ - if (setup_success && !opt_connect_crypto) { - - /* wait as we try to mount the cleartext volume */ - g_debug ("Waiting for cleartext volume backed by %s..", udi); - /* add a timeout as we don't want to wait forever */ - g_timeout_add (10 * 1000, crypto_setup_timeout, NULL); - gtk_main(); - - rc = crypto_setup_rc; - } - - g_free (password); - - goto out; - - } else if (fsusage == LIBHAL_VOLUME_USAGE_MOUNTABLE_FILESYSTEM || + if (fsusage == LIBHAL_VOLUME_USAGE_MOUNTABLE_FILESYSTEM || fsusage == LIBHAL_VOLUME_USAGE_UNKNOWN) { if (volume_mount (udi, volume, drive)) rc = 0;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor