hal/hald device_info.c,1.16,1.16.2.1

David Zeuthen david at freedesktop.org
Mon Nov 22 13:53:52 PST 2004


Update of /cvs/hal/hal/hald
In directory gabe:/tmp/cvs-serv19436/hald

Modified Files:
      Tag: hal-0_4-stable-branch
	device_info.c 
Log Message:
2004-11-22  David Zeuthen  <david at fubar.dk>

	* hald/linux/volume_id/volume_id.c (volume_id_probe): Add some
	logging of what size we call volume_id_probe with

	* hald/linux/block_class_device.c (force_unmount): Only attempt to
	'umount -l' if some hal policy piece are performing policy on the
	device

2004-11-22  David Zeuthen  <davidz at redhat.com>

	* libhal-storage/libhal-storage.c (hal_drive_from_udi): Detect Zip
	and Jaz drives
	(hal_drive_policy_compute_display_name): Fix an ugly bug where
	CD-ROM drives were being named "CD-R" instead of "CD-ROM"

	* libhal-storage/libhal-storage.h: Add enums for Zip and Jaz drives

	* hald/linux/platform_bus_device.c (platform_device_in_gdl): New
	function. Actually check the /etc/mtab for whether the floppy is
	mounted

	* hald/linux/common.h: Add prototype for 
	etc_mtab_process_all_block_devices

	* hald/linux/block_class_device.c (block_class_visit): Never add
	child real childs (e.g. /dev/hdd4) if storage.no_partitions_hint is
	set (for IDE Zip Drives)
	(detect_media): Actually set child to what we find in the TDL
	(mtab_handle_storage): Match on device file before attempting to
	match on major/minor
	(mtab_handle_volume): -do-

	* hald/device_info.c (handle_match): Add the contains and 
	contains_ncase matching operators.

	* fdi/90defaultpolicy/storage-policy.fdi: Add some policy pieces for
	IDE Zip, Jaz and USB Zip drives

	* fdi/20freedesktop/usb-zip-drives.fdi: New file to identify USB
	Zip Drives

	* fdi/20freedesktop/ide-drives.fdi: New file to identify strange IDE
	drives such as Zip and Jaz drives; note that rewriting the device
	file from e.g. /dev/hdd to /dev/hdd4  is actually sane enough to
	do given the abstraction that hal exports :-)

2004-11-16  David Zeuthen  <davidz at redhat.com>

	* fdi/90defaultpolicy/storage-policy.fdi: Remove the "ro" option for
	optical drives as it prevents mounting rw DVD-RAM media (RH bug #139600)

	* hald/linux/volume_id/volume_id.h (VOLUME_ID_PARTITIONS_MAX): Increase
	to 256 (RH bug #139227)

	* hald/linux/volume_id/volume_id.c (probe_msdos_part_table): Fix a
	typo ("to many partitions" -> "too many partitions"
	(volume_id_probe): Do not probe for msdos_part_table since that doesn't
	make sense (../block_class_device.c does that instead)



Index: device_info.c
===================================================================
RCS file: /cvs/hal/hal/hald/device_info.c,v
retrieving revision 1.16
retrieving revision 1.16.2.1
diff -u -d -r1.16 -r1.16.2.1
--- device_info.c	14 Oct 2004 18:37:28 -0000	1.16
+++ device_info.c	22 Nov 2004 21:53:50 -0000	1.16.2.1
@@ -532,6 +532,48 @@
 			else
 				return TRUE;
 		}
+	} else if (strcmp (attr[2], "contains") == 0) {
+		const char *needle;
+		dbus_bool_t contains = FALSE;
+
+		needle = attr[3];
+
+		if (hal_device_property_get_type (d, prop_to_check) != DBUS_TYPE_STRING)
+			return FALSE;
+
+		if (hal_device_has_property (d, prop_to_check)) {
+			const char *haystack;
+
+			haystack = hal_device_property_get_string (d, prop_to_check);
+			if (needle != NULL && haystack != NULL && strstr (haystack, needle)) {
+				contains = TRUE;
+			}
+
+		}
+		return contains;
+	} else if (strcmp (attr[2], "contains_ncase") == 0) {
+		const char *needle;
+		dbus_bool_t contains_ncase = FALSE;
+
+		needle = attr[3];
+
+		if (hal_device_property_get_type (d, prop_to_check) != DBUS_TYPE_STRING)
+			return FALSE;
+
+		if (hal_device_has_property (d, prop_to_check)) {
+			char *needle_lowercase;
+			char *haystack_lowercase;
+
+			needle_lowercase   = g_utf8_strdown (needle, -1);
+			haystack_lowercase = g_utf8_strdown (hal_device_property_get_string (d, prop_to_check), -1);
+			if (needle_lowercase != NULL && haystack_lowercase != NULL && strstr (haystack_lowercase, needle_lowercase)) {
+				contains_ncase = TRUE;
+			}
+
+			g_free (needle_lowercase);
+			g_free (haystack_lowercase);
+		}
+		return contains_ncase;
 	} else if (strcmp (attr[2], "compare_lt") == 0) {
 		dbus_int64_t result;
 		if (!match_compare_property (d, prop_to_check, attr[3], &result)) {




More information about the hal-commit mailing list