patches/nautilus-cd-burner-02-non-raw-device.diff
author yippi
Mon, 27 Sep 2010 21:07:51 +0000
changeset 20108 51df67ca9307
parent 11504 80a0f3123533
permissions -rw-r--r--
I had these modules listed as being owned by me, but they are really owned by wangke, correcting.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11504
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
     1
--- nautilus-cd-burner-2.21.5/src/nautilus-burn-drive-monitor.c.orig	2007-05-06 14:12:34.497011000 +0800
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
     2
+++ nautilus-cd-burner-2.21.5/src/nautilus-burn-drive-monitor.c	2007-05-06 14:12:09.958116000 +0800
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
     3
@@ -597,13 +597,40 @@
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
     4
         NautilusBurnDrive *drive;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
     5
         NautilusBurnDrive *ret;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
     6
         char              *target;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
     7
+        char              *raw_device = NULL;
9803
8bd667d05f0f 2007-04-29 Irene Huang <[email protected]>
sh162551
parents:
diff changeset
     8
 
11504
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
     9
         ret = NULL;
9803
8bd667d05f0f 2007-04-29 Irene Huang <[email protected]>
sh162551
parents:
diff changeset
    10
 
11504
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    11
         g_return_val_if_fail (monitor != NULL, NULL);
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    12
         g_return_val_if_fail (device != NULL, NULL);
9803
8bd667d05f0f 2007-04-29 Irene Huang <[email protected]>
sh162551
parents:
diff changeset
    13
 
11504
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    14
-        target = resolve_symlink (device);
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    15
+       char ** cd_udis;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    16
+       LibHalContext * hal_ctx = monitor->priv->ctx;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    17
+       int num_hal_udis = 0;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    18
+       int i;
9803
8bd667d05f0f 2007-04-29 Irene Huang <[email protected]>
sh162551
parents:
diff changeset
    19
+
11504
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    20
+       if ((cd_udis = libhal_manager_find_device_string_match ( hal_ctx, "block.device",
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    21
+                               device, &num_hal_udis, NULL)) == NULL)
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    22
+               goto out;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    23
+       else if (num_hal_udis)
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    24
+               for (i = 0; i < num_hal_udis; i++) {
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    25
+                       char * udi;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    26
+                       udi = cd_udis[i];
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    27
+                       if (libhal_device_query_capability (hal_ctx, udi, "volume", NULL)) {
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    28
+                               raw_device = libhal_device_get_property_string (hal_ctx, udi,
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    29
+                                               "block.solaris.raw_device", NULL);
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    30
+                               libhal_free_string (udi);
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    31
+                               if (!raw_device)
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    32
+                                       continue;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    33
+                               for (;i < num_hal_udis; i ++)
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    34
+                                       libhal_free_string (cd_udis[i]);
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    35
+                               break;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    36
+                       }
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    37
+               }
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    38
+       if (!raw_device)
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    39
+               raw_device = g_strdup (device);
9803
8bd667d05f0f 2007-04-29 Irene Huang <[email protected]>
sh162551
parents:
diff changeset
    40
+
11504
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    41
+        target = resolve_symlink (raw_device);
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    42
         if (target == NULL) {
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    43
                 goto out;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    44
         }
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    45
@@ -618,13 +645,14 @@
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    46
                  */
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    47
                 if (drive->priv->device != NULL &&
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    48
                    (strcmp (drive->priv->device, target) == 0 ||
9803
8bd667d05f0f 2007-04-29 Irene Huang <[email protected]>
sh162551
parents:
diff changeset
    49
-                    strcmp (drive->priv->device, device) == 0)) {
11504
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    50
+                    strcmp (drive->priv->device, raw_device) == 0)) {
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    51
                         ret = nautilus_burn_drive_ref (drive);
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    52
                         break;
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    53
                 }
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    54
         }
9841
0fd2dc6cb09c 2007-05-06 Irene Huang <[email protected]>
sh162551
parents: 9803
diff changeset
    55
 
11504
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    56
         g_free (target);
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    57
+        g_free (raw_device);
9841
0fd2dc6cb09c 2007-05-06 Irene Huang <[email protected]>
sh162551
parents: 9803
diff changeset
    58
 
0fd2dc6cb09c 2007-05-06 Irene Huang <[email protected]>
sh162551
parents: 9803
diff changeset
    59
  out:
11504
80a0f3123533 2008-01-22 Damien Carbery <[email protected]>
dcarbery
parents: 9841
diff changeset
    60
         return ret;