# 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