12246N/A--- nautilus-cd-burner-2.21.5/src/nautilus-burn-drive-monitor.c.orig 2007-05-06 14:12:34.497011000 +0800
12246N/A+++ nautilus-cd-burner-2.21.5/src/nautilus-burn-drive-monitor.c 2007-05-06 14:12:09.958116000 +0800
12246N/A@@ -597,13 +597,40 @@
12246N/A NautilusBurnDrive *drive;
12246N/A NautilusBurnDrive *ret;
12246N/A char *target;
12246N/A+ char *raw_device = NULL;
10545N/A
12246N/A ret = NULL;
10545N/A
12246N/A g_return_val_if_fail (monitor != NULL, NULL);
12246N/A g_return_val_if_fail (device != NULL, NULL);
10545N/A
12246N/A- target = resolve_symlink (device);
12246N/A+ char ** cd_udis;
12246N/A+ LibHalContext * hal_ctx = monitor->priv->ctx;
12246N/A+ int num_hal_udis = 0;
12246N/A+ int i;
10545N/A+
12246N/A+ if ((cd_udis = libhal_manager_find_device_string_match ( hal_ctx, "block.device",
12246N/A+ device, &num_hal_udis, NULL)) == NULL)
12246N/A+ goto out;
12246N/A+ else if (num_hal_udis)
12246N/A+ for (i = 0; i < num_hal_udis; i++) {
12246N/A+ char * udi;
12246N/A+ udi = cd_udis[i];
12246N/A+ if (libhal_device_query_capability (hal_ctx, udi, "volume", NULL)) {
12246N/A+ raw_device = libhal_device_get_property_string (hal_ctx, udi,
12246N/A+ "block.solaris.raw_device", NULL);
12246N/A+ libhal_free_string (udi);
12246N/A+ if (!raw_device)
12246N/A+ continue;
12246N/A+ for (;i < num_hal_udis; i ++)
12246N/A+ libhal_free_string (cd_udis[i]);
12246N/A+ break;
12246N/A+ }
12246N/A+ }
12246N/A+ if (!raw_device)
12246N/A+ raw_device = g_strdup (device);
10545N/A+
12246N/A+ target = resolve_symlink (raw_device);
12246N/A if (target == NULL) {
12246N/A goto out;
12246N/A }
12246N/A@@ -618,13 +645,14 @@
12246N/A */
12246N/A if (drive->priv->device != NULL &&
12246N/A (strcmp (drive->priv->device, target) == 0 ||
10545N/A- strcmp (drive->priv->device, device) == 0)) {
12246N/A+ strcmp (drive->priv->device, raw_device) == 0)) {
12246N/A ret = nautilus_burn_drive_ref (drive);
12246N/A break;
12246N/A }
12246N/A }
10583N/A
12246N/A g_free (target);
12246N/A+ g_free (raw_device);
10583N/A
10583N/A out:
12246N/A return ret;