# HG changeset patch
# User Darren Salt <[EMAIL PROTECTED]>
# Date 1171997850 0
# Node ID 31940e0750440e6ff67eb242f99b3483fc058c61
# Parent  3cc3db4e995d23b0bad1156638008b0dcb93009f
Show info for more devices, at least on Linux (needs fixing for BSD etc.).

diff -r 31940e0750440e6ff67eb242f99b3483fc058c61 -r 
3cc3db4e995d23b0bad1156638008b0dcb93009f src/preferences.c
--- a/src/preferences.c Tue Feb 20 18:57:30 2007 +0000
+++ b/src/preferences.c Tue Feb 20 16:35:23 2007 +0000
@@ -311,18 +311,39 @@ static gboolean check_hal (void)
 }
 
 static char *
+get_hal_property (const char *dev, const char *dev_tag, const char *prop_tag)
+{
+  int count;
+  char **devs = libhal_manager_find_device_string_match
+                 (hal, dev_tag, dev, &count, NULL);
+  if (!devs)
+    return NULL;
+  if (!devs[0])
+  {
+    libhal_free_string_array (devs);
+    return NULL;
+  }
+
+  char *prop = libhal_device_get_property_string (hal, devs[0], prop_tag, 
NULL);
+  char *ret = strdup (prop ? : "");
+  libhal_free_string (prop);
+  libhal_free_string_array (devs);
+  return ret;
+}
+
+static char *
 get_hal_device_info (const char *dev)
 {
   if (!check_hal () || !dev)
     return NULL;
 
-  int tmp, ldev = strlen (dev);
+  int ldev = strlen (dev);
   char buf[FILENAME_MAX + ldev + 1];
   strcpy (buf, dev); /* safe! */
   if (buf[0] == '/')
   {
     ldev = strrchr (buf, '/') - buf + 1;
-    tmp = readlink (dev, buf + ldev, FILENAME_MAX - 1);
+    int tmp = readlink (dev, buf + ldev, FILENAME_MAX - 1);
     if (tmp <= 0)
       strcpy (buf, dev); /* safe! */
     else if (buf[ldev] == '/')
@@ -347,20 +368,11 @@ get_hal_device_info (const char *dev)
       }
     }
   }
-  
-  char **devs = libhal_manager_find_device_string_match
-                 (hal, "block.device", buf, &tmp, NULL);
-  if (devs)
-  {
-    char *id = devs[0] ? libhal_device_get_property_string
-                          (hal, devs[0], "storage.model", NULL)
-                      : NULL;
-    char *ret = strdup (id ? : "");
-    libhal_free_string (id);
-    libhal_free_string_array (devs);
-    return ret;
-  }
-  return NULL;
+
+  return get_hal_property (buf, "block.device", "storage.model")
+        ? : get_hal_property (buf, "linux.device_file", "info.product")
+        /* FIXME - BSD etc. */
+        ;
 }
 
 static void
@@ -602,10 +614,10 @@ static GtkWidget *create_item_editable (
        "signal::file-activated", G_CALLBACK(file_activate_cb), widget,
 #ifdef WITH_HAL
        "signal::update-preview", G_CALLBACK(file_preview_cb), widget,
-       "signal::map", G_CALLBACK(file_preview_cb), widget,
+       "signal::map", G_CALLBACK(file_preview_cb), fc,
 #endif
        NULL);
-      g_signal_connect (G_OBJECT(widget), "map", G_CALLBACK(file_map_cb), fc);
+      g_signal_connect_after (G_OBJECT(widget), "map", 
G_CALLBACK(file_map_cb), fc);
     }
     else
     {

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Xine-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xine-cvslog

Reply via email to