summaryrefslogtreecommitdiff
path: root/sysutils/nautilus-cd-burner/files/patch-src_nautilus-burn-drive-monitor.c
blob: 2d62886636fa989c66c640c9ac87f1469adad3db (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
--- src/nautilus-burn-drive-monitor.c.orig        2007-07-10 15:06:23.000000000 -0400
+++ src/nautilus-burn-drive-monitor.c        2008-01-05 13:51:44.000000000 -0500
@@ -618,7 +618,8 @@ nautilus_burn_drive_monitor_get_drive_fo
                  */
                 if (drive->priv->device != NULL &&
                    (strcmp (drive->priv->device, target) == 0 ||
-                    strcmp (drive->priv->device, device) == 0)) {
+                    strcmp (drive->priv->device, device) == 0 ||
+                    strcmp (drive->priv->cdrecord_device, device) == 0)) {
                         ret = nautilus_burn_drive_ref (drive);
                         break;
                 }
@@ -683,6 +684,8 @@ hal_drive_from_udi (LibHalContext *ctx,
         NautilusBurnDrive        *drive;
         char                    **write_speeds = NULL;
         char                     *raw_device = NULL;
+        char                     *cam_path = NULL;
+        char                     *cam_device = NULL;
 
         LIBHAL_CHECK_LIBHALCONTEXT (ctx, FALSE);
 
@@ -711,6 +714,8 @@ hal_drive_from_udi (LibHalContext *ctx,
 
                 LIBHAL_PROP_EXTRACT_STRING  ("block.device",               drive->priv->device);
                 LIBHAL_PROP_EXTRACT_STRING  ("block.solaris.raw_device",   raw_device);
+                LIBHAL_PROP_EXTRACT_STRING  ("block.freebsd.atapi_cam_device", cam_device);
+                LIBHAL_PROP_EXTRACT_STRING  ("block.freebsd.cam_path",     cam_path);
                 LIBHAL_PROP_EXTRACT_STRING  ("storage.model",              drive->priv->display_name);
 
                 LIBHAL_PROP_EXTRACT_INT ("storage.cdrom.read_speed",   drive->priv->max_speed_read);
@@ -736,6 +741,17 @@ hal_drive_from_udi (LibHalContext *ctx,
                 drive->priv->device = raw_device;
         }
 
+        if (cam_device != NULL) {
+                g_free (drive->priv->device);
+                drive->priv->device = cam_device;
+        }
+
+        if (cam_path != NULL) {
+                drive->priv->cdrecord_device = cam_path;
+        } else {
+                drive->priv->cdrecord_device = g_strdup (drive->priv->device);
+        }
+
         drive->priv->drive_udi = g_strdup (udi);
         drive->priv->write_speeds = hal_parse_write_speeds (write_speeds);
         /* we do not own write_speeds so do not free it. */