2005-04-27 David Zeuthen * hald/linux2/osspec_linux.h: Remove prototype for the function hal_util_get_device_file(). * hald/linux2/osspec.c (hal_util_get_udevinfo_path): Remove (hal_util_get_device_file): Remove * hald/linux2/coldplug.c (hal_util_get_udevinfo_path): Move from osspec.c (hal_util_get_sysfs_to_dev_map): New function (coldplug_synthesize_events): Get the sysfs->dev map in one go using 'udevinfo -d' available in udev since at least version 057. * configure.in: Bump dbus requirement to 0.33 since the new dbus is out. 2005-04-27 David Zeuthen * libhal/libhal.c (libhal_device_set_property_helper): Don't leak the DBusMessage objects * hald/hald_dbus.c (sender_has_privileges): Don't leak the error and actually return FALSE if sender is unprivileged. Also fix up spelling. 2005-04-18 David Zeuthen * configure.in: Bump glib-2.0 requirement to 2.6.0; change dbus-1 and dbus-glib-1 to back 0.32 so it works with patched 0.32 tarballs. glib observation from Rohan . 2005-04-14 David Zeuthen Make hal handle APM nicely. * hald/linux2/apm.c (apm_poll): New function (battery_refresh): Hmm, APM reports -1 if battery is absent. s/system.ac_adapter/ac_adapter/ - Patch from Bill Nottingham (apm_synthesize_hotplug_events): Add time for APM polling 2005-04-13 David Zeuthen Some patches from Martin Pitt . * tools/device-manager/Representation.py: (Representation.load_and_scale_icon): Use TRUE instead of gtk.TRUE since the latter is deprecated * hald/hald.c (main): Drop privileges a bit later so we have a chance to bind to the netlink socket 2005-04-11 David Zeuthen * configure.in: Add /var/lib/music to the search path for pci.ids. Patch from Murray Cumming , fdo bug #2547. 2005-04-08 David Zeuthen Make all hal helpers use a direct connection to hald rather than going through the bus. This is for both performance and security reasons. Also, fix the reconnect issue and don't connect to the system message bus before probing is done. * configure.in: Require dbus 0.33; that, for now, means D-BUS CVS HEAD since it requires the patch in fd.o bug #2889 and D-BUS made a post-release version bump. I'll look into doing a D-BUS release soon. * libhal/libhal.h: Export prototype for libhal_ctx_init_direct() * libhal/libhal.c (libhal_ctx_init_direct): New convenience function for connecting directly to hald instead of going through the message bus (requires the address in the HALD_DIRECT_ADDR environment variable) * hald/util.c (hal_util_helper_invoke): Export the local hald dbus server address in HALD_DIRECT_ADDR * hald/hald_dbus.c (manager_send_signal_device_added): Handle the case where we're not connected to the system message bus (manager_send_signal_device_removed): -do- (manager_send_signal_new_capability): -do- (device_property_atomic_update_end): -do- (device_send_signal_property_modified): -do- (device_send_signal_condition): -do- (device_set_property): Always allow local interface (device_add_capability): -do- (device_remove_property): -do- (device_rescan): -do- (device_reprobe): -do- (device_emit_condition): -do- (hald_dbus_filter_handle_methods): New function (hald_dbus_filter_function): Move bulk of functionality to the new hald_dbus_filter_handle_methods() and pass local_interface==FALSE. Handle Disconnect from local libdbus properly and attempt to reconnect to the system message bus every so often (every 3 secs) (local_server_message_handler): New function (local_server_unregister_handler): New function (local_server_handle_connection): New function (hald_dbus_local_server_addr): New function (hald_dbus_local_server_init): New function * hald/hald.c (main): Register a local dbus server instead of connection to the system bus as startup (osspec_probe_done): Only connect to the system bus once probing is done * tools/fstab-sync.c (main): Use direct connection * hald/linux2/probing/probe-volume.c (main): Use direct connection * hald/linux2/probing/probe-storage.c (main): Use direct connection * hald/linux2/probing/probe-smbios.c (main): Use direct connection * hald/linux2/probing/probe-printer.c (main): Use direct connection * hald/linux2/probing/probe-hiddev.c (main): Use direct connection * hald/linux2/probing/probe-input.c (main): Use direct connection * hald/linux2/addons/addon-usb-csr.c (main): Use direct connection * hald/linux2/addons/addon-storage.c (main): Use direct connection * hald/linux2/addons/addon-hid-ups.c (main): Use direct connection * hald/linux2/addons/addon-acpi.c (main): Use direct connection * hald/linux2/probing/probe-pc-floppy.c (main): Remove all references to hal and dbus since this program just returns the result in the exit code 2005-04-06 Kay Sievers * hald/linux2/probing/probe-volume.c: (main): read volume label from last session of optical multisession disk. 2005-04-04 David Zeuthen * hald/linux2/addons/Makefile.am (libexec_PROGRAMS): Only build hald-addon-usb-csr if we have libusb * configure.in: Check for libusb (since it appear not to build on s390/s390x if we don't have it) 2005-04-04 David Zeuthen * hald/linux2/probing/probe-storage.c (main): storage.serial and storage.firmware_revision may return bogus data so don't quit if we fail when setting it (Red Hat bug #151762) 2005-04-04 David Zeuthen * fdi/information/10freedesktop/10-wireless-mice.fdi: Change battery.type from 'keyboard_mouse' to just 'keyboard'. 2005-04-04 David Zeuthen * libhal-storage/libhal-storage.c: Fix for when gettext is not available. From Steve Grubb . 2005-04-04 David Zeuthen * po/zh_TW.po: New file from chaoweilun@pcmail.com.tw * po/ChangeLog: Updated * configure.in: Added zh_TW to ALL_LINGUAS 2005-04-02 Richard hughes * hald/linux2/addons/addon-usb-csr: Fix a problem where the capability was being added before the charge_level key way set, causing programs watching for the "new capability" to not be able to query the key until it was restarted. 2005-03-30 David Zeuthen * fdi/information/10freedesktop/10-usb-pda.fdi: Match for info. capabilities instead of info.bus 2005-03-30 David Zeuthen * fdi/information/10freedesktop/10-usb-pda.fdi: Update from Andrei Yurkevich ; slightly tweaked by me 2005-03-29 David Zeuthen * fdi/information/10freedesktop/10-usb-pda.fdi: New file to match all PDA's - right now it only got a single entry 2005-03-24 David Zeuthen * libhal/libhal.c (filter_func): Stupid bug; checked for ctx-> device_new_capability, but should check for ctx->device_condition * hald/linux2/physdev.c (pci_add): Even more stupid bug; somehow the hal_util_set_driver were enclosed in an if statement, thus rendering the next statement conditional (the one that sets pci.product_id) 2005-03-23 David Zeuthen Patch from Sergey Udaltsov , slightly tweaked to be in line with the spec * hald/linux2/addons/addon-usb-csr.c: New file * fdi/information/10freedesktop/10-wireless-mice.fdi: New file * doc/spec/hal-spec.xml.in: Add keyboard_mouse as allowed value for battery.type 2005-03-22 David Zeuthen * hald/linux2/physdev.c: Actuall change driver property to be uniform, e.g. put it in info.linux.driver 2005-03-22 David Zeuthen * hald/linux2/probing/probe-storage.c (main): Add some extra debugging to help me with RH bug #151762 * hald/linux2/physdev.c: Set .linux.driver for all bus devices * hald/linux2/classdev.c (net_add): Don't set net.linux.driver, first of all because it doesn't make sense (drivers don't bind to class devices, they bind to physical devices), second because the Linux kernel moved around where the driver symlink is. 2005-03-21 David Zeuthen * doc/TODO: Add a small item here 2005-03-20 David Zeuthen Teach hal about Firewire devices; tested with both my iPod and my Powerbook in Target Disk Mode * tools/device-manager/Const.py.in: Collapse ieee1394_host and ieee1394_node into ieee1394 * hald/linux2/physdev.c (ieee1394_add): New function (ieee1394_compute_udi): New function 2005-03-17 David Zeuthen * hald/util.c (hal_util_grep_file): Remove some debug spewage 2005-03-17 Richard hughes * hald/linux2/apm.c (battery_refresh): Fix a typo, s/battery.charge_level/battery.charge_level.current so that matches ACPI (and HAL spec). * hald/linux2/addons/addon-hid-ups.c: Fix a typo, s/battery.is_charging/battery.rechargeable.is_charging so that matches ACPI (and HAL spec). 2005-03-17 David Zeuthen * tools/linux/hal_hotplug.c: We need to look for the sysfs_mount_path only if we read the ifindex from a network interface. This safes us from parsing the proc file with every hotplug event. From Kay Sievers . 2005-03-16 Kay Sievers Replace boolean action type of hotplug event with enum, cause hotplug actions are not limited to "add" and "remove" events. The kernel already emits "online", "offline" hotplug events for hotplugging cpu's. * hald/linux2/acpi.c: (acpi_synthesize), (acpi_generate_add_hotplug_event), (acpi_generate_remove_hotplug_event): * hald/linux2/apm.c: (apm_synthesize_hotplug_events), (apm_generate_add_hotplug_event), (apm_generate_remove_hotplug_event): * hald/linux2/blockdev.c: (generate_fakevolume_hotplug_event_add_for_storage_device), (blockdev_generate_add_hotplug_event), (blockdev_generate_remove_hotplug_event): * hald/linux2/classdev.c: (classdev_generate_add_hotplug_event), (classdev_generate_remove_hotplug_event): * hald/linux2/coldplug.c: (coldplug_synthesize_events), (coldplug_synthesize_block_event), (coldplug_compute_visit_device): * hald/linux2/hotplug.c: (hotplug_event_begin_sysfs), (hotplug_event_begin_acpi), (hotplug_event_begin_apm), (hotplug_event_begin_pmu): * hald/linux2/hotplug.h: * hald/linux2/osspec.c: (hald_helper_data): * hald/linux2/physdev.c: (physdev_generate_add_hotplug_event), (physdev_generate_remove_hotplug_event): * hald/linux2/pmu.c: (pmu_synthesize_hotplug_events), (pmu_generate_add_hotplug_event), (pmu_generate_remove_hotplug_event): 2005-03-15 David Zeuthen * hald/util.c (hal_util_get_string_from_file): Yikes, variable i needs to be a gint rather than an guint otherwise our for-loop with i >= 0 will continue with i < 0 (only seen on x86_64 with gcc4) * hald/linux2/classdev.c (serial_add): Also make an unsigned int an int cf. above comment 2005-03-15 David Zeuthen * fdi/information/10freedesktop/10-usb-card-readers.fdi: Add device-information for the builtin USB2 card reader in my HP Media Center x86_64 box 2005-03-15 David Zeuthen * doc/TODO (CVSID): Add a few items 2005-03-15 David Zeuthen Two patches from Kay Sievers Kay Sievers * hald/linux2/physdev.c (usb_add): Such events should not happen, but better recover from it. :) SEQNUM=0 ACTION=add DEVPATH= "/devices/pci0000:00/0000:00:1d.7" /usr/libexec/hal.hotplug usb * hald/linux2/hotplug.c (hotplug_event_begin_sysfs): While playing around with hotplug event replay from initramfs, it happens, that events are generated for devices HAL already knows from its coldplug run. This leads to a lot of funny double entries in the device store. :) We should prevent the device addition by hotplug events if we already have one with the same sysfs-devpath. 2005-03-12 W. Michael Petullo * hald/linux2/blockdev.c: s/sesame/luks. * hald/linux2/coldplug.c: Ensure that device mapper devices are processed after all other block devices. 2005-03-13 David Zeuthen * tools/linux/add_selinux.c (main): Check if selinux is enabled, cause we still get the removable context on kernels where SELinux is disabled 2005-03-12 David Zeuthen * tools/hal_get_property.c (main): Make this work for strlists 2005-03-12 David Zeuthen Bah, I still need to update the spec for all the new stuff; until then, here's some other new stuff - one very relevant use for this is that we can key off whether a system can ACPI S3 by e.g. looking at the new smbios.* properties on computer (so distros can maintain a whitelist) - another interesting one is system.formfactor that e.g. Nautilus can use to select the right icon for Computer * hald/linux2/probing/probe-smbios.c: New file; invoke dmidecode and extract useful properties * hald/linux2/probing/Makefile.am: Add build rules for new prober hald-probe-smbios * hald/linux2/osspec.c (computer_probing_helper_done): New function (computer_probing_pcbios_helper_done): New function (osspec_probe): Do the hald-probe-smbios if system supports ACPI or APM; add note to do something similar for PowerMac's etc. 2005-03-11 David Zeuthen * hald/linux2/probing/probe-volume.c (main): Patch from Kay Sievers I need the following to make linux raid volumes working again. I have a test disk here, that does not work with the new HAL. 2005-03-11 Kay Sievers Add all the ATA raid signatures which are supported in the dmraid library. volume_id will just recognize the raid signatures and set the usage to raid, to prevent raid members to show up as mountable volumes. Any detailed informatiuon about the raid set must be queried with the original lib. * volume_id/Makefile.am: * volume_id/highpoint.c: (volume_id_probe_highpoint_37x_raid), (volume_id_probe_highpoint_45x_raid): * volume_id/highpoint.h: * volume_id/isw_raid.c: (volume_id_probe_intel_software_raid): * volume_id/isw_raid.h: * volume_id/linux_raid.c: (volume_id_probe_linux_raid): * volume_id/logging.h: * volume_id/lsi_raid.c: (volume_id_probe_lsi_mega_raid): * volume_id/lsi_raid.h: * volume_id/ntfs.c: (volume_id_probe_ntfs): * volume_id/nvidia_raid.c: (volume_id_probe_nvidia_raid): * volume_id/nvidia_raid.h: * volume_id/promise_raid.c: (volume_id_probe_promise_fasttrack_raid): * volume_id/promise_raid.h: * volume_id/silicon_raid.c: (volume_id_probe_silicon_medley_raid): * volume_id/silicon_raid.h: * volume_id/via_raid.c: (volume_id_probe_via_raid): * volume_id/via_raid.h: * volume_id/volume_id.c: (volume_id_probe_all): * volume_id/volume_id.h: Version 42. 2005-03-11 Kay Sievers * volume_id/Makefile.am: add minix probing code * volume_id/luks.c: * volume_id/minix.c: New file. * volume_id/minix.h: New file. * volume_id/util.c: (volume_id_set_unicode16), (volume_id_set_label_unicode16): Export unicode converter. * volume_id/util.h: Export unicode converter. * volume_id/volume_id.c: (volume_id_probe_all): Add minix. * volume_id/volume_id.h: Version 41. 2005-03-10 David Zeuthen * hald/linux2/acpi.c (battery_refresh_poll): Also set property battery.charge_level.rate (acpi_poll): Make the update atomic * doc/spec/hal-spec.xml.in: Update for battery.charge_level.rate 2005-03-10 David Zeuthen Bah, so it turns out that crappy BIOS'es and what-have-you gets really upset of hald, every five seconds, accessing the state file three times and the info file one time (in /proc/acpi/battery/BAT%d) https://www.redhat.com/archives/fedora-devel-list/2005-March/msg00704.html So, off to read the battstat applet source - fix this up so we only access a single file every 30 seconds; just like battstat applet. I really hate hardware. * hald/linux2/acpi.c (ACPI_POLL_INTERVAL): Only poll every 30 seconds (battery_refresh_poll): New function (battery_refresh): Call battery_refresh_poll (acpi_poll): Call battery_refresh_poll instead of acpi_rescan_device * hald/util.c (hal_util_grep_file): Fix this so the last read buffer is cached for reuse 2005-03-09 David Zeuthen * hald/linux2/addons/addon-acpi.c (main): Handle /proc/acpi/event as a file, not a socket. Now we can run without acpid :-). Reported by Bill Nottingham. 2005-03-07 David Zeuthen Release 0.5.0 * NEWS: Update for release 2005-03-07 David Zeuthen * hald/hald_test.c (main): Back out libhal testing code for now. (check_properties): We've changed the semantics of hal_device_ property_strlist_add so change test suite accordingly * doc/TODO: Add note about extending test suite coverage 2005-03-07 David Zeuthen * doc/TODO: Forgot one important TODO about finishing the volume_id library (pretty please Kay :-) 2005-03-07 David Zeuthen * doc/TODO: Updated this to reflect reality * hald/linux2/pmu.c (battery_refresh): Pass reuse=FALSE (ac_adapter_refresh): Pass reuse=FALSE * hald/linux2/classdev.c (sound_add): pass reuse=FALSE * hald/linux2/acpi.c: Poll every five secs instead of every two secs as this actually is a very expensive operation - someone needs to optimize hald/util.c:hal_util_grep_file before we can change this - see the TODO in that function (battery_refresh): Use the hal_util_grep_discard_existing_data() since we are passing reuse=TRUE. Minimize amount of reads. (fan_refresh): Don't set processor.number here (!) * hald/util.c (hal_util_grep_discard_existing_data): New function to purge "reused" data (hal_util_grep_file): Take the reuse parameter (hal_util_grep_string_elem_from_file): Take and pass reuse param (hal_util_grep_int_elem_from_file): Take and pass reuse param (hal_util_set_string_elem_from_file): Take and pass reuse param (hal_util_set_int_elem_from_file): Take and pass reuse param (hal_util_set_bool_elem_from_file): Take and pass reuse param * hald/util.h: Fixup prototypes for functions above and add prototype for hal_util_grep_discard_existing_data 2005-03-04 David Zeuthen * hald/linux2/acpi.c (ACPI_POLL_INTERVAL): Change this to every two secs instead of every ten secs 2005-03-04 David Zeuthen * hald/linux2/blockdev.c (blockdev_get_luks_uuid): Only sleep the 0.5s if we are not initialising (hotplug_event_begin_add_blockdev): Don't leak the HalDevice object 2005-03-02 W. Michael Petullo * hald/linux2/blockdev.c: Add ability to identify volumes in /dev/mapper as the counterpart to a LUKS+encrypted device. 2005-03-04 Kay Sievers * volume_id/luks.c: (volume_id_probe_luks): Remove unneeded stuff. * volume_id/volume_id.h: Version v37. 2005-03-02 W. Michael Petullo * volume_id/luks.c: (volume_id_probe_luks) Use new UUID_DCE_UNPARSED format for volume_id_set_uuid call. * volume_id/util.c: (volume_id_set_uuid) Add UUID_DCE_UNPARSED format. * volume_id/util.h: Add UUID_DCE_UNPARSED format. * volume_id/volume_id.c: Only #include "luks.h" once. 2005-03-03 David Zeuthen * hald/linux2/classdev.c (serial_add): New function (note the TODO :-) (serial_compute_udi): New function 2005-03-02 David Zeuthen * hald/linux2/acpi.c (battery_refresh): Remove .last_full, not .maximum 2005-03-02 David Zeuthen * doc/spec/hal-spec.xml.in: Change this to remove the property battery.charge_level.maximum and introduce battery.charge_level.design and battery.charge_level.last_full instead * hald/linux2/addons/addon-hid-ups.c (ups_get_static): Update code to use new the new properties * hald/linux2/pmu.c (battery_refresh): Update code to use new the new properties * hald/linux2/apm.c (battery_refresh): Update code to use new the new properties * hald/linux2/acpi.c (battery_refresh): Update code to use new the new properties 2005-03-02 David Zeuthen * hald/linux2/acpi.c (acpi_poll): New function (acpi_synthesize_hotplug_events): Setup timeout every ten seconds to poll batteries (since some ACPI implementations don't report back when the battery charge level changes) 2005-03-02 David Zeuthen * hald/linux2/addons/addon-acpi.c (main): Do call Rescan() when we get a battery event 2005-03-02 David Zeuthen * hald/linux2/acpi.c (processor_refresh): s/system.processor/processor/ 2005-03-02 Richard Hughes * hald/linux2/acpi.c (processor_refresh, fan_refresh): New functions to handle additional ACPI devices. * hald/linux2/acpi.c (acpi_synthesize_hotplug_events): Added processor and fan handlers. 2005-03-02 David Zeuthen * hald/linux2/classdev.c (sound_add): Rename alsa.id to alsa.card_id; add alsa.device_id; fixup info.product to be more useful * doc/spec/hal-spec.xml.in: Update for alsa.* properties 2005-03-02 David Zeuthen * libhal/libhal.c (filter_func): Remove foo[012] messages 2005-03-02 David Zeuthen * tools/device-manager/DeviceManager.py: (DeviceManager.remove_device_signal_recv): Do add PropertyModified though 2005-03-02 Richard Hughes * doc/spec/hal-spec.xml.in: Removed all the 'system.' prefixes to the ACPI and PMU objects, they serve no purpose other to confuse people. * hald/linux2/acpi.c (ac_adapter_refresh, button_refresh): Removed 'system.' prefix. * hald/linux2/pmu.c (ac_adapter_refresh): Removed 'system.' prefix. * hald/util.c: Updated comment regarding 'system.' 2005-03-02 David Zeuthen * tools/device-manager/DeviceManager.py: Move some things around only to discover that D-BUS python bindings need fixing to actually push signals we subscribe to without giving the path... * tools/lshal.c (device_condition): Fix this function so it works after the DeviceCondition format changes earlier * libhal/libhal.h: Export prototype for libhal_device_emit_condition * libhal/libhal.c (libhal_device_emit_condition): New function * hald/linux2/addons/addon-storage.c (main): Fix that we should be verbose * hald/linux2/addons/addon-acpi.c (read_line): Rewrite this to not malloc all over the place (main): Try two places for ACPI events. Rework parsing of events and send out DeviceConditions where appropriate * hald/hald_dbus.c (device_emit_condition): New function (hald_dbus_filter_function): Handle EmitCondition 2005-03-01 Richard Hughes * hald/linux2/addons/addon-acpi.c (main): Call libhal_device_rescan for each ACPI event. 2005-02-28 Richard Hughes * doc/spec/hal-spec.xml.in: Added ALSA namespace * hald/linux2/classdev.c (sound_add, sound_compute_udi): New functions to handle ALSA devices. * ChangeLog: Updated my email address in this file. 2005-03-01 David Zeuthen * hald/hald_dbus.c (foreach_device_by_capability): Fixup this function to work with the new D-BUS API (device_lock): Be consistent with new D-BUS naming, e.g. use info.locked.dbus_name instead of info.lock.dbus_service (device_unlock): -do- (service_deleted): Use NameOwnerChanged instead of NameLost as the latter only goes to the service who's lost the name (hald_dbus_filter_function): -do- (hald_dbus_init): Subscribe to NameOwnerChanged rather than NameLost * examples/locking.py: Fixup to use get_unique_name() instead of get_base_service() 2005-02-28 David Zeuthen * hald/linux2/ids.c: Added TOS6200, TOS6202, TOS6207 entries from Richard Hughes - he got them from http://homel.vsb.cz/~pop036/files/acpi_toshiba.c 2005-02-28 David Zeuthen * tools/linux/hal_hotplug.c (main): Use "hal.hotplug" instead of "hal.hotplug2" for syslog. Don't write a message for every entry. * hald/linux2/probing/probe-volume.c (main): Only probe for fs on optical disc if there is indeed data on the disc * hald/linux2/probing/probe-storage.c (main): Fix up debug outputs; don't read fs on cdrom's, only check if there is a disc. Don't use O_NONBLOCK on non-cdrom's. * hald/linux2/classdev.c (add_classdev_probing_helper_done): Handle that HalDevice object is already unreffed * hald/linux2/blockdev.c (add_blockdev_probing_helper_done): Handle that HalDevice object is already unreffed (block_rescan_storage_done): -do- * hald/util.h (struct HalHelperData_s): Add already_issued_kill field * hald/util.c (hal_util_terminate_helper): Don't kill helpers twice and don't callback more than once (helper_child_timeout): Don't callback more than once (helper_device_object_finalized): Finalized; being called when a HalDevice object is finalized; use this as hint to terminate the helper (helper_child_exited): Remove the weak reference to the HalDevice object (hal_util_helper_invoke): Create a weak reference to the HalDevice object so we get a callback when it's finalized * hald/hald.c (main): Bah, put LIBEXECDIR at the end so we get the local helpers when running via run-hald.sh 2005-02-27 David Zeuthen More fun with valgrind :-) * hald/linux2/classdev.c: Fix a bunch of leaks by calling g_object_unref for HalDevice objects that goes away * hald/linux2/physdev.c: Fix a bunch of leaks by calling g_object_unref for HalDevice objects that goes away * hald/linux2/hotplug.c (hotplug_event_begin_sysfs): Don't leak parent_path * hald/linux2/coldplug.c (free_hash_sys_to_class_in_dev): New function; to free values of the sysfs_to_class_in_devices_map hashtable (coldplug_synthesize_events): Fix memory leaks * hald/linux2/blockdev.c: Fix a bunch of leaks by calling g_object_unref for HalDevice objects that goes away * hald/property.c (hal_property_set_string): Don't leak old value * hald/hald_dbus.c (sender_has_privileges): Fixup error handling (device_property_atomic_update_end): Fix memory leak * hald/hald.h: Add HALD_MEMLEAK_DBG but uncomment it by default * hald/hald.c (my_shutdown): New function, defined only if HALD_MEMLEAK_DBG is set; should prolly be invoked by handler registered with atexit(3); some day in the future (osspec_probe_done): Add appropriate timeout if HALD_MEMLEAK_DBG is et * hald/device.c (hal_device_finalize, hal_device_new): Recognize the HALD_MEMLEAK_DBG define and maintain dbg_hal_device_object_delta accordingly. (hal_device_set_udi): Don't leak old udi * hald/valgrind-hald.sh: New file - useful for finding memory leaks 2005-02-27 David Zeuthen Played around with Valgrind on this slow Sunday :-). Before this patch options 'valgrind --show-reachable=yes --leak-check=yes --tool=memcheck ./hald --daemon=no --retain-privileges' - remember to set up environment variables as in run-hald.sh. Some of the output: 497664 bytes in 486 blocks are still reachable in loss record 33 of 35 at 0x1B908984: malloc (vg_replace_malloc.c:131) by 0x4DE983: (within /usr/lib/libexpat.so.0.5.0) by 0x4E1729: XML_ParserCreate_MM (in /usr/lib/libexpat.so.0.5.0) by 0x4E17C1: XML_ParserCreate (in /usr/lib/libexpat.so.0.5.0) 1003104 bytes in 972 blocks are still reachable in loss record 34 of 35 at 0x1B908984: malloc (vg_replace_malloc.c:131) by 0x4DD4A2: (within /usr/lib/libexpat.so.0.5.0) by 0x4DD5F1: (within /usr/lib/libexpat.so.0.5.0) by 0x4E0596: (within /usr/lib/libexpat.so.0.5.0) 2115584 bytes in 486 blocks are still reachable in loss record 35 of 35 at 0x1B908984: malloc (vg_replace_malloc.c:131) by 0x4DC64E: XML_GetBuffer (in /usr/lib/libexpat.so.0.5.0) by 0x4DC91E: XML_Parse (in /usr/lib/libexpat.so.0.5.0) by 0x805093E: scan_fdi_files (device_info.c:1282) LEAK SUMMARY: definitely lost: 20034 bytes in 769 blocks. possibly lost: 1057 bytes in 21 blocks. still reachable: 5289701 bytes in 19813 blocks. suppressed: 0 bytes in 0 blocks. plus some illegal memory access errors. After this patch 130613 bytes in 1 blocks are still reachable in loss record 23 of 24 at 0x1B908984: malloc (vg_replace_malloc.c:131) by 0x80610E2: ids_init (ids.c:514) by 0x8056A15: osspec_init (osspec.c:337) by 0x8051DF8: main (hald.c:591) 322003 bytes in 1 blocks are still reachable in loss record 24 of 24 at 0x1B908984: malloc (vg_replace_malloc.c:131) by 0x806101D: ids_init (ids.c:292) by 0x8056A15: osspec_init (osspec.c:337) by 0x8051DF8: main (hald.c:591) LEAK SUMMARY: definitely lost: 20884 bytes in 774 blocks. possibly lost: 800 bytes in 20 blocks. still reachable: 643659 bytes in 4499 blocks. which gives us a net saving of approx 4.5MB. Sweet. (yes, this ChangeLog is somewhat a weblog for me these days) * hald/device_info.c (process_fdi_file): Fix up error handling; remember to free the XML_Parser context which fixes a 4.5MB memory leak on my system. * hald/linux2/coldplug.c (coldplug_synthesize_events): Free strings to seal a leak * hald/util.h: Export hal_util_hexdump prototype * hald/util.c (hal_util_grep_string_elem_from_file): Yikes, make this a static buffer since we're returning a pointer to this variable. (hal_util_hexdump): New convenience function * hald/hald_dbus.c (device_add_capability): Fixup this function to actually work now that info.capabilities is a strlist * hald/hald.c (parent_wait_for_child): Fix unneeded char buf[1]. 2005-02-26 David Zeuthen * fdi/policy/10osvendor/10-storage-policy.fdi: Fix syntax error 2005-02-26 David Zeuthen * fdi/policy/10osvendor/10-storage-policy.fdi: Use mount point 'ipod' for iPod's (works better with gtkpod :-). Apply patch from Daniel Serpell that I got via Sjoerd Simons : The FDI rule that detects USB ZIP drive and names the mountpoint is incorrectly write, so partitioned ZIP's are named generically. The attached patch fixes the test (lookup in the parent of the partition). * fdi/information/10freedesktop/10-usb-music-players.fdi: Rename portable_audio_player.database_type to p_a_p.type 2005-02-26 David Zeuthen * fdi/information/10freedesktop/Makefile.am (dist_fdi_DATA): Remember to dist new files 2005-02-26 David Zeuthen * libhal-storage/libhal-storage.h: Add new LibHalDriveType entries for ZIP, JAZ and FLASH_KEY - the latter represents a USB memory stick. * libhal-storage/libhal-storage.c (my_strvdup): New function (libhal_drive_from_udi): Fixup new detection of cameras and musicplayers. Also handle storage.drive_type zip, jaz and flash_key and convert to LibHalDriveType as appropriate * libhal/libhal.h: Fixup type for LibHalDeviceCondition * libhal/libhal.c (filter_func): Fix up condition handling now that it's a name and details string rather than a whole DBusMessage trailing off. Fix up a bunch of free's due to new memory ownership semantics in the new D-BUS (libhal_device_query_capability): Handle this now that capabilities is a strlist * hald/device.c (hal_device_merge): info.capabilities is now a strlist (hal_device_add_capability): -do- (hal_device_has_capability): -do- (hal_device_property_strlist_add): Return whether element was actually added * fdi/information/10freedesktop/10-usb-zip-drives.fdi: New file * fdi/information/10freedesktop/10-usb-music-players.fdi: New file * fdi/information/10freedesktop/10-usb-card-readers.fdi: New file 2005-02-25 David Zeuthen * hald/linux2/probing/probe-pc-floppy.c: New file; test for floppy drive * hald/linux2/probing/Makefile.am: Add build rules for hald-probe- pc-floppy * hald/linux2/blockdev.c (blockdev_callouts_preprobing_storage_done): Do a special probe to see if the PC Floppy Drive is actually there - since many IDE laptops got the controller chip but not the drive. (hotplug_event_begin_add_blockdev): Learn how to spell; floppy not floopy :-/ 2005-02-25 David Zeuthen Get IDE Zip drives and PC Style floppy drives to work. * hald/linux2/blockdev.c (add_blockdev_probing_helper_done): Add a note that helper_data may be NULL (blockdev_callouts_preprobing_storage_done): Don't probe non- partitioned media where we cannot check for media (hotplug_event_begin_add_blockdev): Fix up for PC floppy drives. Fix stoopid bug where == 0 was missing for strcmp (media, "floppy). Doh * fdi/policy/10osvendor/10-storage-policy.fdi: Remove selinux mount options here because it is handled elsewhere now 2005-02-25 Kay Sievers * volume_id/logging.h: Move HAL specific logging to this file. * volume_id/luks.c: (volume_id_probe_luks): Remove unused stuff. * volume_id/luks.h: Fix typo and copyright. * volume_id/reiserfs.c: (volume_id_probe_reiserfs): Support reiser4. * volume_id/volume_id.c: Include luks.h. * volume_id/volume_id.h: Version 36. Remove HAL specific logging. 2005-02-25 David Zeuthen * hald/hald_dbus.c (hald_dbus_filter_function): Patch from Ray Strode to catch up with D-BUS changes 2005-02-24 David Zeuthen * configure.in: Add back selinux detection; default to auto * tools/linux/add_selinux.c: New file, add selinux attributes the Right Way(tm) instead of hardcoding the context (RH bug 135765) * tools/linux/Makefile.am: If HAVE_SELINUX is set, add build rules for hald-add-selinux-mount-option * fdi/policy/10osvendor/20-storage-add-selinux.fdi: New file, invoke hald-add-selinux-mount-option (only used if HAVE_SELINUX is 1) * tools/linux/hal_hotplug_map.c: Removed (forgot to remove it earlier) 2005-02-24 David Zeuthen * hald/hald.c (parent_wait_for_child): Fixup accidental message being printed 2005-02-24 David Zeuthen Finally got around to implementing the bit that made the parent wait for device probing when daemonizing. Hope that it's right this time cause the last time it resulted in breaking peoples pkg updates :-): https://www.redhat.com/archives/fedora-test-list/2004-August/msg00785.html * hald/linux2/osspec.c (hotplug_queue_now_empty): New function; call osspec_probe_done if we're initialising and don't do anything else * hald/linux2/hotplug.h: Export prototype for hotplug_queue_now_empty * hald/linux2/hotplug.c (hotplug_event_process_queue): Call the function hotplug_queue_now_empty when we are out of hotplug (or coldplug :-) events to process. * hald/hald.c (handle_sigchld): New function (parent_wait_for_child): New function (main): Wait for child to finish device probing when daemonizing 2005-02-24 David Zeuthen * hald/linux2/osspec.c (osspec_shutdown): Remove this function * hald/dummy/osspec.c (computer_callouts_add_done): New function (osspec_probe): Fixup to use new di_search_and_merge stuff * hald/util.h: Export prototype for hal_util_kill_all_helpers * hald/util.c (helper_child_exited): Remove from running_helpers list (hal_util_helper_invoke): Add to running_helpers list (hal_util_kill_all_helpers): New function (uses running_helpers list) * hald/osspec.h: Don't export osspec_shutdown and osspec_shutdown_done * hald/haldaemon.in: No need to add @LIBEXECDIR@ to PATH now that hald does that itself * hald/hald.c (main): Add PACKAGE_LIBEXEC_DIR to out path. Fix a fd leak also (pointed out by Kay Sievers). (sigterm_iochn_data): Kill all pending helpers and exit * hald/device_info.c (di_search_and_merge): Fixup some stupid typos * hald/Makefile.am (INCLUDES): Include PACKAGE_LIBEXEC_DIR 2005-02-24 David Zeuthen * fdi/README: Change so this fits better with current packaging policies; see this message and thread at http://lists.freedesktop.org/archives/hal/2005-February/002217.html * fdi/preprobe/*/Makefile.am, fdi/information/*/Makefile.am, fdi/policy/*/Makefile.am: Fix up Makefile.am to install to the correct location. Also add 10-ide-drives.fdi to * fdi/preprobe/10osvendor/Makefile.am (dist_fdi_DATA): Add 10-ide-drives.fdi * hald/device_info.c (di_search_and_merge): Use new search logic as outlined in fdi/README 2005-02-24 David Zeuthen * tools/Makefile.am: Don't install the 50-fstab-sync.hal symlink as we do callouts in a different way now! * hald/haldaemon.in: Until privilege separation is complete, run with --retain-privileges. Also export LIBEXECDIR as our addons and probers will be installed there 2005-02-24 David Zeuthen Fix a few things to get 'make distcheck' to succeed. 2005-02-24 David Zeuthen * tools/linux/hal_hotplug_map.c: Removed * tools/linux/Makefile.am: Remove build rules for hal-hotplug-map * hald/linux2/physdev.c: Callouts now take two userdata pointers (physdev_callouts_preprobing_done): New function (hotplug_event_begin_add_physdev): Run preprobing callouts just before real probing (flow continues in the above function) * hald/linux2/osspec.c: Callouts now take two userdata pointers * hald/linux2/classdev.c: Callouts now take two userdata pointers (classdev_callouts_preprobing_done): New function (hotplug_event_begin_add_classdev): Run preprobing callouts just before real probing (flow continues in the above function) * hald/linux2/blockdev.c: Callouts now take two userdata pointers (blockdev_callouts_preprobing_storage_done): New function (blockdev_callouts_preprobing_volume_done): New function (hotplug_event_begin_add_blockdev): Run preprobing callouts just before real probing (flow continues in the two above functions) * hald/linux2/apm.c: Callouts now take two userdata pointers * hald/linux2/acpi.c: Callouts now take two userdata pointers * hald/util.h: Fix up prototypes for callouts to take two userdata pointers. Add hal_util_callout_device_preprobe prototype. * hald/util.c: Change callouts to take two userdata pointers (hal_util_callout_device_preprobe): New function * hald/hald.c (main): Don't call hald_read_conf_file() as this is now gone. * hald/device_info.h (di_search_and_merge): Tweak prototype for di_search_and_merge to take a DeviceInfoType parameter * hald/device_info.c (di_search_and_merge): Lookup new environment variables * hald/run-hald.sh: Use new environment variables for specifying fdi file location * hald/debug-hald.sh: Use new environment variables for specifying fdi file location * hald/Makefile.am: Don't link with libselinux and don't install callout directories (hald_test_SOURCES): Remove hald_conf.[ch] (hald_SOURCES): Remove hald_conf.[ch]. * configure.in: Add notes about how to tweak the hal tarball for a particular distribution or OS. Rework the details a bit. Remove the hotplug_map rules. Remove selinux bits (for now). Rework what fdi file directory Makefile's to generate. * hald/hald.conf: Removed * hald/hald_conf.[ch]: Removed * fdi/Makefile.am (SUBDIRS): Specificy new subdirs * fdi/preprobe: New * fdi/preprobe/Makefile.am: New * fdi/preprobe/10osvendor: New * fdi/preprobe/10osvendor/10-ide-drives.fdi: New * fdi/preprobe/10osvendor/Makefile.am: New * fdi/preprobe/20thirdparty: New * fdi/preprobe/20thirdparty/Makefile.am: New * fdi/preprobe/30user: New * fdi/preprobe/30user/Makefile.am: New * fdi/information: New * fdi/information/Makefile.am: New * fdi/information/10freedesktop: New * fdi/information/10freedesktop/Makefile.am: New * fdi/information/20thirdparty: New * fdi/information/20thirdparty/Makefile.am: New * fdi/information/30user: New * fdi/information/30user/Makefile.am: New * fdi/policy: New * fdi/policy/Makefile.am: New * fdi/policy/10osvendor: New * fdi/policy/10osvendor/10-storage-policy.fdi: New * fdi/policy/10osvendor/10-power-mgmt-policy.fdi: New * fdi/policy/10osvendor/90-fstab-sync.fdi: New * fdi/policy/10osvendor/Makefile.am: New * fdi/policy/20thirdparty: New * fdi/policy/20thirdparty/Makefile.am: New * fdi/policy/30user: New * fdi/policy/30user/Makefile.am: New * fdi/README: New file to describe the new directory structure 2005-02-23 David Zeuthen * hald/linux2/blockdev.c (force_unmount): Change to use new prototype for device_send_signal_condition * hald/hald_dbus.h: Adjust prototype for device_send_signal_condition * hald/hald_dbus.c (device_send_signal_condition): Change a Condition to not take an arbitrary message byt just a (name, details) tupple * hald/debug-hald.sh: Add some helpful instructions 2005-02-23 David Zeuthen * libhal/libhal.c (libhal_ctx_init): Add a small fix here wrt. error handling 2005-02-22 David Zeuthen * fdi/README: New file describing the various uses of device information files. 2005-02-22 David Zeuthen * hald/linux2/osspec.c: Use kernel events layer instead of D_NOTIFY on /etc/mtab. Yay! * hald/linux2/blockdev.c (update_mount_point): Use /proc/mounts as we're now using the kernel events layer to get mount/umount signals rather than waiting for /etc/mtab to be changed. Otherwise we've would have a race with mount(1). Add some usable debug information. (blockdev_mount_status_changed): Renamed from blockdev_mtab_changed. * hald/hald_dbus.c (device_send_signal_property_modified): Yikes, append to the right iterator; fixes segfault 2005-02-22 David Zeuthen * libhal/libhal.c: Patch from John (J5) Palmieri . Most libhal methods now require an additional DBusError pointer to be passed into the method. Sometimes errors are expected in a world where device can be added or removed at any moment. These errors can be handled based on the return value of the method and do not need the extra verbosity that the dbus errors provide. Attached is a patch which allows a NULL value to be passed to all methods which read HAL keys indicating that a dbus error is not needed thereby freeing the programmer from having to initialize and free dbus error objects when they are not needed. 2005-02-22 David Zeuthen * hald/linux2/classdev.c (usbclass_add): Also set printer.physical_device 2005-02-22 David Zeuthen * hald/linux2/probing/probe-printer.c: New file * hald/linux2/probing/Makefile.am: Add build rules for hald-probe-printer * hald/linux2/classdev.c (usbclass_add, usbclass_get_prober) (usbclass_compute_udi): Add support for USB printers 2005-02-22 David Zeuthen * tools/device-manager/DeviceManager.py: (DeviceManager.device_changed): Make this work again after the D-BUS updates 2005-02-22 David Zeuthen * hald/hald_dbus.c (device_property_atomic_update_end): Send changes as an array to ensure that PropertyModified signal always has two parameters (device_send_signal_property_modified): -do- * libhal/libhal.c (filter_func): Fix up to receive PropertyModified in the new format 2005-02-22 David Zeuthen * hald/linux2/osspec.c (osspec_init): Small fix for the kobject_uevent stuff * hald/hald_dbus.c (manager_find_device_by_capability): Patch from John (J5) Palmieri Attached is a simple patch to fix the signature of the array container we are opening. 2005-02-16 Kay Sievers Update volume_id to version 34. Add support for hpfs, cramfs and romfs. some trivial cleanups. * volume_id/Makefile.am: * volume_id/cramfs.c: (volume_id_probe_cramfs): * volume_id/cramfs.h: * volume_id/dasd.c: (volume_id_probe_dasd): * volume_id/dasd.h: * volume_id/ext.c: (volume_id_probe_ext): * volume_id/fat.c: (volume_id_probe_vfat): * volume_id/hfs.c: (volume_id_probe_hfs_hfsplus): * volume_id/highpoint.c: (volume_id_probe_highpoint_ataraid): * volume_id/hpfs.c: (volume_id_probe_hpfs): * volume_id/hpfs.h: * volume_id/iso9660.c: (volume_id_probe_iso9660): * volume_id/jfs.c: (volume_id_probe_jfs): * volume_id/linux_raid.c: (volume_id_probe_linux_raid): * volume_id/linux_swap.c: (volume_id_probe_linux_swap): * volume_id/lvm.c: (volume_id_probe_lvm1), (volume_id_probe_lvm2): * volume_id/mac.c: (volume_id_probe_mac_partition_map): * volume_id/msdos.c: (volume_id_probe_msdos_part_table): * volume_id/ntfs.c: (volume_id_probe_ntfs): * volume_id/reiserfs.c: (volume_id_probe_reiserfs): * volume_id/romfs.c: (volume_id_probe_romfs): * volume_id/romfs.h: * volume_id/sysv.c: (volume_id_probe_sysv): * volume_id/sysv.h: * volume_id/udf.c: (volume_id_probe_udf): * volume_id/ufs.c: (volume_id_probe_ufs): * volume_id/util.h: * volume_id/volume_id.c: (volume_id_probe_all): * volume_id/volume_id.h: * volume_id/xfs.c: (volume_id_probe_xfs): 2005-02-16 David Zeuthen * volume_id/luks.[ch]: New files (forgot to commit before) * hald/linux2/probing/shared.h: Redefine logging a bit * hald/linux2/probing/probe-volume.c: Use new shared.h logging; implement volume_id_log and drive_id_log functions * hald/linux2/probing/probe-storage.c: Use new shared.h logging; implement volume_id_log and drive_id_log functions * hald/linux2/addons/addon-storage.c: Use new shared.h logging * drive_id/logging.h: Use drive_id_log function * drive_id/drive_id.h (drive_id_log): Add drive_id_log prototype 2005-02-16 David Zeuthen Fix up more sloppy errors incuded from patches that I should have reviewed more carefully :-/ * libhal-storage/libhal-storage.c: Match against LIBHAL_PROPERTY_TYPE_*, not DBUS_TYPE_* (libhal_drive_policy_default_use_managed_keyword): (libhal_drive_policy_default_get_mount_root): (libhal_drive_policy_default_use_managed_keyword): (libhal_drive_policy_default_get_managed_keyword_primary): (libhal_drive_policy_default_get_managed_keyword_secondary): (libhal_drive_policy_get_mount_options): (libhal_volume_policy_get_mount_options): Yikes, Yikes, rename "/org/freedesktop/LibHal" back to "/org/freedesktop/Hal" * libhal/libhal.c (libhal_property_fill_value_from_variant): p->type wasn't being assigned :-/. Also, DBUS_TYPE_BOOLEAN wasn't handled. * hald/hald_test_libhal.c (check_libhal): Fix this test 2005-02-16 David Zeuthen Patch from W. Michael Petullo . Attached you should find a patch that begins to add LUKS support to hald. This should eventually provide an easy means to mount encrypted filesystems. Currently, hald only detects that a disk contains a LUKS header and sets some relevant parameters. * volume_id/volume_id.h: Add VOLUME_ID_CRYPTO to volume_id_usage enum * volume_id/util.c (usage_to_string): Add LUKS string * volume_id/volume_id.c (volume_id_probe_all): Also test for LUKS magic * volume_id/Makefile.am (libvolume_id_la_SOURCES): Include luks.[ch] * hald/linux2/probing/probe-volume.c (set_volume_id_values): Supprt the VOLUME_ID_CRYPTO type 2005-02-16 David Zeuthen Patch from John (J5) Palmieri . * libhal-storage/libhal-storage.[ch]: Rename all functions, symbols and defines from hal_storage to libhal_storage. * tools/fstab-sync.c: Update for changes in libhal-storage 2005-02-16 David Zeuthen * tools/device-manager/DeviceManager.py: (DeviceManager.update_tab_advanced): Make this work for string lists * tools/lshal.c (main): Various cleanups * libhal/libhal.c (libhal_property_fill_value_from_variant): Make this one static. Make sure to recurse into string array otherwise it won't work at all (libhal_get_string_array_from_iter): Make this static. Take num_elems pointer (libhal_property_set_get_num_elems): New function (libhal_get_all_devices): Pass num_devices to libhal_get_string_array_from_iter (libhal_ctx_shutdown): Remove match and filter function (libhal_ctx_free): Implement this one; free our context * libhal/libhal.h: Add prototype for libhal_property_set_get_num_elems * hald/hald_test_libhal.c (check_libhal): Add tests for the property set functions as they were failing (see changes above) * hald/Makefile.am (hald_test_SOURCES): Remove callout.[ch] as they are now gone 2005-02-14 David Zeuthen * configure.in: Require dbus >= 0.30 2005-02-11 John (J5) Palmieri * hald/device.c, hald/device_info.c, hald/property.c, hald/property.h, tools/hal_set_property.c, tools/hal_get_property.c: s/HAL_PROPERTY_TYPE_NIL/HAL_PROPERTY_TYPE_INVALID * hald/hald_dbus.c: ported to new dbus-0.30 API (foreach_property_append): implemented real string lists and got rid of the \tval\tval\tval\t hack * libhal/libhal.c: ported to new dbus-0.30 API s/HAL_PROPERTY_TYPE_NIL/HAL_PROPERTY_TYPE_INVALID (libhal_get_string_array_from_iter): new helper function to create string arrays from dbus arrays (libhal_property_fill_value_from_variant): new helper function that fills in properties from variants. Used when getting a hash of properties from hald * libhal/libhal.h: s/HAL_PROPERTY_TYPE_NIL/HAL_PROPERTY_TYPE_INVALID HAL_PROPERTY_TYPE_INVALID = DBUS_TYPE_INVALID * hald/hald_test_libhal.c: ported to new dbus-0.30 API Added success messages and more detailed failed messages * hald/util.c (hal_util_compute_udi): Change all illegal characters to underscores '_' * tools/device-manager/DeviceManager.py (DeviceManager::__init__, add_device_signal_recv): change add_signal_receiver calls to add expand_args=False parameter. (DeviceManager::device_changed, gdl_changed): changed handlers to conform with the new way we call signal handlers 2005-02-11 David Zeuthen * Makefile.am (SUBDIRS): Rearrange order so volume_id and drive_id is built before anything else. 2005-02-11 David Zeuthen With this path, all storage devices should be working just as well as on the 0.4.x branch. In fact, since we're doing things in separate processes hald now nicely handles my very troublesome USB 6in1 card reader. There's other improvements too; we handle media with non-partitioned file systems _a lot nicer_, especially those on PCMCIA card readers (driven by ide-cs) since we now have logic to discard hotplug rem/add for those partitions. Rock on. * libhal/libhal.h: Add prototypes for libhal_device_rescan() and libhal_device_reprobe() * libhal/libhal.c (libhal_device_rescan): New function (libhal_device_reprobe): New function * hald/linux2/probing/probe-volume.c (main): Be able to probe for volumes on main block devices. Retrieve optical disc properties if applicable. * hald/linux2/probing/probe-storage.c (is_mounted): New function (main): Add a new option --only-check-for-media which is used on Rescan() of a storage device. Check for fs on main block device or a disc in the optical drive. Return code 2 if that is the case. * hald/linux2/addons/addon-storage.c (force_unmount): New function (unmount_childs): New function (is_mounted): New function (main): Do lazy unmount, if necessary, when media goes away. Handle polling on optical drives. * hald/linux2/hotplug.h: Add prototype for hotplug_event_reposted() and hotplug_event_enqueue_at_front(). * hald/linux2/hotplug.c (hotplug_event_reposted): New function; like event_end but without deleting the hotplug event (useful for reordering events) (hotplug_event_enqueue_at_front): New function; to insert events at the front of the queue * hald/linux2/blockdev.c: (generate_fakevolume_hotplug_event_add_for_storage_device): New function (and what a nice long name :-/) (add_blockdev_probing_helper_done): Check result from hald-probe- storage and add a new fakevolume add event if one was detected. (hotplug_event_begin_add_blockdev): Handle fakevolume add events. Add some more debug spewage when things fail. (force_unmount): New function (hotplug_event_begin_remove_blockdev): Handle fakevolume remove events; reorder queue to process non-handled volume before the storage device. Nice. (block_rescan_storage_done): New function (blockdev_rescan_device): Actually do something here; a Rescan() method call on a storage device will induce searching a filesystem on the main block device * hald/hald.c (main): Add new master_slave code but comment it out for now * fdi/20freedesktop/lexar-media-cf-reader.fdi: Fix up * fdi/20freedesktop/6in1-card-reader.fdi: Fix up to use new way of figuring vendor_id/product_id etc. 2005-02-10 David Zeuthen * configure.in: From Richard Hughes I've also attached a patch that adds libexec to configure.in 2005-02-10 David Zeuthen * volume_id/fat.c (volume_id_probe_vfat): Must have been a typo by Kay, changed from VOLUME_ID_DISKLABEL to VOLUME_ID_FILESYSTEM. * tools/fstab-sync.c (remove_udi): Remember to init the DBusError since some operations may fail. (main): Look at $HALD_ACTION for add, remove instead of first positional parameter $1. * hald/linux2/probing/probe-volume.c: New file * hald/linux2/probing/probe-storage.c: New file * hald/linux2/probing/linux_dvd_rw_utils.[ch]: New files (imported from hal-0.4.x) * hald/linux2/probing/Makefile.am: Add rules for hald-probe-storage and hald-probe-volume * hald/linux2/addons/addon-storage.c: New file * hald/linux2/addons/Makefile.am: Add rules for hald-addon-storage * hald/linux2/osspec.c (sigio_handler): New function (sigio_iochn_data): New function (osspec_init): Set up signal handler for SIGIO and the neccesary pipes to handle it safely. Set up directory watcher for /etc and invoke blockdev_mtab_changed whenever that happens * hald/linux2/hotplug.c (hotplug_rescan_device): Call blockdev_* if appropriate * hald/linux2/blockdev.h: Add some new prototype for interacting with hotplug.c (much like what physdev.h and classdev.h) exported. Also add the prototype for a new function blockdev_mtab_changed. * hald/linux2/blockdev.c: Actually put some code here (the previous code was just boiler plate). * hald/util.h (struct HalHelperData_s): Add boolean already_issued_ callback * hald/util.c (hal_util_get_string_from_file): Truncate whitespace from string read (hal_util_terminate_helper): Don't remove the child watcher source, but set a flag that we already did the callback and helper_child_exited will reap the child (including removing sources). This helps reap the zombies I've been seeing. (helper_child_timeout): -do- (helper_child_exited): Only do callback if we haven't already done so. * hald/debug-hald.sh: Another nice script for running gdb on hald; just run this script and invoke the run command from the gdb console. * hald/run-hald.sh: Also export ../tools so we can get fstab-sync going. Set HAL_FDI_SOURCE * hald/device_info.c (di_search_and_merge): Respect the env var HAL_FDI_SOURCE which is useful for development as hald will read you local .fdi files * fdi/90defaultpolicy/storage-policy.fdi: Temporarily add fstab-sync add/rem callouts (mental note: move to other file soon); also add the media detection addon * fdi/90defaultpolicy/power-mgmt-policy.fdi: New file * fdi/90defaultpolicy/Makefile.am (fdi90defaultpolicydir): Add power-mgmt-policy.fdi 2005-02-08 David Zeuthen * hald/linux2/osspec.c (get_hal_proc_path): Return hal_proc_path, not hal_sysfs_path. 2005-02-08 David Zeuthen * hald/linux2/osspec.c: (hal_util_get_udevinfo_path): (hal_util_get_device_file): (hal_util_set_driver): (hal_util_find_closest_ancestor): Moved to here from ../util.c (get_hal_sysfs_path): New function (get_hal_proc_path): New function * hald/linux2/osspec_linux.h: New file; export the functions mentioned above 2005-02-08 David Zeuthen Patch from Sjoerd Simons . Since i seem to be in an extreme mood anyway, attached it is a patch that will make hal always drop permissions to non-root. Also it removes keeping the net admin capability as it's not being used anymore. I think it's the right way to do things. There should be no reason to run hald as root ever and forcing it from the start of the development cycle is a good way of ensuring that :) It would also be nice to have the addons that need to start out as root (like the ups one) drop permission as soon as possible (one can never be too sure)... Probably a utility function would be nice for that, but i don't know where to place it (as the addons and probers live in different dirs) Slightly mangled by myself to remove libcap dep and introduce the --retain-privileges option. * configure.in: Don't require libcap * hald/Makefile.am (hald_LDADD): Don't link with libcap * hald/run-hald.sh: Use new --retain-privileges option since this is the development runscript * hald/hald.c (usage): Remove option --drop-privileges and introduce new option --retain-privileges (drop_privileges): Just drop to uid/gid of specified haldaemon user and group. Don't use libcap anymore. (main): Enforce new --retain-privileges option since it's useful for development 2005-02-08 David Zeuthen * hald/linux2/osspec.c: Do not care about link detection, NM and other tools are going to do this on their own now. (link_detection_handle_message): Remove (netlink_socket_data): Remove (osspec_init): Don't listen to the netlink socket * hald/linux2/classdev.c (net_add): Do not care about link detection 2005-02-08 David Zeuthen * hald/linux2/physdev.c (physdev_remove): Don't remove device yet. (physdev_callouts_add_done): New function (physdev_callouts_remove_done): New function (hotplug_event_begin_add_physdev): Do add callouts (hotplug_event_begin_remove_physdev): Do remove callouts * hald/linux2/classdev.c (classdev_remove): Don't remove device yet. (classdev_callouts_add_done): New function (classdev_callouts_remove_done): New function (add_classdev_after_probing): Do add callouts (hotplug_event_begin_remove_classdev): Do remove callouts * hald/linux2/acpi.c (acpi_callouts_remove_done): Yikes, don't remove from TDL since it's not there. 2005-02-08 David Zeuthen * hald/run-hald.sh: Update to include a few more paths * hald/linux2/addons/Makefile.am: Add build rules for hald-addon-acpi * hald/linux2/addons/addon-acpi.c: New file * hald/linux2/pmu.c (pmu_synthesize_hotplug_events): Also look for computer in the TDL * hald/linux2/osspec.c (computer_callouts_add_done): New function (osspec_probe): Run callouts for computer * hald/linux2/classdev.c (add_classdev_probing_helper_done): Fix up for the new helper * hald/linux2/apm.c (apm_synthesize_hotplug_events): Also look for computer in the TDL * hald/linux2/acpi.c (acpi_synthesize_hotplug_events): Also look for computer in the TDL (acpi_generic_remove): Don't remove the device (acpi_callouts_add_done): New function (acpi_callouts_remove_done): New function (hotplug_event_begin_add_acpi): Run add callouts (hotplug_event_begin_remove_acpi): Run remove callouts * hald/property.c (hal_property_to_string): Add code for string lists * hald/hald.c (addon_terminated): New function (gdl_store_changed): Run addons (gdl_property_changed): Don't run property.d callouts (gdl_capability_added): Don't run capability.d callouts * hald/util.h: Move from hald/linux2 since this is generic. Export the HalHelperData structure when doing hal_util_helper invoke. Add prototypes for hal_util_terminate_ helper, hal_util_dup_strv_from_g_slist, hal_util_callout_device_add, hal_util_callout_device_remove. * hald/util.c: Move from hald/linux2 since this is generic. (hal_util_terminate_helper): New function (hal_util_helper_invoke): Renamed from helper_invoke. Accept command line parameters (through g_shell_parse_argv). Accept a strv of extra environement to set. Introduce that timeout==0 means no timeout. Return the HalHelperData structure (hal_util_dup_strv_from_g_slist): New convenience function; create a new NULL-terminated string vector from a GSList of strings. (callout_terminated): New function (callout_do_next): New function (hal_callout_device): New function (hal_util_callout_device_add): New function (hal_util_callout_device_remove): New function * hald/linux2/util.[ch]: Remove * hald/callout.[ch]: Remove since this functionality is now in util.[ch] * hald/Makefile.am: Add util.[ch] * hald/linux2/Makefile.am: Remove util.[ch] 2005-02-07 David Zeuthen * drive_id/*: Add new drive_id library from Kay * volume_id/*: Add new volume_id library from Kay * Makefile.am: Add drive_id and volume_id to SUBDIRS * configure.in: Add drive_id and volume_id to AC_OUTPUT 2005-02-04 David Zeuthen * doc/spec/hal-spec.xml.in: Added docs for battery.remaining_time * hald/linux2/classdev.c (input_get_prober): New function (usbclass_add): New function (usbclass_get_prober): New function (usbclass_compute_udi): New function (add_classdev_probing_helper_done): Check if post_probing is NULL (hotplug_event_begin_add_classdev): Use function to get prober since e.g. class usb covers multiple devices, e.g. hiddev, printers etc. * hald/linux2/probing/probe-hiddev.c: New file; probe for application pages a HIDDEV supports and add to hiddev.application_pages strlist * hald/linux2/addons/addon-hid-ups.c: Detect UPS's on USB HID interfaces and create plus maintain battery.* properties. * hald/linux2/addons/Makefile.am: New file * hald/linux2/Makefile.am (SUBDIRS): Add addons directory * configure.in: Add hald2/linux2/addons/Makefile.am to AC_OUTPUT 2005-02-03 David Zeuthen * hald/device_info.c (handle_match): Handle contains and contains_ncase for strlist properties. Also allow blah (removes element 'blah' from strlist 'foobar') and to completely remove a property. (start): Support on both strings and strlists. Support (end): Support the new directives. Here is an example of the new directives; I'm pasting it here so it's handy when the spec needs to be updated. Oh, and for when I get around to adding test cases for this :-) foo0 foz0 foo0 foo1 foo2 foo3 foo0 foz0 foo0 foo1 foo2 foo3 val1 2005-02-02 David Zeuthen * hald/linux2/pmu.[ch]: New files * hald/linux2/util.h: Add prototypes for hal_util_grep_string_elem_from_file and hal_util_grep_int_elem_from_file. * hald/linux2/util.c (hal_util_grep_file): Allow file to be NULL or empty and handle it correctly (hal_util_grep_string_elem_from_file): New function (hal_util_grep_int_elem_from_file): New function (hal_util_set_string_elem_from_file): Simplify by using hal_util_grep_string_elem_from_file (hal_util_set_int_elem_from_file): Simplify by using hal_util_grep_string_elem_from_file * hald/linux2/osspec.c (osspec_probe): Refine algorithm for selecting power management system since PMU based systems may simultaneously support APM as well. * hald/linux2/hotplug.h: Add PMU hotplug event * hald/linux2/hotplug.c (hotplug_event_begin_pmu): New function (hotplug_event_begin): Handle PMU (hotplug_rescan_device): Handle PMU (hotplug_reprobe_generate_remove_events): Handle PMU (hotplug_reprobe_generate_add_events): Handle PMU * hald/linux2/classdev.c (hotplug_event_begin_add_classdev): Only set linux.device_file if there really is a device file * hald/linux2/acpi.c (battery_refresh): Use maximum instead of maximum_specified * hald/linux2/Makefile.am: Add pmu.[ch] 2005-02-02 David Zeuthen * hald/linux2/apm.[ch]: New files * hald/linux2/util.c (helper_invoke): Remember to initialize the error object to NULL * hald/linux2/osspec.c (osspec_probe): Only try APM if ACPI fails * hald/linux2/hotplug.c (hotplug_event_begin_apm): New function (hotplug_event_begin): Handle APM (hotplug_rescan_device): Handle APM (hotplug_reprobe_generate_remove_events): Handle APM (hotplug_reprobe_generate_add_events): Handle APM * hald/linux2/acpi.c (acpi_synthesize): Remember to set error to NULL and don't leak the error object (acpi_generate_remove_hotplug_event): Make this function return a boolean to say whether ACPI capabilities were detected * doc/spec/hal-spec.xml.in: Update the spec a bit more on battery.* 2005-02-02 David Zeuthen * hald/linux2/probing/probe-input.c (main): Fix up error handling here so Reprobe() on the root, /org/freedesktop/Hal/devices/computer, actually works; here's some python to do that #!/usr/bin/python import dbus bus = dbus.Bus (dbus.Bus.TYPE_SYSTEM) hal_service = bus.get_service ('org.freedesktop.Hal') d = hal_service.get_object ('/org/freedesktop/Hal/devices/computer', 'org.freedesktop.Hal.Device') d.Reprobe() 2005-02-02 David Zeuthen * hald/linux2/osspec.c: Adjust for changes in hotplug.h. (osspec_device_rescan): New function (osspec_device_reprobe): New function * hald/linux2/hotplug.h: Extend HotplugEvent struct to also be used for coldplugging/fake hotplugging (via Reprobe()) of ACPI devices. Add prototypes for hotplug_reprobe_tree() and hotplug_rescan_device(). * hald/linux2/hotplug.c: Adjust to changes in hotplug.h (hotplug_event_begin_sysfs): New function; what used to be the function hotplug_event_begin(). (hotplug_event_begin_acpi): New function (hotplug_event_begin): Now a simple dispatcher according to hotplug type; e.g. sysfs or acpi (hotplug_rescan_device): New function (hotplug_reprobe_generate_remove_events): New function (hotplug_reprobe_generate_add_events): New function (hotplug_reprobe_tree): New function * hald/linux2/coldplug.c: Adjust to changes in hotplug.h * hald/linux2/classdev.h: Add prototypes for classdev_generate_ [add|remove]_hotplug_event() and classdev_rescan_device(). * hald/linux2/classdev.c (hotplug_event_begin_add_classdev): Add some properties so we can reconstruct the hotplug event (classdev_rescan_device): New function (classdev_generate_add_hotplug_event): New function (classdev_generate_remove_hotplug_event): New function * hald/linux2/acpi.[ch]: Yikes, rewrite must of this to conform to the hotplug model so we can do Rescan() and Reprobe() * hald/osspec.h: Add prototypes for osspec_device_[rescan|reprobe] * hald/hald_test_libhal.c (send_tests_done): New function (check_libhal): Add some more tests and report back * hald/hald_test.c (check_properties): Fixup wrong failure reports (server_message_handler): Add new methods on the org.freedesktop.Hal. Tests interfaces to signal that a test is done (wait_for_external_test): New function; pretty ugly but it works for now. As noted: Patches are Welcome(tm) (main): Enable libhal tests * hald/hald_dbus.c (device_rescan): New function (device_reprobe): New function (hald_dbus_filter_function): Add checks for Rescan() and Reprobe() methods on the org.freedesktop.Hal.Device interface 2005-02-01 David Zeuthen * hald/linux2/probing/probe-input.c (main): Fix a bug here where we checked for the wrong return value of libhal_ctx_init. 2005-02-01 David Zeuthen Patch from Pierre Ossman . Basic MMC bus support. Reads out all the information currently available. I also need to add a mapping between vendor id:s an names, but I don't currently have a list to base it upon. * hald/linux2/physdev.c (mmc_add): New function (mmc_compute_udi): New function 2005-02-01 David Zeuthen Patch from Pierre Ossman . * hald/linux2/util.c (hal_util_get_string_from_file): New function (hal_util_set_string_from_file): Use the new function mentioned above 2005-02-01 David Zeuthen This is largely based on this patch http://lists.freedesktop.org/archives/hal/2005-January/002002.html from Richard Hughes but much mangled by myself * hald/linux2/util.c (hal_util_get_parent_path): Renamed from hal_util_get_parent_sysfs_path. (hal_util_grep_file): New function (hal_util_set_string_elem_from_file): New function (hal_util_set_int_elem_from_file): New function (hal_util_set_bool_elem_from_file): New function * hald/linux2/util.h: Add new prototypes * hald/linux2/osspec.c (osspec_probe): Call acpi_probe. * hald/linux2/acpi.[ch]: New files * hald/linux2/Makefile.am (libhald_linux2_la_SOURCES): Add acpi.[ch] 2005-01-31 David Zeuthen * configure.in: Prebump to 0.5.0 - but we're not doing a release yet! Add libtool versioning since libhal and libhal-storage are going to break API and ABI backwards compatibility. * hald/hald_test.c: Add the beginnings of a test suite * hald/hald_test_libhal.c: -do- * hald/Makefile.am: Add build rules for test suite * tools/linux/hal_hotplug_map.c: Update to use new libhal API. * tools/lshal.c: Update to use new libhal API. * tools/hal_set_property.c: Update to use new libhal API. * tools/hal_get_property.c: Update to use new libhal API. * tools/fstab-sync.c: Update to use new libhal API. * libhal-storage/libhal-storage.c: Update to use new libhal API. This library will also go through a renaming/cleanup before 0.5.0. * libhal-storage/Makefile.am: Use library versioning * libhal/libhal.[ch]: Prefix all function names and other identifiers with libhal instead of hal. Add code for string lists. Change the way libhal is initialized to be a multistep process. Use HAL_PROPERTY_ TYPE_* instead of DBUS_TYPE_*. Make all functions using IPC take a DBusError argument for better error handling. Notable changes (libhal_device_get_all_properties): Teach this function about string lists (libhal_psi_get_strlist): New function (hal_initialize): Removed (hal_shutdown): Removed (libhal_device_get_property_strlist): New function (libhal_device_property_strlist_append): New function (libhal_device_property_strlist_prepend): New function (libhal_device_property_strlist_remove_index): New function (libhal_device_property_strlist_remove): New function (libhal_ctx_new): New function (libhal_ctx_set_cache): New function (libhal_ctx_set_dbus_connection): New function (libhal_ctx_init): New function (libhal_ctx_shutdown): New function (libhal_ctx_free): New function (libhal_ctx_set_device_added): New function (libhal_ctx_set_device_removed): New function (libhal_ctx_set_device_new_capability): New function (libhal_ctx_set_device_lost_capability): New function (libhal_ctx_set_device_property_modified): New function (libhal_ctx_set_device_condition): New function * libhal/Makefile.am: Use library versioning * hald/linux2/probing/probe-input.c: Port to new libhal API * hald/property.h: Rename property types to HAL_PROPERTY_TYPE_*. Add prototypes for new string list properties. * hald/property.c: Rename property types to HAL_PROPERTY_TYPE_*. (hal_property_free): Teach this function about string lists. (hal_property_new_strlist): New function (hal_property_get_strlist): New function (hal_property_strlist_append): New function (hal_property_strlist_prepend): New function (hal_property_strlist_remove_elem): New function (hal_property_strlist_add): New function (hal_property_strlist_remove): New function * hald/hald_dbus.c: Rename property types to HAL_PROPERTY_TYPE_*. Add new ugly code to handle string lists with the current D-BUS. (device_string_list_append_prepend): New function (hald_dbus_filter_function): Rename from filter_function. Add handlers for new D-BUS methods. Export this function * hald/hald.[ch]: Rip out persistent property code. * hald/device_info.c: Rename property types to HAL_PROPERTY_TYPE_*. * hald/device.c: Rename to property to HAL_PROPERTY_TYPE_*. Rip out persistent property code. (hal_device_property_get_as_string): Add code for strlist type (hal_device_property_get_strlist): New function (hal_device_property_strlist_append): New function (hal_device_property_strlist_prepend): New function (hal_device_property_strlist_remove_elem): New function (hal_device_property_strlist_add): New function (hal_device_property_strlist_remove): New function * hald/device.h: Add new strlist prototypes * pstore.[ch]: Remove for now as persistent properties needs to be reworked 2005-01-26 David Zeuthen * hald/linux2/osspec.c (link_detection_handle_message): New function. (netlink_socket_data): New function (osspec_init): Listen to netlink socket * hald/linux2/hotplug.c (fixup_net_device_for_renaming): New function. For coping with net interfaces being renamed before hald can handle them (For testing, put in the line g_spawn_command_line_sync ("/path/to/ifrename", NULL, NULL, NULL, NULL); in the top of hotplug_ event_begin(). (hotplug_event_begin): Call fixup_net_device_for_renaming() * hald/linux2/classdev.c (net_add): Be a bit more defensive about errors; export the net.80203.can_detect_link property 2005-01-25 David Zeuthen * hald/linux2/osspec.c (osspec_probe): Add HAL_INFO's around coldplug event synthesization so we can see how long it takes. * hald/linux2/coldplug.c: Undefine HAL_COLDPLUG_VERBOSE by default to reduce log spamming. 2005-01-25 David Zeuthen Merge the changes applied to the hal-0_4-stable-branch yesterday 2005-01-24 David Zeuthen * libhal-storage/libhal-storage.c (mopts_collect): Remove debugging fprintf's 2005-01-24 David Zeuthen * libhal-storage/libhal-storage.c (mopts_collect): Also remove mount options if something is set to FALSE (based on patch from Sebastian Dransfeld ; also fix a pretty bad bug where the computation of is_imply_opt were totally wrong. (hal_volume_policy_get_mount_options), (hal_drive_policy_get_mount_options): Collect imply options in the correct order now that mopts_collect is fixed : -do- 2005-01-23 David Zeuthen * hald/linux2/util.h: Add prototypes for hal_util_set_driver () and hal_util_path_ascend (). * hald/linux2/util.c (hal_util_set_driver): New function (hal_util_path_ascend): New function * hald/linux2/physdev.c: Set both linux.sysfs_path and linux.sysfs_path_device. The former is the real sysfs path for both class and bus devices while the latter always is a location in /sys/devices; incidently the latter may not always exists. The former is used for remove events while the latter is used for determing child/parent relationships. (scsi_add): New function (scsi_compute_udi): New function * hald/linux2/ids.c (ids_find_pnp): Use strcasecmp instead of strcmp * hald/linux2/hotplug.c (hotplug_event_begin): Cope with the fact that there may be holes in /sys/devices; e.g. look at the target0:0:0:0 stuff. So, for a class device ascend all the way up until we find a hal device object that can be our parent. * hald/linux2/coldplug.c: Euwh, too much simplification here; we need to insert class devs between bus devs in the coldplug queue as e.g. scsi_host is a class dev but sits between bus devs. * hald/linux2/classdev.h: Make hotplug_event_begin_add_classdev take the sysfs path of the corresponding device in /sys/devices (which may not be a physical device, e.g. class scsi_host) * hald/linux2/classdev.c (net_add): New function (net_compute_udi): New function (scsi_host_add): New function (scsi_host_compute_udi): New function 2005-01-22 David Zeuthen * tools/device-manager/Const.py.in: Add pnp and serio to BUS_NAMES * hald/linux2/physdev.c: Refactor this file a bit and add support for the following bus devices: ide, pnp, serio, pcmcia * hald/linux2/ids.h (ids_find_pnp): Add prototype * hald/linux2/ids.c (ids_find_pnp): New function; just use a hardcoded array and do a slow O(n) search (might want to optimize this later) * hald/linux2/classdev.c (add_classdev_after_probing): Compute UDI may fail; remember to clean up * hald/linux2/Makefile.am: Add pcmcia_utils.[ch] as we'll need them until sysfs got the right properties * hald/linux2/pcmcia_utils.[ch]: New files; imported from old backend * hald/linux2/pcmcia_cs.h: Ditto 2005-01-19 David Zeuthen Some more refactoring... You want to redo 'make install' to get h-d-m working after this... * hald/linux2/classdev.c: (input_add): Don't set info.bus as it doesn't really make sense since it is a class device (input_post_probing): New function (input_compute_udi): New function (bluetooth_add): New function (bluetooth_compute_udi): New function (add_classdev_after_probing): New function (add_classdev_probing_helper_done): New function (hotplug_event_begin_add_classdev): Create and use a framework where we don't have to think about asynchronous issues per logical device class. (hotplug_event_begin_remove_classdev): -do- (input_helper_done): Deleted due to new framework * tools/device-manager/DeviceManager.py: Do not assume that info.bus is available * tools/device-manager/Representation.py: Do not assume that info.bus is available 2005-01-18 David Zeuthen * hald/run-hald.sh: New file; used to run hald from the development directory. Sets up the appropriate path for external probing programs. 2005-01-18 David Zeuthen * configure.in (AC_OUTPUT): Don't generate hald/linux/Makefile as Makefile.am is now gone 2005-01-18 David Zeuthen * tools/linux/Makefile.am: Remove hal.dev build rules * tools/linux/hal_dev.c: Remove * configure.in: Set linux2 as the default backend * hald/linux: Remove all files here as they will get reimplemented in hald/linux2 * hald/linux2: Add a bunch of new files * hald/linux2/probing: Add some new files 2005-01-18 David Zeuthen Merge some more changes from the stable branch (except those in hald/linux and doc/spec) 2005-01-12 David Zeuthen * hald/callout.c (callout_timeout_handler): Be tough and kill the misbehaving child the hard way - suggestion from Joe Shaw. 2005-01-12 David Zeuthen * hald/linux/osspec.c (HOTPLUG_TIMEOUT): Increase to 25 seconds to better cope with callouts timeout of 10 seconds * hald/callout.c (iochn_data): Cope with callouts terminating and free timeout handler (callout_timeout_handler): New function; kill callouts if they time out (process_next_callout): Setup timeout for callouts - set to ten seconds 2005-01-11 David Zeuthen * hald/callout.c: Simplify a lot more by demanding that callouts are run sequentially - which they are anyway since everything is serialized. Make a mental note to review and stress test this in the morning. 2005-01-11 David Zeuthen * hald/callout.c: Fix some craziness adding an idle handler for detecting when callouts complete - fixes bug on my new AMD64 system with device add/remove prior to completion of callouts - one visible effect was that fstab-sync was crashing since it couldn't retrieve the block.device device as the device was removed prior to the completion of the callout 2005-01-07 David Zeuthen * fdi/20freedesktop/ide-drives.fdi: Also check IDE floppies for whether they are Zip drives 2005-01-07 Joe Shaw * configure.in: Check for popt when building fstab-sync and error out if it's not found. * tools/Makefile.am: Build fstab-sync conditionally based on whether --enable-fstab-sync is passed in. 2005-01-06 David Zeuthen * libhal/libhal.c (hal_device_query_capability): Patch from Tim Müller . The attached patch fixes a small memory leak in libhal's hal_device_query_capability(). 2005-01-03 David Zeuthen * configure.in: Added it to ALL_LINGUAS * po/it.po: Italien translation from Pier Luigi Fiorini 2004-12-15 David Zeuthen * fdi/20freedesktop/usb-zip-drives.fdi: Only match on actual harddisks to avoid wrong detection of e.g. "Iomega ZipCD 650 USB CDRW" drives (Red Hat bug #143834) * fdi/20freedesktop/ide-drives.fdi: ditto 2005-01-17 David Zeuthen * doc/spec/hal-spec.xml.in: Patch from Richard Hughes . Move properties into right section; add some linux.* properties. 2005-01-17 David Zeuthen * doc/spec/hal-spec.xml.in: Patch from Richard Hughes . This is a patch for HAL CVS HEAD that provides all the system.* namespaces. I have not included the PMU/ACPI specific parts yet as we are still debating about how to include pmu.* and acpi.* in the most efficient way. 2005-01-07 Joe Shaw * configure.in: Check for popt when building fstab-sync and error out if it's not found. * tools/Makefile.am: Build fstab-sync conditionally based on whether --enable-fstab-sync is passed in. 2004-12-16 David Zeuthen * fdi/20freedesktop/Makefile.am: Add the two new .fdi files to _DATA 2004-12-16 David Zeuthen * fdi/20freedesktop/usb-pda-serial.fdi: New file * fdi/20freedesktop/usb-pda-devices.fdi: New file 2004-12-16 David Zeuthen * hald/linux/volume_id/volume_id.c (sesame_parse): Support really long lines (probe_crypto_sesame): Read 1024 bytes instead of only 0x100 2004-12-16 David Zeuthen * hald/linux/volume_id/volume_id.c (sesame_skip_to_next_nonempty_line): New function (sesame_parse): New function (sesame_got_kv_pair): New function (probe_crypto_sesame): New function (volume_id_probe): Probe for sesame crypto metadata (volume_id_close): Free key/value pairs * hald/linux/volume_id/volume_id.h: Add the VOLUME_ID_CRYPTO usage type and VOLUME_ID_CRYPTO_SESAME filesystem type. Add the volume_id_kv_pair structure * hald/linux/osspec.c (compute_coldplug_list): Also process other block devices * hald/linux/block_class_device.c (set_volume_id_values): Allow crypto and get properties from volume_id (block_class_visit): Add some code to figure out if /dev/dm-0 is really the cleartext device from a device backed by us. 2004-12-15 David Zeuthen * hald/dummy/Makefile.am: New file * hald/dummy/osspec.c: New file * hald/linux/Makefile.am: New file * hald/Makefile.am: Use new $(HALD_BACKEND) variable * configure.in: Add --with-backend; default to linux 2004-12-13 David Zeuthen Merged all changes from the stable branch so HEAD is on par. 2004-12-10 David Zeuthen * hald/linux/net_class_device.c (mii_get_link): Close the fd for link detection before getting the rate 2004-12-08 David Zeuthen * tools/fstab-sync.c (fs_table_line_is_mounted): Patch from Sjoerd Simons . Running fclose on some random memory will crash the program. Fixed in attached patch. 2004-12-08 David Zeuthen * hald/linux/block_class_device.c (detect_media): Patch from Martin Pitt . Media change detection for CD-ROMs does not work on some broken CD-ROM devices. There are some devices where the CDROM_DRIVE_STATUS ioctl returns CDS_DISK_OK even when the tray is open. This has the consequence that the event of inserting a CD is not recognized by hal. If the CD-ROM reports CDS_DISK_OK, then CDROM_MEDIA_CHANGED should be checked twice. If it returns two different values, then there really was a media change and got_media can be set to true. OTOH, if both CDROM_MEDIA_CHANGED events return the same value, then the tray is still open and we must not assume that there is already a CD in the drive. Second, for deciding the value of storage.cdrom.support_media_changed hald should not use the CDROM_MEDIA_CHANGED ioctl() (which returns the current state), but the CDC_MEDIA_CHANGED capability. 2004-12-08 David Zeuthen * hald/linux/block_class_device.c (block_class_pre_process): Only poll IDE if they are CD-ROM drives and use a better criteria for finding out whether this is the case 2004-12-08 David Zeuthen * hald/hald_dbus.c (device_query_capability): Fix crasher; reported by leon breedt . 2004-12-06 David Zeuthen * fdi/20freedesktop/ide-drives.fdi: Fix to be so we don't get errors evaluating the file. From Martin Pitt and also RH bug #141771. 2004-12-01 David Zeuthen * configure.in: Bump to 0.4.2 2004-11-30 David Zeuthen * fdi/20freedesktop/ide-drives.fdi: Add blacklist for certain slave IDE drives on Dell Laptops - stopgap solution for now (RH Bug #138148) * fdi/20freedesktop/usb-zip-drives.fdi: Fix a syntax error * hald/linux/osspec.c (compute_coldplug_visit_device): Don't spew too much debug now that we ascent into the tree down to the leafs * libhal-storage/libhal-storage.c (hal_drive_from_udi): Comment out types for ZIP and JAZ drives since that will require ABI changes * libhal-storage/libhal-storage.h: -do- 2004-11-30 David Zeuthen * hald/linux/osspec.c (compute_coldplug_visit_device): Descent down the to leafs of the /sys/devices tree but dont follow symlinks - done such that we can process sysfs trees with holes in them (cf. SCSI midlayer changes for kernel 2.6.10) * hald/linux/common.h: Remove prototypes for get_parent_sysfs_path() and add find_closest_ancestor(), find_computer() * hald/linux/common.c (find_closest_ancestor): New function - such that we can process sysfs trees with holes in them (cf. SCSI midlayer changes for kernel 2.6.10) (get_parent_sysfs_path): Make this static (find_computer): New function * hald/linux/class_device.c (class_device_visit): Use new function find_closest_ancestor() instead of get_parent_sysfs_path * hald/linux/bus_device.c (bus_device_visit): Use new function find_closest_ancestor() instead of get_parent_sysfs_path * hald/linux/block_class_device.c (block_class_visit): Use new function find_closest_ancestor() instead of get_parent_sysfs_path 2004-11-22 David Zeuthen * 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 * 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 * 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) 2004-11-08 David Zeuthen * tools/device-manager/hal-device-manager.glade: Patch from Sjoerd Simons . Attached patch improves h-d-m's glade file a little. Note the difference in the ``Device type'' label between the following two screenshots: http://luon.net/~sjoerd/hal/hdm-before.png http://luon.net/~sjoerd/hal/hdm-after.png 2004-11-08 David Zeuthen * tools/device-manager/DeviceManager.py: Patch from Bryan Clark : I've noticed that the category and capabilities labels on the Device tab of hal-device-manager never changes beyond "Unknown". 2004-11-01 David Zeuthen * configure.in: Bump to 0.4.1 * doc/spec/Makefile.am: Take FIGURE_FILES and EXTRA_DIST outside the conditional DOCBOOK_DOCS_ENABLED so 'make distcheck' passes 2004-11-01 David Zeuthen * tools/device-manager/hal-device-manager.in: New file; append path to where we install so we don't need a symlink to /usr/share. Fixes issue with SELinux strict policy (RH Bug #134845) * tools/device-manager/hal-device-manager: Delete this one as it is now generated by configure 2004-10-29 David Zeuthen * fdi/90defaultpolicy/storage-policy.fdi: Allow SCSI optical drives and correct typo in 'sync' (was 'async'). 2004-10-29 David Zeuthen * hald/linux/pcmcia_utils.c (pcmcia_socket_open): Refine socket location order to work better with SELinux. From Dan Walsh 2004-10-27 David Zeuthen Patch from Tim Müller * configure.in: Require libcap development packages by checking for sys/capability.h 2004-10-26 David Zeuthen * fdi/90defaultpolicy/storage-policy.fdi: Change default policy such that non-hotpluggable fixed disks are not added to the /etc/fstab file because a) ATARAID detection in hal is incomplete (e.g. RAID members from ATARAID controllers might be added to /etc/fstab); and b) default install wont corrupt multiboot systems on fixed drives (RH bug 137072) 2004-10-26 David Zeuthen Patch from Dan Williams to add support for integration with cardmgr. * configure.in: Add --enable-pcmcia-support and --with-stab-file options * hald/Makefile.am: Conditionally include linux/pcmcia_utils.c linux/pcmcia_utils.h linux/pcmcia_cs.h * hald/linux/net_class_device.c (net_class_pre_process): Check driver link and set net.linux.driver properties (me); add appropriate PCMCIA properties if applicable (net_class_accept): Only accept network devices with device links as well as PCMCIA devices (net_class_compute_udi): Fix a typo (me) * hald/linux/osspec.c (compute_coldplug_list): Accept network devices without device link * hald/linux/pcmcia_cs.h: New file * hald/linux/pcmcia_utils.c: New file * hald/linux/pcmcia_utils.h: New file 2004-10-25 David Zeuthen * fdi/90defaultpolicy/storage-policy.fdi: Allow fstype 'auto' for optical drives instead of 'iso9660,udf' 2004-10-25 David Zeuthen * hald/linux/volume_id/volume_id.c (volume_id_probe): Move probe_ntfs to the bottom as some ext3 partition was wrongly identified as a NTFS partition 2004-10-25 David Zeuthen * hald/linux/osspec.c (hotplug_timeout_handler): Fixup timeout handling to rebasing to lowest seqnum in queue instead of just taking the next one 2004-10-25 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_highpoint_ataraid), (volume_id_probe), (volume_id_open_node): Add recognition for highpoint ataraid volumes. 2004-10-21 David Zeuthen * hald/linux/net_class_device.c (net_class_pre_process): Just see if there is a 'wireless' directory in sysfs; don't let the libsysfs copy try to open files cause that might fail on orinoco+hermes (RH bug 136591). Reported by Dan Williams 2004-10-19 David Zeuthen * configure.in: Added pt to ALL_LINGUAS * po/pt.po: Portuguese translations from Pedro Morais 2004-10-19 David Zeuthen Make PCMCIA card readers work by ignoring hotplug add and remove on IDE partitions. Need to remove this code once the kernel is sane again. For background (and some kernel hacker attitude :-) please see https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=130232 * hald/linux/block_class_device.c: (block_class_accept): Ignore block devices we already have added (volume_remove_from_gdl_sleep): New function (volume_set_size): Do a first estimate by assuming block size is 512 (block_class_pre_process): Set fstype to 'auto' and fsuage to 'filesystem' (block_class_removed): Don't remove if partition from IDE device. Automatically remove volumes from a top-level block device if they indeed are not removed (which is the case for IDE hotplug) * hald/linux/class_device.c: (class_device_removed): Return whether it should be removed * hald/linux/class_device.h: Changed return type from void to bool for class_device_removed method * hald/linux/osspec.c: (rem_device): Respect the return value of class_device_removed function 2004-10-18 David Zeuthen * configure.in: Added ru and hu to ALL_LINGUAS * po/ru.po: Russian translations from Leonid Kanter (leon@bcl.bz) * po/hu.po: Hungarian translations Laszlo Dvornik 2004-10-18 David Zeuthen * tools/fstab-sync.8.in: Fixup some typos and clarify how .fdi files are processed 2004-10-18 David Zeuthen * tools/fstab-sync.c (main): Fix crasher when no options are given 2004-10-18 David Zeuthen * fdi/90defaultpolicy/storage-policy.fdi: Allows allow legacy floppy drives to be mounted by matching storage.bus=platform 2004-10-18 David Zeuthen * libhal-storage/libhal-storage.c: (mopts_collect): New convenience function (hal_drive_policy_get_mount_options): Ensure that 'pamconsole', 'user', 'users' and 'console' before any other option as an intricate detail of the mount program require that e.g. exec is after each of these as they imply e.g. noexec. (hal_volume_policy_get_mount_options): -do- 2004-10-18 David Zeuthen * hald/hald.c (main): Do openlog() so we can log to the syslog * hald/linux/hald_helper.h: Add a timestamp field * hald/linux/osspec.c: (osspec_timer_handler): Call hotplug_timeout_handler (hotplug_timeout_handler): New function (hald_helper_hotplug_process_queue): Set last timestamp and add uncommented test code for dropping every 16th hotplug event (hald_helper_first_hotplug_event): Update last timestamp * tools/linux/hal_dev.c (main): Set timestamp * tools/linux/hal_hotplug.c (main): Set timestamp 2004-10-15 David Zeuthen * tools/fstab-sync.c (add_udi): Use the name of the special device file instead of 'foo' when writing to the syslog 2004-10-15 David Zeuthen * fdi/90defaultpolicy/storage-policy.fdi: Never use filesystem UUDI for mount points in the default policy (/me badly flamed) - change fallback to disk. 2004-10-15 David Zeuthen * hald/linux/block_class_device.c (detect_media): Fixup reuse of file descriptors since we want O_NONBLOCK for polling and we don't want to reuse that for probing the media (see below( * hald/linux/volume_id/volume_id.c (volume_id_open_node): Never use O_NONBLOCK since new kernel semantics can and will return EAGAIN aka EWOULDBLOCK (see RH bug 135886). 2004-10-14 David Zeuthen * tools/fstab-sync.c (main): clean wasn't being called on hald startup because of missing defines due to the removal of fstab-sync options. 2004-10-14 David Zeuthen * configure.in: Bump to version 0.4.0 - Hurray 2004-10-14 David Zeuthen * fdi/90defaultpolicy/storage-policy.fdi: Use pamconsole option instead of user. 2004-10-14 David Zeuthen * configure.in: Remove a bunch of fstab-sync options (all but the --enable-fstab-sync) that is now taken from the root computer device object, e.g. defined in fdi/90defaultpolicy/storage-policy.fdi file. 2004-10-14 David Zeuthen Patch from Martin Pitt . * hald/linux/pci_bus_device.c (pci_device_pre_process): Fixup crash on intel pro 2200 wireless because of unchecked pointer. Reported by Mitch . 2004-10-14 David Zeuthen Patch from Sjoerd Simons . * hald/Makefile.am: Add -lm to hald_LDADD so it actually compiles on my debian system :) 2004-10-14 David Zeuthen Patch from Sjoerd Simons . * tools/lshal.c: include so the compiler doesn't complain about dbus_connection_setup_with_g_main not being declared. 2004-10-14 David Zeuthen Patch from Sjoerd Simons . * hald/hald_dbus.c: When hal is running with dropped priv's the callouts are currently too. So allow hal's euid. And fix a compile warning too. 2004-10-14 David Zeuthen Patch from Sjoerd Simons . * hald/linux/usb_bus_device.c (usb_ids_load): The usb id database read functions never close the file descriptors. bad. Fixed in attached patch. 2004-10-14 David Zeuthen Patch from Steve Grubb (linux_4ever@yahoo.com). * hald/linux/net_class_device.c (link_detection_data_ready): The hal daemon does not check the sender's PID for netlink packets. Netlink packets can be sent by any user with local access to the system. Kernel originating packets have a PID of 0, while user space originating packets are > 0. Without checking this, users may send messages to hald that cause daemons using dbus to take inappropriate actions. 2004-10-14 David Zeuthen * configure.in: Add fstab-sync.8 to AC_OUTPUT * doc/conf/storage-non-fixed.fdi: New file, example * doc/conf/storage-skip-all.fdi: New file, example * doc/conf/Makefile.am: Dist and install two new .fdi files * fdi/90defaultpolicy/storage-policy.fdi: Fix a typo in a comment * hald/device_info.c: (my_alphasort): New function (scan_fdi_files): Use my_alphasort to sort in the right order. Process all .fdi files instead of bailing out on the first match. * hald/linux/osspec.c: (get_selinux_removable_context): New function, copied over from tools/fstab-sync.c (not currently used) (osspec_probe): Use get_selinux_removable_context (not currently used) * libhal-storage/libhal-storage.c: (hal_drive_policy_get_mount_options): Check if mount_option property is actually FALSE. (hal_volume_policy_get_mount_options): Same * libhal/libhal.c: (hal_free_property_set): Check if object to free is NULL and just return. Allows hal_free_property_set (NULL). * tools/Makefile.am: Add rules for building fstab-sync.8 man page * tools/fstab-sync.8.in: New file * tools/fstab-sync.c: Much rewritten to use libhal-storage and the new policy properties. See diff for details. 2004-10-13 David Zeuthen * doc/spec/hal-spec.xml.in: Add docs for is_ascii attribute on the match directive. * fdi/90defaultpolicy/storage-policy.fdi: Don't add volume policy if the drive has the no_partitions_hint set to TRUE. Require label to be ASCII if using the label as a mount point. Use whitelist of msdos partition types if volume stems from a drive with a msdos partition table. * hald/device_info.c (handle_match): Add the is_ascii match check. * libhal-storage/libhal-storage.c: (hal_drive_free): Free newly added fields (hal_volume_free): Free newly added fields (hal_drive_from_udi): Add should_mount, mount_filesystem, desired_mount_point properties (hal_volume_from_udi): Add should_mount, mount_filesystem, desired_mount_point properties (hal_drive_policy_default_get_mount_root): New function (hal_drive_policy_default_use_managed_keyword): New function (hal_drive_policy_default_get_managed_keyword_primary): New function (hal_drive_policy_default_get_managed_keyword_secondary): New function (hal_drive_policy_is_mountable): New function (hal_drive_policy_get_desired_mount_point): New function (hal_drive_policy_get_mount_options): New function (hal_drive_policy_get_mount_fs): New function (hal_volume_policy_is_mountable): New function (hal_volume_policy_get_desired_mount_point): New function (hal_volume_policy_get_mount_options): New function (hal_volume_policy_get_mount_fs): New function (hal_drive_no_partitions_hint): New function * libhal-storage/libhal-storage.h: Add prototypes for new functions 2004-10-13 David Zeuthen * fdi/20freedesktop/sony_dsc.fdi: New file, to match krh's camera that is USB Mass Storage based. * fdi/20freedesktop/canon-digital-ixus-v.fdi: Removed * fdi/20freedesktop/Makefile.am (dist_fdi20freedesktop_DATA): add sony, remove canon. * doc/spec/hal-spec.xml.in: Add a bunch of documentation to match the new .fdi parser and the policy stuff for storage devices * hald/device_info.c (handle_match): Remove debug output * hald/hald_dbus.c (device_remove_property): Require superuser 2004-10-12 David Zeuthen First part of big patch to use .fdi files for policy properties. * configure.in: Add a bunch of new configure.in variables * doc/Makefile.am: Add conf directory * doc/conf/Makefile.am: New file * doc/conf/storage-policy-examples.fdi: New file * fdi/30osvendor/Makefile.am: New file * fdi/40oem/Makefile.am: New file * fdi/50user/Makefile.am: New file * fdi/90defaultpolicy/Makefile.am: New File * fdi/90defaultpolicy/storage-policy.fdi: New file * fdi/95userpolicy/Makefile.am: New file * fdi/Makefile.am: Added new subdirs * hald/Makefile.am: Link with libselinux if selinux is enabled * hald/device.c: (hal_device_property_get_as_string): New function (hal_device_copy_property): New function * hald/device.h: Add prototypes for two new functions * hald/device_info.c: (resolve_udiprop_path): New function (match_compare_property): New function (handle_match): Allow property names to contain UDI dirct and indirect references. Add support for 'exists', 'empty', 'is_absolute_path', 'compare_lt', 'compare_le', 'compare_gt', 'compare_ge' (handle_merge): Add support for 'copy_property' (handle_append): New function (start): Support new 'append' operation (like merge) (end): Also support MERGE_TYPE_COPY_PROPERTY. Fixup compare bug in match_depth_first_fail that made several matches on the same level impossible. (process_fdi_file): Init match_depth_first_fail to -1 * hald/linux/osspec.c (osspec_probe): Add selinux support to root computer device object. 2004-10-08 David Zeuthen * hald/linux/platform_bus_device.c (platform_device_accept): Check that the floppy drive actually exists. Code snippet from Bill Nottingham , see Red Hat bug 133777. 2004-10-08 David Zeuthen * hald/linux/pci_bus_device.c (pci_ids_load): The {pci, usb} id database read functions never close the file descriptors. bad. Fixed in attached patch. Patch from Sjoerd Simons . 2004-10-08 David Zeuthen * configure.in: look for BLKGETSIZE64 to be provided. From Jonathan Blandford 2004-10-08 David Zeuthen * libhal-storage/libhal-storage.h (LIBHAL_STORAGE_H): Only use one underscore, not two. Reported by Jérôme Lodewyck . 2004-10-07 David Zeuthen * hald/linux/osspec.c (hald_helper_hotplug_process_queue): Have a list of hotplug events received during the sleep of the first hotplug event and process that in order (hotplug_sem_down): Typo in debug output (hald_helper_first_hotplug_event): Determine last_hotplug_seqnum by looking at list of hotplug events received during the sleep of the first hotplug event (hald_helper_msg_compare): New function (hald_helper_data): Insert, into a sorted list, hotplug events received when sleeping on the first hotplug event (FIRST_HOTPLUG_SLEEP): New constant instead of hardcoding 2500 ms 2004-10-06 David Zeuthen * hald/linux/osspec.c (hald_helper_data): New handling of hotplug events with SEQNUM < LAST_SEQNUM. Idea from Sjoerd Simons . 2004-10-06 David Zeuthen Patch from Martin Pitt . * hald/linux/osspec.c (add_device): Check whether given_sysfs_path is NULL and immediately return in this case; previously, this parameter was copied and compared without checking, which caused a segfault. * hald/hald.c (drop_privileges): Do not exit hald if capabilities cannot be installed (which happens on kernels which do not support capabilities), since only few features actually depend on additional capabilities (currently only the "link" detection of MII ethernet cards) 2004-10-02 David Zeuthen * libhal/libhal.c (hal_initialize): Don't set is_shutdown when we're just initialized. (hal_get_all_devices): Set num_devices to 0 even if we fail. Patch from Colin Walters 2004-09-29 David Zeuthen * hald/linux/volume_id/volume_id.c (volume_id_probe): Probe for msdos partition table before any other fs'es with the signature in the first block. Patch from Martin Pitt . 2004-09-29 David Zeuthen * hald/linux/block_class_device.c (detect_disc): Do a CDROM_DRIVE_STATUS before CDROM_DISC_STATUS * tools/fstab-sync.c (fs_table_line_is_generated): Use secondary managed keyword if applicable (fs_table_add_volume): Use access keyword only if applicable (volume_new): Also set is_removable (fs_table_add_volume): Only add removable selinux context for hotpluggable drives and drives with removable media * configure.in: Add fstab-sync secondary keyword which is useful for migration from e.g. kudzu to managed - fstab-sync will only delete fstab lines with the secondary keyword but never write them. Needs to be enabled with --enable-mnt-noop-sec. Also add fstab-sync access keyword which defaults to 'user' but can be replaced by 'console' - this is useful for specifying the extra mount option for how to give access. Now the access keyword needs to be enabled with --enable-mnt-access. For (my own) reference, this is the parameters used to bootstrap when building for Red Hat distros ./autogen.sh --enable-mnt-noop --enable-fstab-sync --enable-hotplug-map --with-mnt-noop=managed --enable-mnt-noop-sec --with-mnt-noop-sec=kudzu --enable-mnt-access --with-mnt-access=console --with-init-scripts=redhat --with-pid-file=/var/run/haldaemon.pid --enable-selinux note: the util-linux package must be patched with the patch in RH bug 133941 in order for --with-mnt-access=console to work; should hit Rawhide soon. 2004-09-29 David Zeuthen * hald/linux/block_class_device.c (block_class_pre_process): Check for USB floppy drive by looking at interface class instead 2004-09-27 David Zeuthen * libhal/libhal.c (hal_shutdown): Remember to init error var * tools/fstab-sync.c (add_udi): Add a whitelist so if a volume stems from a msdos style partition table we require that type to be in the whitelist; initially includes various FAT formats, NTFS and Linux. (volume_new): Fix a bug in size computation * libhal-storage/libhal-storage.h: Add prototype for hal_volume_get_msdos_part_table_type * libhal-storage/libhal-storage.c: (hal_volume_get_msdos_part_table_type): New function * hald/linux/block_class_device.c (block_class_pre_process): Rename x86_type to msdos_part_table_type * hald/haldaemon.in: Fixup URL 2004-09-27 David Zeuthen * configure.in: Added nl to ALL_LINGUAS * po/nl.po: Dutch translations from Reinout van Schouwen 2004-09-27 David Zeuthen * libhal/libhal.c (hal_shutdown): Make libhal compile since an error variable was errornously deleted before committing it 2004-09-27 David Zeuthen Patch from Sjoerd Simons . * tools/linux/hal_hotplug_map.c: Since a few days debians libgphoto2 also ships the an usb usermap. Attaches patch makes hal work with this :) 2004-09-27 David Zeuthen * libhal/libhal.c: (struct LibHalContext_s): add is_shutdown field (filter_func): if ctx->is_shutdown is TRUE don't process the message. Return NOT_YET_HANDLED instead of HANDLED on all messages as several libhal contexts may want to process them. (hal_initialize): Set ctx->is_shutdown to FALSE (hal_shutdown): Remove the matching rule on the Manager object and set is_shutdown to TRUE. Don't fix the leak on the DBusConnection because leaking it means that the application will terminate. Hence introduce a leak of the LibHalContext since shutdown is async. Add a few TODO comments about that this needs fixing (probably needs dbus_bus_get_dedicated). * hald/hald_dbus.c (sender_has_superuser_privileges): New function (device_set_property): Require superuser (device_add_capability): Require superuser * hald/linux/block_class_device.c (block_class_pre_process): Add checks for SATA disks - code snippet from Alan Cox 2004-09-27 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_vfat): Fix typo in FAT uuid conversion. 2004-09-26 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_vfat): Fix end of directory marker recognition. 2004-09-25 David Zeuthen * configure.in: Added fr to ALL_LINGUAS * po/fr.op: Added french translations from Jérôme Lodewyck * libhal-storage/libhal-storage.h: Add prototypes for new functions hal_drive_(requires_eject|get_dedication_icon_(drive|volume)). * libhal-storage/libhal-storage.c (hal_storage_policy_lookup_icon): Remove printf debug statement. (hal_drive_get_dedicated_icon_drive): New function (hal_drive_get_dedicated_icon_volume): New function (hal_drive_from_udi): Read storage.icon.* and storage.requires_eject (hal_drive_requires_eject): New function * hald/linux/block_class_device.c (block_class_pre_process): Add and set boolean property storage.requires_eject; right now we only add it for optical drives. Interestingly enough, my iPod Mini requires to be ejected as well (see RH bug #132195 for some discussion). * doc/spec/hal-spec.xml.in: Add docs for storage.requires_eject, storage.icon.drive and storage.icon.volume 2004-09-24 David Zeuthen * libhal-storage/libhal-storage.c : (hal_volume_policy_should_be_visible): s/moint/mount/ so the code actually compiles :-/ 2004-09-24 David Zeuthen * libhal-storage/libhal-storage.h: Add and hal_drive_find_all_volumes and change hal_volume_policy_should_be_visible * libhal-storage/libhal-storage.c: Delete some uncommented code (hal_volume_policy_should_be_visible): Accept a new parameter called target_mount_point since we need to evaluate policy on unmounted volumes and want to blacklist them in advance. Add documentation. (hal_drive_find_all_volumes): New function to find all volumes belonging to a drive 2004-09-24 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_lvm2), (volume_id_probe): probe for all raid types first, cause probes for real filesystems may just be successful on raid members 2004-09-24 David Zeuthen * po/ChangeLog: New file 2004-09-24 David Zeuthen * Makefile.am: Ensure that 'make distcheck' passes (DISTCLEANFILES): Add intltool-(extract|merge|update) (EXTRA_DIST): Add intltool-(extract|merge|update).in 2004-09-23 David Zeuthen * po/POTFILES.in: New file * libhal-storage/libhal-storage.h: New file * libhal-storage/libhal-storage.c: New file * libhal/libhal.c: Add dgettext support (hal_initialize): Bind to translation domain (but only once) * doc/api/Makefile.am (htmldocdir): Rename to api from libhal * Doxyfile.in: Add libhal-storage * configure.in: Add checks for i18n tools. Add hal-storage.pc, libhal-storage/Makefile and po/Makefile.in to AC_OUTPUT * autogen.sh: Add checks for i18n tools * hal-storage.pc.in: New file * Makefile.am: Add libhal-storage and po to SUBDIRS. Add hal-storage.pc 2004-09-23 Kay Sievers * hald/linux/block_class_device.c: (block_class_pre_process): fix matching of volume_id partition index to block device partition index 2004-09-21 Kay Sievers * hald/linux/block_class_device.c: (block_class_accept): skip legacy floppies here, until we get proper sysfs links to the platform device and switch over to merge floppies into that device. Legacy floppies handled until that in platform_bus_device.c I'm working on fixing the kernel sysfs /device-links and with such a link hald probes legacy floppies with block_class_device.c which we don't want right now cause it can block the whole process. 2004-09-21 David Zeuthen Patch from Martin Pitt * hald/linux/linux_dvd_rw_utils.c (get_read_write_speed): Several Ubuntu users reported that hal does not start up properly. I debugged this and found out that hald/linux/linux_dvd_rw_utils.c contains an unchecked buffer access which causes a segfault. The attached patch fixes that; it might not be the most correct solution, but it works. The error is still present in 0.2.98; I made the fix in 0.2.92, but the patch should still apply. 2004-09-21 David Zeuthen * hald/linux/block_class_device.c (block_class_pre_process): Set has_removable_media for USB floppies in case the removable file in sysfs is gone 2004-09-20 Kay Sievers Add support for usb-serial devices: * hald/Makefile.am: add serial_class_device.c, usb_serial_bus_device.c * hald/linux/osspec.c: (hald_helper_data): plug serial_class_handler, usb_serial_bus_handler into the device processing * hald/linux/serial_class_device.c: (serial_class_device_accept), (serial_class_pre_process): new file to support serial ports * hald/linux/usb_serial_bus_device.c: (usb_serial_device_compute_udi), (usb_serial_device_pre_process): support for bus devices from the usb-serial subsystem * tools/device-manager/Const.py.in: add the new busses * tools/device-manager/Makefile.am: add the new icon * tools/device-manager/Representation.py: support the new serial port icon * tools/device-manager/hal-serial-port.png: picture of serial port 2004-09-20 Kay Sievers * hald/Makefile.am: add new logging glue file for drive_id/ * hald/linux/drive_id/drive_id.c: remove own dbg() implementation and map to the HAL logger * hald/linux/drive_id/drive_id.h: next version number * hald/linux/drive_id/drive_id_logging.h: map to the HAL logging function * hald/linux/volume_id/volume_id.h: next version number 2004-09-20 David Zeuthen * configure.in: Bump version to 0.2.98 2004-09-20 David Zeuthen * doc/spec/hal-spec.xml.in: Add docs for volume.size * hald/linux/block_class_device.c (volume_set_size): Use the BLKSIZEGET64 ioctl to get the size in bytes and populate volume.size (block_class_pre_process): Use volume.size when doing volume_id 2004-09-20 David Zeuthen * hald/linux/block_class_device.c (block_class_pre_process): Catch up with changes made in volume_id described below * hald/linux/volume_id/volume_id.h: Remove partition_number as it's redundant. Rename partition_msdosparttable_type to partition_type_raw * hald/linux/volume_id/volume_id.c (probe_msdos_part_table): Don't set partition_number as it's gone 2004-09-20 David Zeuthen * doc/spec/hal-spec.xml.in: Add docs for volume.is_partition, volume.partition.number and volume.partition.x86_type * hald/linux/block_class_device.c: (set_volume_id_values): Add some more debug (detect_media): Set volume.is_partition to FALSE (block_class_pre_process): Set the new volume.is_partition, volume.partition.number and volume.partition.x86_type properties * hald/linux/volume_id/volume_id.c (probe_msdos_part_table): Set partition_number and partition_msdosparttable_type * hald/linux/volume_id/volume_id.h: Add partition_number and partition_msdosparttable_type members 2004-09-20 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_vfat): Trivial fix for debug output, the last iteration of the loop should end with 0 not -1 2004-09-19 David Zeuthen * doc/spec/hal-spec.xml.in: Add section about policy agents and media insertion into drives that another application is holding a lock on. 2004-09-19 David Zeuthen * hald/hald_dbus.c (agent_device_matches): Removed (agent_merge_properties): Removed (agent_manager_remove): Removed (agent_manager_commit_to_gdl): Removed (agent_manager_new_device): Removed (filter_function): Removed all the AgentManager methods (raise_udi_in_use): Removed * doc/spec/hal-spec.xml.in: Add docs for info.locked. Remove section about HAL agents as they are now gone. Fixed up renaming of scsi_device to scsi. * doc/spec/hal-arch.dia: Remove HAL Agents * doc/spec/hal-linux26.dia: Update diagram since we now use a local socket from hal.hotplug and hal.dev helpers. * examples/locking.py: New file; shows how to use locking 2004-09-19 David Zeuthen Patch from Sjoerd Simons . * hald/linux/usb_bus_device.c (usb_proc_parse): usb_proc_parse() parses /proc/bus/usb/devices but never closes the FILE struct, which obviously leads to a fd leak. Fixed in attached patch. 2004-09-19 David Zeuthen Patch from Alexander Larsson . It seems that some models of cd-rw drives doesn't seem to support the GET CONFIGURATION command. At least mine returns sense 5h. However, to automatically support cdrom blanking, nautilus-cd-burner needs to correctly know if the medium is rewritable. Thus the attached patch uses the READ DISC INFORMATION command to get that information. * hald/linux/block_class_device.c (detect_disc): Use disc_is_rewriteable * hald/linux/linux_dvd_rw_utils.c (disc_is_rewritable): New function * hald/linux/linux_dvd_rw_utils.h: Add prototype for new function 2004-09-19 David Zeuthen * hald/hald_dbus.c: Include dbus-glib-lowlevel.h instead of dbus-glib.h (filter_function): Remove some debug output * configure.in: Check for selinux_removable_context_path in libselinux * tools/fstab-sync.c: (get_removable_context): (fs_table_add_volume): (add_udi): (remove_udi): (clean): Patch from Dan Walsh to add fscontext to /etc/fstab for SELinux. Also removes patch that restored context for /etc/fstab since this is not needed. 2004-09-17 Joe Shaw * doc/TODO: Remove the device locking section, it's done now. Woo! * doc/spec/hal-spec.xml.in: Add the Lock and Unlock methods to the spec. * hald/hald_dbus.c (raise_device_not_locked, raise_device_already_locked): New errors for the locking methods. (device_query_capability): Change the parsing to split up caps on spaces rather than doing a substring match. (device_lock): Implements the Lock dbus method, which grabs an advisory lock on a device. (device_unlock): Implements the Unlock dbus method. (service_deleted): Callback which releases locks when the locking service quits. (filter_function): Add a ServiceDeleted handler, check for Lock and Unlock methods. (hald_dbus_init): Add a match for the ServiceDeleted signal so we can see when things disconnect from the bus. * libhal/libhal.c (hal_device_lock): Added. Takes an advisory lock for a device. (hal_device_unlock): Releases the lock. 2004-09-17 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_vfat): Fix endless loop for FAT32 volumes where the root directory cluster chain is not terminated. Follow a maximum of 100 clusters now and stop searching if we find a directory-end entry. 2004-09-17 David Zeuthen Patch from Steve Grubb . * configure.in: Add HALD_PID_FILE to config.h * hald/hald.c: (delete_pid): New function (main): Write pidfile. Set atexit to delete_pid. * hald/haldaemon.in: Don't write pidfile 2004-09-16 David Zeuthen Revisit networking. Basically a) split ethernet and wireless into net.80203 and net.80211 properties; b) support renaming of devices; c) use uint64 datatype; d) add property for whether an interface is up and track this; and e) general cleanups when properties are available and not * doc/spec/hal-spec.xml.in: Update spec with changes made. Also add uint64 property type * hald/device_store.c (hal_device_store_match_key_value_int): New function * hald/device_store.h: Add prototype for function hal_device_store_match_key_value_int * hald/linux/hald_helper.h: Add net_ifindex member * hald/linux/net_class_device.c: (mii_get_rate): Rename net.ethernet.rate to net.80203.rate and make the type uint64 (mii_get_link): Rename net.ethernet.link to net.80203.link (set_device_link_status): Remove function (link_detection_handle_message): Also listen for interface up/down messages on the netlink socket; maintains net.interface_up. Also handle renaming messages. Remove net.80203.* properties if the interface is down. Remove net.80203.rate if net.80203.link is FALSE. Only check rate for net.80203 devices (fixes crasher for my new Atheros card; remember?) (net_class_pre_process): Rename from net.ethernet to net.80203 and also have separate net.80211 namespace. Add net.interface_up and net.linux.ifindex properties. Set net.{80203,80211}.mac_address as a uint64 rather than net.ethernet.{mac_addr,mac_addr_upper24, mac_addr_lower24}. (net_class_accept): Small reorg of code (net_class_post_merge): Always start listening to netlink socket * hald/linux/osspec.c: (process_coldplug_list): Use NULL for hotplug_msg when invoking add_device (recover_net_device): New function (add_device): Use net_ifindex and recover net device to handle renaming of networking devices by udev and/or initscripts. Now optionally uses the hotplug msg which may be NULL. (rem_device): Optionally use the hotplug msg which may be NULL. (hald_helper_hotplug): Pass on hotplug msg (hald_helper_device_name): Pass on hotplug msg (hald_helper_hotplug_process_queue): Pass on hotplug msg (hald_helper_data): Pass on hotplug msg * tools/linux/hal_hotplug.c: (wait_for_sysfs_info): Wait for ifindex for net devices and extract the value (main): pass on net_ifindex value to hotplug msg 2004-09-15 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_hfs_hfsplus): Copy over extents array for later examination. Fixes the label reading of a 40 GB hfsplus volume that I found on my neighbours desk. 2004-09-15 David Zeuthen * hald/hald_dbus.c (foreach_device_match_get_udi_tdl): New function (manager_find_device_string_match): Also return devices in the TDL that has a non-temporary UDI 2004-09-14 Kay Sievers * hald/linux/volume_id/volume_id.c: (set_uuid): Swicht from length parameter to the type of uuid to be able to use the same format for the uuid string, the native platform uses. (probe_hfs_hfsplus): Switch the uper and lower part of the number to match the number OS X prints with hfs.util. (probe_linux_raid), (probe_ext), (probe_reiserfs), (probe_xfs), (probe_jfs), (probe_vfat),(probe_hfs_hfsplus), (probe_ntfs): Set uuid by type instead of length 2004-09-14 Kay Sievers Patch from: Sjoerd Simons * hald/linux/multimedia_class_device.c: Debian does have the v4l2 stuff in the kernel headers. So just copying causes the compile to fail on my system. Luckily it defines HAVE_V4L2, so we can check for that. 2004-09-14 Kay Sievers Change Hotplug handling to better match the kernel. The next kernel version will have a u64 hotplug sequence number starting at 1. We can't be sure, that an ACTION != "add" is everytime a "remove" event, change that to pass the action string around instead of the flag. * hald/linux/hald_helper.h: * hald/linux/osspec.c: * tools/linux/hal_dev.c: * tools/linux/hal_hotplug.c: Change the hal_message structure to carry the u64 sequence number and the ACTION as a string. Change message type to an enum. Rename devnode to devname to match the udev name. Use the u64 sequence number and change the logic not to rely on negative numbers. The first sequence number will never be 0 in the kernel, so we use it if we don't get one from udev. 2004-09-14 David Zeuthen * hald/linux/block_class_device.c (cdrom_get_properties): Also set storage.cdrom.dvdrw to FALSE. Add note about we should be giving the SCSI ioctl stuff some love soon. * hald/linux/volume_id/volume_id.c (probe_vfat): Don't le16_to_cpu for vs->sectors_per_cluster - it's a 8-bit quantity. Fixes bug with one of my FAT32 volume labels 2004-09-13 Kay Sievers * hald/linux/multimedia_class_device.c: (multimedia_class_device_accept), (multimedia_class_pre_process): New file for initial support of video4linux devices. It's just a starting point and we need more input from users of v4l devices. For a simple webcam it currently looks like this: multimedia.device = '/udev/video0' (string) info.category = 'multimedia' (string) multimedia.video.can_capture = true (bool) multimedia.audio.has_audio = false (bool) multimedia.tuner.has_tuner = false (bool) multimedia.linux.version = 'v4l' (string) info.udi = '/org/freedesktop/Hal/devices/usb_device_5a9_a511_100_-1_noserial' (string) * hald/linux/osspec.c: Add the new multimedia_class_handler to probe for video device properties on device discovery * tools/device-manager/Representation.py: Change "video" to "multimedia" to have a nice icon for the screenshots :) 2004-09-13 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_hfs_hfsplus): Add support for hfsplus with the physical location of the root node specified by a higher extent as the first one. This fixes the label reading on David's big hfsplus volume - I always expected that the volume was broken :) Also add initial support for hfs anf hfsplus uuid's. 2004-09-12 David Zeuthen * hald/linux/block_class_device.c (block_class_in_gdl): Force the initial poll if we support media_check_enabled; should fix some issues with the IBM USB Memory Stick that shockingly report /sys/block//removable set to 0. 2004-09-12 David Zeuthen * hal.conf.in: Fixup this file as it was broken. Reported by Kay Sievers . 2004-09-12 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_vfat): Patch from Sjoerd Simons to fix vfat label reading on big endian systems 2004-09-07 David Zeuthen * hald/linux/osspec.c (hald_helper_hotplug_process_queue): Check for duplicate events and ignore them 2004-09-07 David Zeuthen Patch from Sjoerd Simons * configure.in: * hald/Makefile.am: All binaries generated by hal currently have -lexpat in their LDFLAGS. Which by itself is not a problem, except that libtool puts it as a library dependency in libhal.la. Which is ofcourse unnecessary. Attached patch fixes this by using the expat link option only for the hald binary. No screenshot for this one though :) 2004-09-03 David Zeuthen Patch from Martin Pitt . * hal.conf.in: Drop AgentManager interface. Allow both HAL_USER and root to own the org.freedesktop.Hal service. * hald/Makefile.am: Link with libcap * hald/hald.c: (usage), (drop_privileges), (main): add option --drop-privileges which causes hald not to run as root, but as @HAL_USER@ in @HAL_GROUP@ and all additional groups set in /etc/group, and keeping the necessary capabilities to do its job. This does _not_ change the default behaviour, if the option is not specified, hald runs as root, as before. 2004-09-03 David Zeuthen Patch from Martin Pitt . * hald/linux/block_class_device.c: (cdrom_get_properties), (detect_media): * hald/linux/input_class_device.c: (input_class_pre_process): * hald/linux/printer_class_device.c: (printer_class_pre_process): Intercept unchecked ioctl calls and log failures. 2004-09-02 Joe Shaw * hald/device.c (hal_device_property_get_bool): Aiee! If the property is not found, we want to return FALSE instead of -1. * hald/property.c (hal_property_get_bool): Return FALSE if the type isn't boolean in the assertion, not -1. * hald/linux/common.c (rename_and_merge): Fix some broken logic which only worked because it was depending on -1 being returned from boolean functions. If I understand its original intent correctly, it should still work. (Of course, info.not_available is never set to TRUE programmatically, so unless it's set in FDI files it never actually comes up) * doc/TODO: Update the "Computer" HalDevice item, remove a duplicate item. 2004-09-01 David Zeuthen Patch from Jon Lech Johansen . Add support for properties of 64-bit unsigned integers. Right now this is not used as the D-BUS python bindings needs a patch. * hald/device.c: (hal_device_merge_with_rewrite), (hal_device_merge), (hal_device_matches), (hal_device_property_get_uint64), (hal_device_property_set_uint64), (hal_device_print): * hald/device.h: * hald/device_info.c: (handle_match), (handle_merge), (end): * hald/hald_dbus.c: (foreach_property_append), (device_get_property), (device_set_property): * hald/linux/common.c: (parse_hex_uint64): * hald/linux/common.h: * hald/linux/ieee1394_node_class_device.c: (ieee1394_node_class_pre_process): * hald/linux/net_class_device.c: (net_class_pre_process): * hald/property.c: (hal_property_new_uint64), (hal_property_get_uint64), (hal_property_to_string), (hal_property_set_uint64): * hald/property.h: * hald/pstore.c: (hal_pstore_save_property), (hal_pstore_load_property): * libhal/libhal.c: (hal_device_get_all_properties), (hal_psi_get_uint64), (hal_device_get_property_uint64), (hal_device_set_property_helper), (hal_device_set_property_string), (hal_device_set_property_int), (hal_device_set_property_uint64), (hal_device_set_property_double), (hal_device_set_property_bool), (hal_device_remove_property), (hal_device_print): * libhal/libhal.h: * tools/device-manager/DeviceManager.py: * tools/hal_get_property.c: (main): * tools/hal_set_property.c: (usage), (main): * tools/lshal.c: (dump_devices), (print_property): 2004-09-01 David Zeuthen * tools/fstab-sync.c (fs_table_line_is_mounted): New function (fs_table_remove_generated_entries): Don't remove generated entries that are in use (e.g device mounted at path). Fixes problem with restarting the hal daemon with devices mounted (e.g. on package upgrade etc.) * hald/callout.c (process_callouts): Print full path of callout 2004-09-01 David Zeuthen This was a fun debugging session that led to this fix :-) Basically when building optimized binaries (like for the Fedora RPMS) an interesting sideeffect showed up: gobject signal handlers are run in arbritrary order. This means that we were processing hotplug events for sda%d before sda was added; which resulted in the unavailability of the kids because they couldn't find their parent. Now we look at the device store to infer when to process the next event. Which is more correct and actually makes hal work. This *never* once showed up when not building without --build=i686-redhat-linux-gnu --host=i686-redhat-linux-gnu --target=i386-redhat-linux-gnu. Oh well. * hald/linux/osspec.c (process_coldplug_list_on_gdl_store_add): Renamed from _callouts_done_for_device (process_coldplug_list): Wait for device to be added to GDL instead of relying on callouts to complete (device obj may not have been added to GDL just because the callouts complete) (reenable_hotplug_on_gdl_store_add): Renamed from reeanble_hotplug_proc (reenable_hotplug_on_gdl_store_remove): New function (hald_helper_hotplug): Rather look at the GDL for additions and removals than looking at whether callouts complete 2004-08-31 David Zeuthen * tools/linux/hal_hotplug.c: Don't wait for 'removable' file - it just isn't available for non-top-level block devices (duh) 2004-08-31 David Zeuthen * hald/linux/block_class_device.c: (detect_media): Don't poll on drives with storage.removable set to FALSE (block_class_pre_process): Use the /sys/block//removable file * tools/device-manager/DeviceManager.py: Don't print out Conditions; should give us more headroom until D-BUS is fixed wrt. rules maximum and subscription of signals in the python bindings * tools/linux/hal_hotplug.c: Wait for 'removable' file for 'block' system events 2004-08-31 Kay Sievers * tools/linux/hal_hotplug.c: (wait_for_sysfs_info): Fix timout calculation and don't wait for usb-files if we are called for a usb class, just wait for a dev file 2004-08-31 David Zeuthen * tools/fstab-sync.c (clean): Call restore_selinux_context if we have selinux 2004-08-31 David Zeuthen * hald/Makefile.am (hald_SOURCES): Also add volume_id_logging.h so distribution tarballs work 2004-08-30 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_linux_raid): Skip very very small volumes, caus our end of volume calculation is wrong in that case. * hald/linux/volume_id/volume_id_logging.h: Add a new file to wrap the HAL logging facility into volume_id 2004-08-30 David Zeuthen * tools/linux/Makefile.am (uninstall-local): Get the uninstall rules right for 10-hal.dev and 20-hal.hotplug 2004-08-30 David Zeuthen * tools/fstab-sync.c: (open_temp_fstab_file), (add_udi), (remove_udi), (clean): Go back to creating the temporary file in /etc. Add note about using /tmp (giving up atomicity) if /etc is in general readonly 2004-08-30 David Zeuthen * configure.in: Add SELinux checks * tools/Makefile.am: Build fstab-sync with selinux support if applicable * tools/fstab-sync.c: (restore_selinux_context): New functions (add_udi): Use restore_selinux_context (remove_udi): Use restore_selinux_context * tools/linux/Makefile.am: Install hal.hotplug and hal.dev symlinks prefixed with 20- respectively 10-. 2004-08-29 David Zeuthen * tools/linux/Makefile.am (install-data-local): Use 20-hal.hotplug for hotplug helper and 10-hal.dev for dev.d helper. Suggested by Kay Sievers . 2004-08-29 David Zeuthen * hald/linux/block_class_device.c (detect_media): Set volume.fsusage to empty string by default (block_class_pre_process): Also set volume.fsusage to empty string by default. Set storage.drive_type to disk by default (should now work the the ub kernel driver instead of usb-storage) * hald/hald.c (main): Print out version * tools/linux/hal_dev.c (main): Put in option for more debug 2004-08-28 David Zeuthen * tools/linux/hal_hotplug.c: Add some more files to wait for (wait_for_sysfs_info): Only wait 10 secs (should be enough; we're waiting for the kernel) 2004-08-28 David Zeuthen * hald/linux/block_class_device.c: (block_class_visit): Fail if parent isn't already there (this and other things should close RH Bug #131154) * hald/linux/bus_device.c: (bus_device_visit): Fail if parent isn't already there * hald/linux/class_device.c: (class_device_visit): Fail if parent isn't already there; return NULL if we merge onto parent. Leave TODO about how to deal with this (other devices will be processed while we merge; probably not a big deal since we don't yet have callouts) (class_device_final): Add a TODO about running callouts when merge is complete * hald/linux/osspec.c: (process_coldplug_list_callouts_done_for_device): Also discon. cancelled (process_coldplug_list_device_cancelled): Also discon. done_for_device (process_coldplug_list): Pass coldplug_list as param to cancelled (reenable_hotplug_proc_on_device_cancel): Also disconnect _proc (reenable_hotplug_proc): Also disconnect _cancel 2004-08-28 Kay Sievers * hald/linux/block_class_device.c: (get_first_valid_partition), (detect_media): Fix leftover from volume_id name change, which broke no_partitions media. Clarify comments only a few lines apart, to not claim the direct opposite 2004-08-27 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_lvm1), (probe_lvm2): Add detection of LVM physical drives (probe_linux_raid): add version number of raid * hald/linux/volume_id/volume_id.h: We are at version 021 now. It started as a replacement of the FAT label reading code in HAL. I _never_ expected that we seek over the whole disk now to search for raid signatures and support nearly every filesystem I've ever had a formatting tool for :) 2004-08-27 David Zeuthen * AUTHORS: Add Kay Sievers cause he rocks. Sort the list in alphabetical order of surname (I'm just soo political correct :-) * fdi/20freedesktop/canon-digital-ixus-v.fdi: Merge onto usb_device since we really don't know what interface to target * hald/linux/hald_helper.h: Change comment about seqnum * hald/linux/libsysfs/sysfs_dir.c (sysfs_open_link): Patch from Steve Grubb to fix leak on error condition. * hald/linux/osspec.c: (add_computer_callouts_done): Move from TDL to GDL (osspec_probe): Add to TDL; callouts may need it (seen by Kristof Vansant (hald_helper_device_node): Print out seqnum (hald_helper_data): Pass seqnum * hald/logger.h: Ignore ENABLE_VERBOSE_MODE; always compile all logging statements in (should take the heat of some bugreports) * tools/linux/hal_dev.c (main): Pass seqnum if available; otherwise pass -1. 2004-08-26 Joe Shaw * configure.in: Don't check for a C++ compiler... we don't have any C++ code. * doc/spec/hal-spec.xml.in: Add a section about kernel properties. * hald/linux/osspec.c (osspec_probe): Get kernel info from uname() and add the properties to the Computer device. 2004-08-26 Kay Sievers * doc/spec/hal-spec.xml.in: Add description of "volume.fsusage" * hald/linux/block_class_device.c: (set_volume_id_values): Use "volume.fsusage" instead of "is_filesystem" and "is_part_of_raid" (detect_media), (block_class_pre_process): Set missing defaults and remove "is_filesystem" * hald/linux/volume_id/volume_id.c: (probe_linux_raid), (probe_msdos_part_table), (probe_ext), (probe_reiserfs), (probe_xfs), (probe_jfs), (probe_vfat), (probe_udf), (probe_iso9660), (probe_ufs), (probe_mac_partition_map), (probe_hfs_hfsplus), (probe_ntfs), (probe_swap): Switch naming form "format" and "type" to "type" and "usage" to match the names we use in HAL now. * tools/fstab-sync.c: (udi_is_volume_or_nonpartition_drive): Switch from "is_filesystem" to "volume.fsusage" to determine if the volume is mountable 2004-08-25 David Zeuthen * tools/linux/hal_hotplug_map.c (main): Match usb_device rather than usb since we don't want to merge onto interfaces. 2004-08-25 David Zeuthen * configure.in: Add option for new callout hal-hotplug-map * hald/device.[ch]: Add the "cancelled" signal and hal_device_cancel method * hald/hald.c (main): Avoid daemonization for now; will make hald hang if anything fails up-until device probing (RH bug 130849) * hald/linux/class_device.c (class_device_got_device_file): Cancel the device if don't get the device file * hald/linux/common.h: Increase timeout to 60 secs. Make note about we really need the SEQNUM support in udev * hald/linux/osspec.c: (process_coldplug_list_device_cancelled): New function (process_coldplug_list): Add support for cancelling (reenable_hotplug_proc_on_device_cancel): New function (hald_helper_hotplug): Add support for cancelling (hotplug_sem_up): Add some helpful debug (hotplug_sem_down): Add some helpful debug (hald_helper_data): Add some helpful debug * tools/Makefile.am: Also remove callout on uninstall * tools/fstab-sync.c: (fs_table_remove_volume): Only require device_file not complete Volume object (remove_udi): Don't require storage device to be present (fixes some problems when unplugging unpartitioned media as we don't get hotplug event and things are thus not serialised) * tools/linux/Makefile.am: Build and, optionally, install hal-hotplug-map callout * tools/linux/hal_hotplug_map.c: New program; a tad Red Hat specific wrt. file locations; patches are welcome. The single purpose of this callout is to detect gphoto2 supported cameras and libsane supported scanners using usermap files in /etc/hotplug. 2004-08-25 Kay Sievers * hald/linux/block_class_device.c: (set_volume_id_values), (get_first_valid_partition), (volume_set_size), (detect_media), (block_class_pre_process): Add "volume.is_part_of_raid" and pass the size of the volume down to volume_id to be able to look for a raid superblock at the end of the device. * hald/linux/volume_id/volume_id.c: (probe_linux_raid) : Add linux_raid detection with reading of the raid set uuid (probe_msdos_part_table): follow extended partiton while probing (vfat_search_label_in_dir), (probe_vfat): Support reding of labels stored in the directory of FAT32 and read the whole root directory instead of only the first cluster (probe_mac_partition_map): return UNUSED and PARTITIONTABLE types for know Apple partitions (volume_id_probe): Add raid detection, if volume_id is called with the size of the volume. 2004-08-23 David Zeuthen * hald/linux/block_class_device.c (detect_media): (block_class_pre_process): Set volume.is_filesystem to FALSE by default 2004-08-23 David Zeuthen * hald/linux/osspec.c (osspec_probe): Add info.udi to computer (process_shutdown_list_callouts_done_for_device): New function (process_shutdown_list): New function (shutdown_add_recursively_to_list): New function (osspec_shutdown): Completely rewrite the shutdown code * hald/haldaemon.in: Add 'sleep 3' when restarting the hal daemon to get a chance for the shutdown callouts to run 2004-08-23 David Zeuthen * tools/Makefile.am (install-data-local): Install the fstab-sync if applicable. * configure.in: Add the --enable-fstab-sync option to automatically install a 50-fstab-sync.hal symlink to fstab-sync. 2004-08-23 David Zeuthen * hald/hald.c (main): Setup a pipe and make parent wait until client writes to it. (osspec_probe_done): Write to the parent to make it exit 2004-08-23 David Zeuthen * hald/hald.c (main): Move daemonazation back to beginning (fixes fdo bug #1165) for now 2004-08-23 David Zeuthen * hald/linux/block_class_device.c (force_unmount): Don't clear the volume.* properties * hald/linux/osspec.c (rem_device): Call the removed method on the ClassDeviceHandler * tools/fstab-sync.c: (fs_table_add_volume): Only use fstype auto for optical and floppy drives; ignore the rest if fstype cannot be probled (fixes *some* issues with RAID partitions getting added to fstab) (volume_determine_mount_point): Complete rewrite; this was broken for ieee1394 drives. Also check if the directory is available in /media or whatever the root is (fs_table_remove_generated_entries): Also remove directory in /media. Fixed a bug where only every other line was removed. 2004-08-23 David Zeuthen * tools/fstab-sync.c (fs_table_has_volume): Properly resolve symlinks that aren't fully qualified 2004-08-23 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_msdos_part_table), (volume_id_probe): Patch from Sjoerd Simons to move msdos partition table probing to the end of the list. He found a ext3 with msdos signature on the first block. Also add a check if all partitions are empty, so we do not recognize it as a msdos partition table. 2004-08-22 David Zeuthen * hald/callout.c: Only invoke callouts if they have the .hal extension. Export HALD_VERBOSE if the hald instance is started with verbose. Add HALD_STARTUP resp. HALD_SHUTDOWN only if the callout is in response to hald starting up/shutting down. * hald/hald.c: Add an verbose option. Use the HALD_VERBOSE environment variable. Postpone daemonization until we are done probing. * hald/hald.h: Move hald_is_[verbose|initialising|is_shutting_down] here * hald/linux/bus_device.c: (bus_device_visit): We can now always assume we got a parent * hald/linux/class_device.c: (class_device_visit): We can now always assume we got a parent * hald/linux/common.h: * hald/linux/drive_id/drive_id.c: * hald/linux/osspec.c: Complete rewrite of probing code; now we construct a list of ''coldplug events'' and feed them to the two new functions add_device() and rem_device(); this unifies a few codepaths and it's much faster, cleaner and just yummier. Also ensure that callouts are run sequentially. * hald/logger.c: (logger_enable), (logger_disable): New functions (logger_emit): Print time and don't print function name * hald/logger.h: Add logger_[enable|disable]. * tools/fstab-sync.c: (open_temp_fstab_file): Use /tmp for the temporary file (fs_table_has_volume): Remove debug spew (add_udi): Log a message to the syslog on success (remove_udi): Log a message to the syslog on success (clean): Log a message to the syslog on success (main): Use HALD_VERBOSE. When invoked for the ''computer'' device object on hald startup, automatically clean the fstab (but only if using a managed keyword). Don't remove entries on hald shutdown. In line with the osspec.c changes (sequential callouts) we now get a fully sanitized /etc/fstab at hald startup, Yay! * tools/linux/hal_dev.c: (main): Less syslog spamming * tools/linux/hal_hotplug.c: (wait_for_sysfs_info): Less syslog spamming (main): Less syslog spamming 2004-08-20 Kay Sievers * hald/linux/volume_id/volume_id.c: (probe_reiserfs), (probe_swap): Export format_version for reiser and swap 2004-08-19 David Zeuthen * tools/fstab-sync.c: Lot's of changes: remove old locking code; fix security issue (remove dev,suid) with the given mount options (RH bug #130290); Use a, pretty lame perhaps, heuristic to add noatime,sync for hotpluggable volumes smaller than 1GB. Check device mentioned in /etc/fstab for symlink and if found, update the block.device property in HAL if applicable; Use macros for mount root and noop keyword (see configure.in changes). * hald/linux/block_class_device.c (volume_set_size): New function (detect_media): Call volume_set_size (block_class_pre_process): Call volume_set_size * doc/spec/hal-spec.xml.in: Add documentation for volume.block_size and volume.num_blocks. * configure.in: Add gobject>=2.2.2 to PKG_CHECK_MODULES. Patch from Steve Grubb . Added some configuration options for fstab-sync. 2004-08-19 Kay Sievers * hald/linux/block_class_device.c: Add volume.fsversion to the volume if avalable. Currently FAT12, FAT16, FAT32, and the NTFS version unmber is supported. * hald/linux/volume_id/volume_id.[ch]: bump to version 013 o remove msdos probe type (handled by vfat now) o introduce format_version to return the filesystem version if available. We can provide vfat(FAT32) or NTFS(3.1) now. o no longer trust the version string in the fat superblock, it's not correct to do this. The type of FAT is _only_ de- termined by the count of clusters. o vfat's "NO NAME" is a empty label now o support for FAT labels stored in the directory instead of the superblock (XP does this). volume_id ignores the label in the superblock if you have a label in the directory. 2004-08-17 David Zeuthen * tools/fstab-sync.c (volume_new): Use vfat instead of msdos * hald/linux/volume_id/volume_id.c (probe_msdos): Revert ugly hack 2004-08-17 David Zeuthen * configure.in: Patch from Tim Gerla . It looks like the configure script for hal doesn't properly handle --with-pid-file as an argument, because of the glitch illustrated by the patch I've attached. * hald/linux/volume_id/volume_id.c (probe_msdos): Introduce a hack where this is set to vfat instead. * hald/linux/hald_helper.h (HALD_HELPER_SOCKET_PATH): Don't use the local prefix, always use /var, cause otherwise it's difficult when developing on hal and using a local prefix (we want to use the installed hal.dev, hal.hotplug from a package) * hald/linux/volume_id/volume_id.[ch]: Patch from Kay Sievers . Long weekend with a few rain showers, so here is a update to volume_id :). We finally get the same uuid for a ntfs volume on Windows and with HAL. Also msdos extended partitons are handled now. 2004-08-16 David Zeuthen * configure.in: Bump to 0.2.97 2004-08-16 David Zeuthen * configure.in: Add the --enable-fstab-op to specify whether we want to use a keyword (currently kudzu) when adding entries to the fstab. Default is off * hald/linux/block_class_device.c: (block_class_visit): Only return the HalDevice if the parent exists (detect_media): Print out debug statement when we forcibly probe for media (block_class_pre_process): Detect the ide-cs driver by looking at the sysfs path (!) and set the media_check_enable to FALSE. Only do volume_id and drive_id probing if storage.media_check_enabled is TRUE. Sets the volume.fstype to 'vfat,msdos,auto' in this case. Fixes issues with the ide-cs driver (block_class_in_gdl): Add a comment about how we could defer the check for non-partitioned media via a timeout (deferred_check_for_non_partition_media): The function to check for media; not currently used (mtab_handle_storage): Use detect_media() to add the new child when a non-partition volume we didn't know about was mounted (mtab_handle_volume): Remove non partitioned media on drives that can't be polled when it's unmounted. * hald/linux/bus_device.c: (bus_device_visit): Only return the HalDevice if the parent exists * hald/linux/class_device.c: (class_device_visit): Only return the HalDevice if the parent exists (class_device_got_parent_device): Print out the sysfs path instead of the HAL UDI * hald/linux/ide_bus_device.c: (ide_device_accept): New function; currently the same as the super class but useful for testing * hald/linux/ide_host_bus_device.c: (ide_host_device_accept): Don't pickup toplevel ide_host objects cause they're not hotplugged anyway (thus no way to remove them) * tools/fstab-sync.c: (volume_new): Also check if the volume.fstype is empty 2004-08-15 David Zeuthen Sends messages from hotplug and device naming helpers via a local socket. Reorder the hotplug events we receive in hald according to SEQNUM and use a semaphor pattern to ensure that we don't process a hotplug event before the device created in effect to the previous event is completely processed (e.g. add/remove callouts have run). * hald/Makefile.am: Remove scsi_host_class_device.c and add scsi_bus_device.c, hald_helper.h. * hald/device_info.c: (handle_match): Comment out debug (scan_fdi_files): Comment out debug * hald/linux/block_class_device.c: (block_class_visit): Return the HalDevice* object (block_class_pre_process): Use 'scsi' instead of 'scsi_device' (block_class_compute_udi): -do- (mtab_handle_volume): Comment out debug (etc_mtab_process_all_block_devices): Comment out debug * hald/linux/bus_device.c: (bus_device_visit): Return the HalDevice* object * hald/linux/bus_device.h: Make the visit method return the HalDevice object for tracking purposes * hald/linux/class_device.c: (class_device_visit): Return the HalDevice* object (class_device_got_sysdevice): Comment out debug * hald/linux/class_device.h: Make the visit method return the HalDevice object for tracking purposes * hald/linux/common.c: (rename_and_merge): Comment out debug (class_device_get_device_file): Make debug statement more specific * hald/linux/net_class_device.c: (net_class_compute_udi): Comment out debug (net_class_udev_event): New function to ignore the udev event (duh) * hald/linux/osspec.c: Remove the ClassDeviceHandler scsi_device_ class_device in favour of the BusDeviceHandler scsi_bus_device (visit_class_device): Return the HalDevice* object (visit_device): Return the HalDevice* object (osspec_init): Listen for datagrams on a local socket from hal.dev and hal.hotplug (remove_device): Return the HalDevice* object (remove_class_device): Return the HalDevice* object (handle_hotplug): Removed (handle_device_event): Removed (osspec_filter_function): Is empty now. We got our information via a local socket now (reenable_hotplug_proc): New function (hald_helper_hotplug): New function (hald_helper_device_node): New function (hald_helper_hotplug_process_queue): New function (hotplug_sem_up): New function (hotplug_sem_down): New function (hald_helper_first_hotplug_event): New function (hald_helper_data): New function * hald/linux/hald_helper.h: New file * hald/linux/scsi_bus_device.c: New file * hald/linux/scsi_device_class_device.c: Removed * hald/linux/scsi_generic_class_device.c: (scsi_generic_get_device_file_target): New function. Merge the device file information to scsi.generic_device instead * tools/device-manager/Const.py.in: s/scsi_device/scsi/ * tools/linux/Makefile.am: Don't link with D-BUS * tools/linux/hal_dev.c: (get_sysfs_mnt_path): Removed (main): Send the message via a local socket instead * tools/linux/hal_hotplug.c: (main): Send the message via a local socket instead 2004-08-13 David Zeuthen * tools/fstab-sync.c: All debug statements now prints the pid (volume_determine_device_type): Aiih. Due to hal not removing all children devices before parent devices and the fact that we use properties on a parent device when removing a volume we end up with a problem. Thing is, we don't need this info when removing fstab entries so simple fix is to call hal_device_exists() for the UDI. (volume_new): Typo, volume.fs_type should be volume.fstype (add_udi): Print out debug when an entry was added (remove_udi): Print out debug when an entry was removed (clean): (main): Use flock(2) to lock the /etc/fstab file. Also bail out when there are no info.capabilities and we were invoked by hald. Store PID in the global variable pid. * doc/TODO: Added TODO about removing childs before their parent 2004-08-12 David Zeuthen * configure.in: Bump to 0.2.96 * doc/spec/hal-spec.xml.in: Include example-manager.py instead of examply-manager.py. Sigh. * doc/spec/example-manager.py: New file * doc/spec/examply-manager.py: Removed 2004-08-12 David Zeuthen * doc/spec/hal-spec.xml.in: Rewrite block.no_partitions spec. Add storage.[serial|firmware_version] which was forgotton. * hald/linux/block_class_device.c (detect_media): Set to value of storage.no_partitions_hint to honor the new spec when creating a volume for media with no partition tables. * tools/fstab-sync.c: Remove DeviceType datatype; document entries in Volume datatype. (udi_is_volume_or_nonpartition_drive): Renamed from udi_is_volume (compute_cdrom_name): New function (volume_determine_device_type): Rewrite (volume_new): Call udi_is_volume_or_nonpartition_drive. Always use "auto" as target filesystem if not known (fs_table_has_volume): Remove debug printfs (fs_table_add_volume): Use hal properties to determine mount flags (add_udi): Don't process volumes spawned from media w/o partitions (remove_udi): Don't process volumes spawned from media w/o partitions (main): Also handle capability 'storage' 2004-08-12 David Zeuthen * tools/fstab-sync.c (udi_is_volume): Simplify this a bit given that cap volume always implies cap block (main): Check the HAL_INFO_PROP_INFO_CAPABILITIES which is set when invoked from hald to exit if it's not a volume 2004-08-12 David Zeuthen * tools/fstab-sync.c: Set emacs mode to GNU, include mntent.h (volume_new): Add label field (volume_free): Destroy label field (fs_table_has_volume): Renamed from fs_table_has_block_device, handle LABEL= entries in fstab by looking at the volume and looking up /etc/mtab (fs_table_add_volume): Invoke fs_table_has_volume instead of fs_table_has_block_device 2004-08-11 David Zeuthen * doc/spec/hal-spec.xml.in: Add docs for block.have_scanned, volume.is_filesystem, Device Conditions on volume device objects (now with new names), 'unknown' value for volume.disc.type, 'platform' value for storage.bus, rename storage.automount_enabled to storage.automount_enabled_hint. Add property storage.no_partitions_hint * hald/hald.conf: * hald/hald_conf.[ch]: Rename storage.automount_enabled to storage.automount_enabled_hint and remove storage.cdrom_eject_check_enabled. * hald/linux/common.[ch]: Remove find_and_set_virtual_device() * hald/linux/platform_bus_device.c: (platform_device_pre_process): Set the correct properties for floppy drives * hald/property.c (hal_property_get_bool): Return FALSE instead of -1 if property not found. * hald/linux/block_class_device.c: (set_volume_id_values), (get_child_device_gdl), (get_child_device_tdl), (block_class_visit), (cdrom_get_properties), (force_unmount), (force_unmount_of_all_childs), (get_first_valid_partition), (detect_disc), (detect_media), (block_class_pre_process), (mtab_handle_storage), (mtab_handle_volume): Unified codepaths for handling optical discs and other removable storage. Handle media with no partition table much nicer * hald/linux/volume_id/volume_id.c: (set_label_string), (set_label_unicode16), (set_uuid), (get_buffer), (probe_msdos_part_table), (probe_ext), (probe_reiser), (probe_xfs), (probe_jfs), (probe_vfat), (probe_msdos), (probe_udf), (probe_iso9660), (probe_ufs), (probe_mac_partition_map), (probe_hfs_hfsplus), (probe_ntfs), (probe_swap), (volume_id_probe), (volume_id_close): * hald/linux/volume_id/volume_id.h: Add support for parsing partition tables from Kay Sievers . Change 'reiser' to 'reiserfs' because the that's the name on Linux. 2004-08-11 Ray Strode * tools/fstab-sync.c: don't require callout wrapper shell script. 2004-08-09 David Zeuthen * doc/spec/hal-spec.xml.in: Added some text about how storage_lun%d.* and storage.* properties are merged from the physical device object backing the block devices. Included .fdi example with 6in1 reader to further clarify this. * doc/spec/hal/hal-devices1.png: * doc/spec/hal/hal-fdi-example1.png: Updated to show full device tree now that info.virtual is gone. * doc/spec/hal/hal-fdi-example2.png: New file * doc/spec/hal/hal-fdi-example3.png: New file 2004-08-08 David Zeuthen * doc/TODO: Remove the TODO entry about support for multiple USB interfaces since this is now done * hald/linux/usbif_bus_device.c (compute_name_from_if): New function * hald/linux/usb_bus_device.c: Rename all usb.* properties to usb_device.* * hald/linux/usbif_bus_device.c: Rename all usbif.* properties to usb.*. Merge usb_device.* properties from parent device. Essentially an USB interface is now like an USB device was except that it exports properties usb.interface.* to describe the USB interface * tools/device-manager/Const.py.in: * tools/device-manager/Representation.py: Handle the s/usb/usb_device/ and s/usbif/usb/ renamings * doc/spec/hal-spec.xml.in: Apply a patch from Kay with spelling/ language/grammar improvements. Also update to reflect the USB renaming. * hald/linux/usbif_bus_device.c (usbif_device_pre_process): * hald/linux/scsi_host_class_device.c (scsi_host_class_pre_process): * hald/linux/scsi_device_class_device.c (scsi_device_class_pre_process): * hald/linux/macio_bus_device.c (macio_device_pre_process): * hald/linux/ieee1394_node_class_device.c (ieee1394_node_class_pre_process): * hald/linux/ieee1394_host_class_device.c (ieee1394_host_class_pre_process): * hald/linux/ide_host_bus_device.c (ide_host_device_pre_process): * hald/linux/ide_bus_device.c (ide_device_pre_process): * hald/linux/block_class_device.c (block_class_pre_process): Don't set the info.virtual property 2004-08-06 David Zeuthen * fdi/20freedesktop/canon-digital-ixus-v.fdi: Updated to match spec * fdi/20freedesktop/jetflash-mp3-player.fdi: Updated to match spec * doc/spec/hal-spec.xml.in: Work in progress * hald/linux/pcmcia_socket_class_device.c (pcmcia_socket_class_pre_process): Add property pcmcia_socket.number 2004-08-04 David Zeuthen * doc/spec/hal-spec.xml.in: Work in progress 2004-08-04 David Zeuthen Patch from Dan Williams * libhal/libhal.c (filter_func): fix small memory leaks when LibHalFunctions are missing 2004-08-04 David Zeuthen * doc/spec/hal-spec.xml.in: Work in progress 2004-08-03 David Zeuthen * doc/spec/hal-spec.xml.in: Work in progress 2004-08-03 David Zeuthen * doc/spec/examply-manager.py: New file * doc/spec/hal-spec.xml.in: Work in progress 2004-08-02 David Zeuthen * tools/device-manager/DeviceManager.py (DeviceManager.gdl_changed): Upgrade to latest D-BUS python API 2004-08-02 David Zeuthen * libhal/libhal.c (filter_func): Only return RESULT_HANDLED if we really handle the message. Otherwise return RESULT_NOT_YET_HANDLED. Bug identified by Dan Williams . 2004-08-02 David Zeuthen Patch from Dan Williams * hald/linux/ieee1394_class_device.c: * hald/linux/ieee1394_host_class_device.c: * hald/linux/ieee1394_node_class_device.c: Gets rid of warnings and potential bugs due to default function return type of 'int'. 2004-08-02 David Zeuthen * doc/spec/Makefile.am (FIGURE_FILES): Add hal-linux26.png * doc/spec/hal-spec.xml.in: Work-in-progress commit * doc/spec/hal-linux26.dia: * doc/spec/hal-linux26.png: New files 2004-08-02 David Zeuthen * doc/spec/Makefile.am (FIGURE_FILES): Remove hal-devices-virtual1.png * doc/spec/hal-spec.xml.in: Work-in-progress commit * doc/spec/hal-arch.dia: * doc/spec/hal-arch.png: * doc/spec/hal-devices1.png: Updated * doc/spec/hal-devices-virtual1.png: Removed 2004-08-02 David Zeuthen Patch from Kay Sievers * hald/linux/block_class_device.c: (detect_fs), (block_class_pre_process): * hald/linux/drive_id/drive_id.c: (drive_id_probe): * hald/linux/drive_id/drive_id.h: * hald/linux/volume_id/volume_id.c: (probe_ext), (probe_reiser), (probe_xfs), (probe_jfs), (probe_vfat), (probe_msdos), (probe_udf), (probe_iso9660), (probe_ufs), (probe_hfs_hfsplus), (probe_ntfs), (probe_swap), (volume_id_probe), (volume_id_open_node): * hald/linux/volume_id/volume_id.h: Attached is a trivial cleanup of the enum names, cause 'ALL' is not a very good name in a global namespace. I've prepended the libname to all names. 2004-08-01 David Zeuthen * hald/linux/block_class_device.c (block_class_compute_udi): If model and serial numbers are not available (for USB or IEEE1394 devices), use the UDI for storage.physical_device and append the SCSI LUN and prepend block_ to attain uniqueness. * hald/linux/scsi_device_class_device.c: (scsi_device_class_pre_process): Add capability 'scsi_device' * hald/linux/scsi_host_class_device.c: (scsi_host_class_pre_process): Add capability 'scsi_host' 2004-08-01 David Zeuthen Patch from Kay Sievers * hald/Makefile.am: * hald/linux/block_class_device.c: (block_class_pre_process), (block_class_compute_udi): * hald/linux/drive_id/drive_id.c: (dump), (set_str), (scsi_inq), (probe_scsi), (probe_ata), (drive_id_probe), (drive_id_open_fd), (drive_id_open_node), (drive_id_open_dev_t), (drive_id_close): * hald/linux/drive_id/drive_id.h: Here is the code, that reads the serial number of a drive, directly connected to an ATA or SCSI bus. HAL probes for the values and adds: storage.serial, storage.firmware_version, storage.revision if available. Note: This will only work on native interfaces. For devices behind USB, it's not possible to get any of these values. There are some bridges out there, which are capable to set the USB-values itself, to the values from a ATA Inquiry, but unfortunally, most of the bridges out there, don't do it. "USB storage compliance" mandates a unique serial number, but most of the vendors seems not to care about it. I changed the compute_udi for block devices. If we get a serial number or a uuid we use it to compute the udi. 2004-07-30 Joe Shaw Patch from Dan Williams * hald/linux/net_class_device.c (link_detection_handle_message): Fix a point arithmetic bug which caused link status changes to be missed. Also fixes a compiler warning. 2004-07-30 Joe Shaw * tools/device-manager/Representation.py (get_icon): Use get() rather than indexing for "info.property" so that we can fall back and not throw an exception if a device doesn't have it set (as virtual devices often don't). 2004-07-30 Joe Shaw * hald/hald.c (main): Update for the change to hald_dbus_init(): don't get a DBusConnection from there, exit() if it fails. Also update for the change to osspec_init(): don't pass in any arguments. * hald/hald_dbus.c (hald_dbus_init): Don't exit() anywhere here; instead return FALSE. Tell dbus not to exit if we're disconnected from the bus. Return TRUE on success, not a DBusConnection. (filter_function): Listen for the "Disconnected" signal on the "Local" dbus interface and if so, unref the connection and try to reconnect to the system bus every 3 seconds. (reinit_dbus): Try to reconnect to the system bus. * hald/osspec.h: Change osspec_init() to not take any parameters; the only backend (the Linux 2.6 one) wasn't using it. * hald/linux/osspec.c (osspec_init): Take void instead of a DBusConnection. 2004-07-30 Joe Shaw * hald/property.c (hal_property_new_string, hal_property_set_string): Validate incoming strings as UTF-8 and replace invalid sequences with '?' 2004-07-29 David Zeuthen Patch from Kay Sievers * hald/linux/volume_id/volume_id.c (probe_hfs_hfsplus): here we search for the first 'Apple_HFS' type partition. Please have a look with your multi-multi-multi-partition DVD :) 2004-07-29 David Zeuthen * hald/linux/volume_id/volume_id.c: Include to take advantage of AC_SYS_LARGEFILE 2004-07-29 David Zeuthen * libhal/libhal.[ch]: s/namespace/property_namespace/ to not break using libhal from C++. Pointed out by Simone Gotti 2004-07-29 David Zeuthen Patch from Kay Sievers * configure.in: * doc/spec/hal-spec.html: * doc/spec/hal-spec.xml.in: * hald/linux/block_class_device.c: * hald/linux/volume_id/volume_id.c: (get_buffer), (probe_hfs_hfsplus), (probe_ntfs), (volume_id_probe): * hald/linux/volume_id/volume_id.h: Here is support for recognition of hfs and hfsplus filesystems on a main block device, like a CD. Only the first partition is returned with the probe. 2004-07-27 David Zeuthen * hald/linux/block_class_device.c (detect_media): A mounted disc wasn't detected; this is now 'fixed'. Spotted by Sjoerd Simons. (is_mounted): New function to determine if a filesystem on a device file is mounted 2004-07-23 Joe Shaw * Makefile.am: Also dist HACKING. 2004-07-22 David Zeuthen * packaging/fedora/hal.spec (Version): Bump to 0.2.95 * configure.in: Bump to 0.2.95 2004-07-22 David Zeuthen * tools/linux/hal_hotplug.c (main): Apply the same hack we did to hal_dev.c some time ago; improves hotplugging speed; suggestion by Sjoerd Simons. * hald/linux/block_class_device.c (block_class_visit): Fixed a nasty bug where .udev.sysfs_path were set before other key properties. This resulted in lack of information in handle_udev_node_created_found_device that was invoked as soon as .udev.sysfs_path were set. Obviously this situation was only applicable when we got the DeviceEvent before the HotplugEvent. udev is indeed fast. * hald/linux/class_device.c (class_device_visit): -do- 2004-07-22 David Zeuthen Patch from Kay Sievers * tools/device-manager/hal-computer.png: New file * tools/device-manager/Representation.py: Use hal-computer.png * tools/device-manager/Makefile.am (dist_devicemanager_DATA): Add hal-computer.png 2004-07-22 David Zeuthen * libhal/libhal.[ch]: Fixup documentation so doxygen no longer complains 2004-07-22 David Zeuthen Documentation love, part 1. Added the spec to the source tree because we want closer sync between code and spec. Also generate doxygen docs, but only for libhal. * Makefile.am: No longer reference Doxyfile * configure.in: Add a new option --enable-docbook-docs * doc/Makefile.am: Add spec to SUBDIRS * doc/api/Doxyfile.in: New file * doc/api/Makefile.am: New file * Doxyfile: Removed * Doxyfile.in: Removed * doc/spec/Makefile.am: New file * doc/spec/hal-arch.dia: New file * doc/spec/hal-arch.png: New file * doc/spec/hal-devices-virtual1.png: New file * doc/spec/hal-devices1.png: New file * doc/spec/hal-fdi-example1.png: New file * doc/spec/hal-sequence-diagram.dia: New file * doc/spec/hal-sequence-diagram.png: New file * doc/spec/hal-spec.html: New file * doc/spec/hal-spec.xml.in: New file * doc/spec/hal-volume-to-device.png: New file 2004-07-21 Joe Shaw * hald/linux/bus_device.c (bus_device_move_from_tdl_to_gdl): If the info.parent property is not set, then set it to the computer device's UDI. * hald/linux/class_device.c (class_device_move_from_tdl_to_gdl): Ditto. * hald/linux/common.c (device_move_from_tdl_to_gdl): Remove this, it's dead code. * hald/linux/osspec.c (osspec_probe): Rename "fakeroot" to "root", rename its product from "City of Lost Devices" to "Computer", change its UDI to "computer" from "fakeroot", and make it non-virtual. * hald/linux/platform_bus_device.c (platform_device_pre_process): Change "fakeroot" to "computer". 2004-07-21 Joe Shaw * tools/fstab-sync.c: #include "libhal/libhal.h" to fix the build for me. 2004-07-21 David Zeuthen Commit of first stab at callouts for shutdown; needs some more work. Now to update the spec * hald/device_info.c: (scan_fdi_files): Remove some noisy debug * hald/hald.c: (handle_sigterm): New function (sigterm_iochn_data): New function (main): Handle SIGTERM, setup GIOChannel for safe handling of POSIX signal * hald/linux/block_class_device.c: (detect_media): Comment out noisy EBUSY debug * hald/linux/osspec.c: (visit_class_device): Removed unused dir variable (shutdown_callouts_finished): New function (do_shutdown_callouts): New function (osspec_shutdown): New function * hald/osspec.h: Add prototype for osspec_shutdown() 2004-07-21 David Zeuthen * doc/TODO: changed key="udi:/" to 'udi="" key="Y"' after suggestion by David Malcolm 2004-07-21 David Zeuthen * doc/TODO: Added the TODO 'Rescan() method on HalDevice'. Added the TODO 'Privilege Management'. Put some more info on 'Locking of devices' and 'Power Management', namely that HAL export generic methods on HalDevice. 2004-07-21 David Zeuthen * doc/TODO: Removed 'CD burning' TODO, since this is now fixed. Added entry on .fdi files. Add entry on handling SIGTERM in a nice way. 2004-07-20 David Zeuthen * hald/linux/block_class_device.c: (detect_media): use O_EXCL for optical drive media detection, much safer since O_EXCL is actually in mainline. Removes possible burning problems (that is, if only cdrecord open(2)'s the device using O_EXCL; bug filed against fedora-devel, hopefully it will bubble upstream) 2004-07-20 David Zeuthen * hald/linux/class_device.c: (class_device_accept), (class_device_visit): * hald/linux/common.c: (drivers_collect): * hald/linux/ieee1394_class_device.c: (ieee1394_class_pre_process): * hald/linux/ieee1394_host_class_device.c: (ieee1394_host_class_pre_process): * hald/linux/ieee1394_node_class_device.c: (ieee1394_node_class_pre_process): * hald/linux/osspec.c: (visit_class_device): * hald/linux/volume_id/volume_id.c: More updates to libsysfs 1.1; from Joe Shaw's earlier patch 2004-07-18 David Zeuthen * doc/TODO: Added a few items, 'UTF8 support' and 'Dependencies, Robustness' 2004-07-18 David Zeuthen * doc/TODO: updated; changed the http://freedesktop.org/Software/HalTODO page on fd.o Wiki to point to doc/TODO on HEAD. 2004-07-18 David Zeuthen Patch from Kay Sievers * hald/linux/libsysfs/*.[ch]: (visit_device), (osspec_probe): Update to libsysfs 1.1 * hald/linux/bus_device.c: (bus_device_got_parent): * hald/linux/class_device.c: (class_device_final): * hald/linux/osspec.c: (visit_class_device), (visit_class), Adjust to use libsysfs 1.1 2004-07-15 David Zeuthen * configure.in: Bump version to 0.2.94 * packaging/fedora/hal.spec (Version): Bump to 0.2.94 2004-07-15 David Zeuthen Patch from Sjoerd Simons * hald/linux/block_class_device.c (block_class_pre_process): It seems there was some code missing for the detection of the physical device for scsi devices. Attached patch fixes this. Causing the new gnome-vfs patch to work properly on my workstation :) 2004-07-15 David Zeuthen Patch from Ray Strode * tools/Makefile.am: Add rules for building fstab-sync * tools/fstab-sync.c: New file 2004-07-14 David Zeuthen Patch from Sjoerd Simons * tools/device-manager/DeviceManager.py: * tools/device-manager/LibGladeApplication.py: * tools/device-manager/hal-device-manager: Attached patch makes hal-device-manager shows the error about hald not running in a gtk messagedialog instead of on the console. Which ensures that when running it from the menu you see more then just a flash if hald isn't running :) Also it changes some deprecated functions to use their non-deprecated counterparts 2004-07-11 David Zeuthen * tools/hal_get_property.c, tools/hal_set_property.c: Make the command line interface a bit nicer. Patch from Martin Waitz 2004-07-10 David Zeuthen Patch from Kay Sievers . * hald/linux/volume_id/volume_id.[ch]: Update to discover hfs wrapped hfs+ partitions, mac_partition_maps and udf 2004-07-08 David Zeuthen * hald/linux/platform_bus_device.c (platform_device_pre_process): Introduce the x86 legacy floppy into THE CITY OF LOST DEVICES both info.parent- and storage.device-wise 2004-07-08 David Zeuthen Some more fixes caught by extensive testing * hald/linux/block_class_device.c (mtab_handle_storage): Consolidate three if statements into one. Also search TDL for child. Don't remove child if called second time. (mtab_handle_volume): Don't check volumes added by mtab_handle_storage e.g. volumes we detect on mount only 2004-07-07 David Zeuthen * hald/linux/block_class_device.c (detect_media, mtab_handle_storage): Use class_device_move_from_tdl_to_gdl() instead of device_move_from_ tdl_to_gdl() so we get the in_gdl callback when callouts complete that will detect media and process the mtab to update mount status * hald/linux/class_device.h: Add class_device_move_from_tdl_to_gdl() prototype * hald/linux/class_device.c (class_device_move_from_tdl_to_gdl): Promote to project wide scope 2004-07-06 David Zeuthen * hald/linux/block_class_device.c (detect_media): Fix media detection that was broken when introducing support for floppy drives twelwe days ago :-/ 2004-07-06 David Zeuthen * hald/linux/volume_id/volume_id.c: Remove #define DEBUG 2004-07-06 David Zeuthen * hald/linux/bus_device.c (bus_device_move_from_tdl_to_gdl): Removed the wrong handler so on remove this was called and the device was added to the GDL again. Resulting in the device was never removed. * hald/linux/class_device.c (class_device_move_from_tdl_to_gdl): Same as above 2004-07-06 David Zeuthen * hald/linux/block_class_device.c (block_class_pre_process): Disable media_check+automount and set block.no_partitions to TRUE for floppy drives - Now my LS120 drive in my Dell laptop works fine with HAL. 2004-07-06 David Zeuthen * packaging/fedora/hal.spec (Version): Bump to 0.2.93 * configure.in: Bump to 0.2.93 2004-07-06 David Zeuthen Patch from Kay Sievers . Better msdos detection for floppy disks 2004-07-05 David Zeuthen * hald/linux/volume_id/volume_id.c (volume_id_probe): Comment out get_buffer, it's quite time consuming on floppies and Kay says OK. Move probe_vfat() and probe_msdos() to the top. 2004-07-05 David Zeuthen Patch from Kay Sievers . Add hfs support 2004-07-05 David Zeuthen * hald/linux/input_class_device.c (input_class_accept): Make this static (remove warning) * hald/linux/osspec.c (osspec_init): Remove error variable (remove warning) (visit_bus): Comment out this function because it is not currently used (remove warning) * hald/linux/block_class_device.c (block_class_in_gdl): New function (block_class_pre_process): Move check for media and mtab to the new block_class_in_gdl method 2004-07-05 David Zeuthen * hald/linux/ieee1394_host_class_device.c: Add class_device_in_gdl method * hald/linux/ieee1394_node_class_device.c: Add class_device_in_gdl method * hald/linux/ieee1394_class_device.c: Add class_device_in_gdl method * hald/linux/pcmcia_socket_class_device.c: Add class_device_in_gdl method * hald/linux/block_class_device.c: Add class_device_in_gdl method * hald/linux/scsi_device_class_device.c: Add class_device_in_gdl method * hald/linux/scsi_host_class_device.c: Add class_device_in_gdl method * hald/linux/scsi_generic_class_device.c: Add class_device_in_gdl method * hald/linux/printer_class_device.c: Add class_device_in_gdl method * hald/linux/net_class_device.c: Add class_device_in_gdl method * hald/linux/input_class_device.c: Add class_device_in_gdl method * hald/linux/class_device.c (class_device_in_gdl): New function (class_device_move_from_tdl_to_gdl): New function, specialised version of device_move_from_tdl_to_gdl that calls in_gdl method (class_device_final): Call class_device_move_from_tdl_to_gdl instead and create a ClassAsyncData variable to carry data around * hald/linux/class_device.h: Add in_gdl method to ClassDeviceHandler and prototype for default method class_device_in_gdl (). * hald/linux/pci_bus_device.c: Add bus_device_in_gdl method * hald/linux/usb_bus_device.c: Add bus_device_in_gdl method * hald/linux/usbif_bus_device.c: Add bus_device_in_gdl method * hald/linux/ide_host_bus_device.c: Add bus_device_in_gdl method * hald/linux/ide_bus_device.c: Add bus_device_in_gdl method * hald/linux/macio_bus_device.c: Add bus_device_in_gdl method * hald/linux/platform_bus_device.c: Add bus_device_in_gdl method * hald/linux/bus_device.c (bus_device_in_gdl): New function (bus_device_move_from_tdl_to_gdl): New function, specialised version of device_move_from_tdl_to_gdl that calls in_gdl method (bus_device_got_parent): Call bus_device_move_from_tdl_to_gdl instead and carry on the BusAsyncData bad variable; conditionally free it on failure though. * hald/linux/bus_device.h: Add in_gdl method to BusDeviceHandler and prototype for default method bus_device_in_gdl (). 2004-07-05 David Zeuthen * tools/linux/hal_dev.c (main): Disable logging. Also fork(2) a new process and make parent exit to temporarily fix that udevstart takes a few minutes to run 2004-07-04 David Zeuthen * tools/linux/hal_hotplug.c: 'product' file is also not guaranteed to exist for USB devices 2004-07-04 David Zeuthen * tools/linux/hal_hotplug.c: Don't wait for 'manufacturer' file for USB devices since it's not guaranteed to exist. Observed by Eric Butler 2004-07-04 David Zeuthen * hald/device_info.c (scan_fdi_files): Use glib to determine the file type since d_type in struct dirent can be DT_UNKNOWN Observed by Eric Butler 2004-07-04 David Zeuthen * hald/linux/net_class_device.c (set_device_link_status): (net_class_pre_process): Don't check for link on wireless devices 2004-06-28 Joe Shaw * linux/volume_id/volume_id.c (set_label_unicode16): Change condition to not wrap around on very short (or empty) labels. 2004-06-26 David Zeuthen * fdi/20freedesktop/Makefile.am (dist_fdi20freedesktop_DATA): Install jetflash-mp3-player.fdi * fdi/20freedesktop/jetflash-mp3-player.fdi: New file 2004-06-24 David Zeuthen Add floppy support to HAL - tested with x86 legacy floppies and an USB floppy drive. * tools/device-manager/Const.py.in (BUS_NAMES): Add platform bus * hald/linux/common.h: Add read_single_line_grep prototype * hald/linux/common.c (read_single_line_grep): New function * hald/linux/block_class_device.c (detect_media): Add the force_poll parameter to poll on devices with media detection explicitly disabled. Introduce support for non-optical drives with block.no_partitions set to TRUE. Remember to clear linux.* properties for discs and volumes from block.no_partitions as hot unplugging such drives will cause the top-level block device to stay as the child is found instead when searching on linux.sysfs_path (block_class_pre_process): Introduce a nasty hack to read /proc/scsi/usb-storage/ to determine if we're a floppy drive and thus should set block.no_partitions to TRUE (foreach_block_device): Rename to mtab_foreach_device, split into mtab_handle_volume and mtab_handle_storage (mtab_handle_volume): New function, handle normal partition based volumes in /etc/mtab (mtab_handle_storage): New function, handle block.no_partitions volumes in /etc/mtab (block_class_removed): Make sure to remove the HAL-made child if block.no_partitions is TRUE * hald/linux/block_class_device.c (disc_remove_from_gdl): Rename to volume_remove_from_gdl * hald/linux/platform_bus_device.c: New file * hald/Makefile.am (hald_SOURCES): Add platform_bus_device.c 2004-06-23 David Zeuthen Patch from Kay Sievers * libhal/libhal.c (filter_func): Use DBUS_HANDLER_RESULT_HANDLED instead of NOT_YET_HANDLED * hald/hald.dbus.c: Use DBUS_HANDLER_RESULT_HANDLED instead of NOT_YET_HANDLED * hald/linux/osspec.c: Use DBUS_HANDLER_RESULT_HANDLED instead of NOT_YET_HANDLED 2004-06-23 Joe Shaw Patch from Sjoerd Simons * hald/pstore.c: #define HOST_NAME_MAX to 256 if it's undefined as per the gethostname manpage. 2004-06-20 David Zeuthen Patch from Kay Sievers * hald/linux/volume_id/volume_id.c (get_buffer): s/lseek/lseek64/ 2004-06-20 David Zeuthen * hald/linux/block_class_device.c (foreach_block_device): Don't clear volume.mount_point when learning that the device is unmounted. Seen by Kay Sievers 2004-06-20 David Zeuthen Patch from Kay Sievers * hald/linux/volume_id/volume_id.[ch] : Extract volume label from NTFS disks 2004-06-20 David Zeuthen Patch from Kay Sievers * hald/linux/osspec.c (osspec_init): Remove support for listening to udev as this is now handled by the HAL dev.d callout. 2004-06-20 David Zeuthen * hald/Makefile.am (install-data-local): Create $(LOCALSTATEDIR)/lib/hal * hald/linux/common.c (rename_and_merge): Check persistent_device_list configuration value * hald/device.c (hal_device_property_set_attribute) (hal_device_property_set_string, hal_device_property_set_bool) (hal_device_property_set_double, hal_device_property_remove): Check persistent_device_list configuration value * hald/hald.c (main): Check persistent_device_list configuration value * hald/hald.conf: Add persistent_device_list tag, set to false as default * hald/hald_conf.h: Add persistent_device_list member * hald/hald_conf.c (hald_conf): Add persistent_device_list member (end): Check for persistent_device_list tag * hald/property.h: Rename property_attribute to PropertyAttribute 2004-06-20 David Zeuthen Patch from Kay Sievers * hald/pstore.[ch]: New files * hald/linux/common.c (rename_and_merge): Load a device from disk * hald/property.h: Add property_attribute enum and hal_property_get_attribute(), hal_property_set_attribute() * hald/property.c: Add readonly, persistence, callout bools to HalProperty (hal_property_set_attribute): New function (hal_property_get_attribute): New function * hald/hald_dbus.c (device_set_property): Set property to persistent * hald/hald.h: Add hald_get_pstore_sys * hald/hald.c (hald_get_pstore_sys): New function (main): Load persistent store * hald/device.h: Add hal_device_property_set_attribute() * hald/device.c (hal_device_property_set_string): (hal_device_property_set_int, hal_device_property_set_bool) (hal_device_property_set_double): Save property to disk if the PERSISTENCE attribute is set (hal_device_property_remove): Delete property from disk if the PERSISTENCE attribyte is set (hal_device_property_set_attribute): New function * hald/Makefile.am (INCLUDES): Add PACKAGE_LOCALSTATEDIR (hald_SOURCES): add pstore.[ch] 2004-06-11 Joe Shaw Patch from Dan Williams (dcbw@redhat.com). * hald/linux/net_class_device.c (link_detection_init): Make netlink_fd static and only set up a watch on it once, since we get notifications for all interfaces through this one socket. (link_detection_handle_message): Get the link status and interface, and iterate over all the devices. (set_device_link_status): New function. First checks for "net.interface" and if it matches the interface passed in, set the link status property. 2004-06-09 Joe Shaw * hald/linux/block_class_device.c (detect_media): Set info.product to volume.label if it's set. (block_class_pre_process): Set info.product to volume.label if it's set, otherwise try to append the fstype to "Volume". 2004-06-09 Joe Shaw Fix some refcounting issues * hald/linux/block_class_device.c: Unref the device after we add it to the TDL. (disc_add_to_gdl): Removed; it's functionally equivalent to device_move_from_tdl_to_gdl() in common.c. (disc_remove_from_gdl): Disconnect the signal handlers before removing from the TDL (and thus finalizing). (detect_media): Unref the child after adding it to the TDL. Replace signal handler for "callouts_finished". * hald/linux/bus_device.c (bus_device_visit): Unref device after adding it to the TDL. (bus_device_got_parent): Don't unref after removing from the TDL. * hald/linux/class_device.c (class_device_visit): Unref device after adding it to TDL. (class_device_got_parent_device, class_device_got_sysdevice, class_device_got_device_file, class_device_final): Don't unref after removing from the TDL. * hald/linux/osspec.c (osspec_probe): Unref the fakeroot device after adding it to GDL. 2004-06-07 Joe Shaw * doc/TODO: Add an item about capability matching in FDI files. * fdi/20freedesktop/Makefile.am: Add lucent-pcmcia-wireless.fdi * fdi/20freedesktop/lucent-pcmcia-wireless.fdi: Added. Matches Lucent WaveLAN cards and sets info.bus to pcmcia and a sane vendor and product. * tools/device-manager/Const.py.in: Add PCMCIA as a bus type. 2004-06-07 Joe Shaw * configure.in: Remove the iwlib dependency. * hald/linux/net_class_device.c: Remove the wireless properties. This stuff is better suited to a library like iwlib (net_class_pre_process): But still check for the existence of the "wireless" directory and set the net.ethernet.80211 capability if it's there. * hald/hald_conf.c: Remove deprecated use of a label at the end of a function and just return instead of goto'ing there. 2004-06-07 David Zeuthen * configure.in: Bump to 0.2.92 * packaging/fedora/hal.spec: Install the symlink in /etc/dev.d/default/hal.dev. Patch from Kristian Høgsberg . Bump version to 0.2.92 2004-06-06 David Zeuthen * hald/linux/block_class_device.c (block_class_visit): Add the block.no_partitions boolean property and set it to FALSE by default. If this is TRUE it means that media for this toplevel block device will appear as children but there can be at maximum one child and the block.device will be the same. This applies to floppy and cdrom media. This property have been introduced such that a callout can update the fstab in advance of media insertion on e.g. floppy drives and optical drives. (block_class_pre_process): Set block.no_partitions to TRUE for optical drives. * tools/callouts/fstab-update.sh: When block.no_partitions is TRUE create entry only for top-level block device. 2004-06-05 David Zeuthen * packaging/fedora/hal.spec: Add hald.conf to %files. Patch from Kristian Høgsberg * ChangeLog: Fixup the danish character ø in Kristians last name since we want to use ISO-8859-1 in ChangeLog :-) 2004-06-04 Joe Shaw Patch from Kristian Høgsberg * hald/linux/input_class_device.c (input_class_accept): New function. Accepts devices with no sysdevice but which begin with "event". For built-in, non-sysfs input devices like PS/2 mice. (input_class_pre_process): Set the major and minor numbers as properties. If there is no sysdevice, do an ioctl() on the device to try to get identifying info about it and set it in info.product. (input_class_compute_udi): Added. Computes the UDI for devices that don't get merged onto parents. (input_class_handler): Use input-specific functions for the accept and compute_udi functions. 2004-06-03 Joe Shaw * hald/linux/printer_class_device.c (printer_class_device_accept): Reject class devices that have no sysdevice. 2004-06-01 David Zeuthen * hald/hald.conf: New file, policy for hal daemon * hald/Makefile.am: Install hald.conf into $sysconfdir/hal * hald/hald_conf.c (hald_read_conf_file): New function (cdata): New function (end): New function (start): New function (parsing_abort): New function * hald/hald.c (main): Call hald_read_conf_file to read the configuration file * hald/hald_conf.h (hald_read_conf_file): Added hald_read_conf_file prototype * hald/linux/block_class_device.c (block_class_pre_process): add storage.cdrom capability if device is a cdrom 2004-06-01 David Zeuthen * hald/hald_conf.[ch]: New files, vendor and user specific configuration of the HAL daemon * hald/Makefile.am (hald_SOURCES): Add hald_conf.[ch] * hald/linux/block_class_device.c (block_class_pre_process): Set storage.media_check_enabled and storage.automount_enabled to default value from HaldConf. Forgot to set volume.is_mounted to FALSE when building the device. NOTE: when media_check_enabled is set to FALSE use touch /dev/sda (or whatever) to force a poll for media. So, now to write a /etc/hal/hald.conf configuration file parser :-) (cdrom_check): Set storage.cdrom.eject_check_enabled to default value from HaldConf (detect_media): Disable continous printing of error when no medium is in storage device. Respect the storage.media_check_enabled and storage.cdrom.eject_check_enabled properties * hald/hald.c (main): Remove opt_run_as 2004-05-31 David Zeuthen * AUTHORS: Added Joe Shaw * hald/linux/block_class_device.c (detect_media): Add code for checking whether the eject button is pressed on an optical drive. If detected the condition 'EjectPressed' is emitted on the disc HalDevice with a single string representing the device file. Also remove BAR and FOO debug statements from earlier development sessions. Yay. 2004-05-28 Joe Shaw * hald/linux/net_class_device.c (rehash_wireless): Forgot to change a couple of references of "net.ethernet.80211" to "net.ethernet.is_80211", so properties wouldn't get updated. 2004-05-27 David Zeuthen * hald/linux/volume_id/volume_id.c (volume_id_open_node): While debugging the file descriptor leak that stops cdroms being ejected, I noticed a theoretical file descriptor when the box runs out of memory. Patch from Crispin Flowerday * hald/linux/block_class_device.c (block_class_accept): Added this since 2nd level block devices, e.g. sda1, doesn't have sysdevices and the generic class_device_accept was changed to required this. 2004-05-26 Joe Shaw * hald/linux/net_class_device.c (parse_scanning_token): We're likely to get multiple SIOCGIWFREQ tokens. If it's lower than 1000, then it's the channel and not the frequency. Ugh. 2004-05-26 Joe Shaw * configure.in: Add --enable-iwlib, and check for it so we can build the wireless functionality. * hald/linux/net_class_device.c: Add wireless network support. Adds a bunch of properties for the current state of things, as well as scanning for networks. (open_wireless_sysfs_subdir): Open the sysfs "wireless" path and read in a bunch of properties. (get_wireless_properties): Use the iwlib API to extract a bunch of additional properties, like the protocol, frequency, crypto key, ESSID, mode (ad-hoc, managed, etc), access point mac address. Also start scanning for other available access points. (read_scanning_results, parse_scanning_token, aps_to_properties): helper functions to read in the scanning data and expose as properties the list of networks (not access points!) available. (net_class_pre_process): Call get_wireless_properties(). (net_class_tick): Added. Gets wireless properties every 5 ticks. (net_class_handler): Call net_class_tick() instead of class_device_tick(). 2004-05-25 Joe Shaw * hald/Makefile.am: Add the ieee1394 class devices. * hald/linux/block_class_device.c: Replace use of locally defined AsyncInfo with ClassAsyncData. * hald/linux/bus_device.c: Replace use of locally defined AsyncInfo with BusAsyncData. * hald/linux/class_device.c: Replace use of locally defined AsyncInfo with ClassAsyncData. (class_device_accept): Check here if the class device has a sysdevice and reject it if it doesn't. (class_device_visit): Don't check for it here. If it is NULL, set merge_or_add to FALSE so that we don't try to merge it onto a fake device. If the sysdevice is NULL, set the parent sysfs path to "(none)", which will match our fake parent device. (class_device_final): Take a third argument for merge_or_add and check it instead of the ClassDeviceHandler's default behavior. * hald/linux/ieee1394_class_device.c, hald/linux/ieee1394_host_class_device.c, hald/linux/ieee1394_node_class_device.c: New IEEE1394 class device implementation. Seems to even work somewhat on some small subset of the world's computers. * hald/linux/net_class_device.c (net_class_pre_process): If there is an address, set the net.address property to it, regardless of what type of net device it is. (net_class_accept): Added. Allows us to have net class devices without an associated sysdevice. Only allow it if it's an ethernet device for now. (net_class_compute_udi): Added. Needed in situations where the class device has no sysdevice, we need to generate a UDI since we aren't merging onto a parent device. * hald/linux/osspec.c: Reenable the ieee1394 class device handlers. (osspec_probe): Create a fake root device to be the parent for all of our sysdevice-less devices. It's a virtual device, has the UDI "/org/freedesktop/Hal/devices/fakeroot", and the sysfs path device of "(none)". * tools/device-manager/Const.py.in (BUS_NAMES): Add "unknown" to the list of known bus names. 2004-05-25 David Zeuthen * configure.in: Bump to 0.2.91 * packaging/fedora/hal.spec: Bump to 0.2.91 2004-05-25 David Zeuthen * hald/linux/block_class_device.c (read_etc_mtab): hal doesn't close the filedescriptor when it /etc/mtab wasn't changed of the fstat failed. Also when closing a file stream opened with fdopen, the original fd is also closed (the fdopen function doesn't dup the fd). So the close after fclose is wrong. Patch from Sjoerd Simons . (detect_fs): When fs detection fails the volume_id struct wasn't closed, causing a mem and fd leak. And as a side effect, causing me to be unable to open my cd writer with the eject button when there was a blank cd inside :). Patch from Sjoerd Simons . 2004-05-18 Joe Shaw * tools/callouts/fstab-update.sh: Use /media as long as it's there and /mnt doesn't exist. Otherwise fallback to /mnt. Should happily work on all distros. Patch from Sjoerd Simons . 2004-05-17 Joe Shaw * tools/callouts/fstab-update.sh: Guard against the script being killed mid-execution by doing all the updates in a copy and then moving it over later on add. Patch from Martin Waitz . 2004-05-15 Owen Fraser-Green * packaging/fedora/hal.spec: bump version to 0.2.90, D-BUS version bump, PreReq change to include useradd and include hal.dev. Also changed ${foo} variables to %{foo}. 2004-05-13 David Zeuthen * hald/linux/block_class_device.c (detect_media): Move disc properties into volume.disc.* namespace and only set them for optical discs. Use disc_is_appendable() to set volume.disc.is_appendable. Specifically, the following properties are now available for discs (e.g. iff volume.is_disc is TRUE) volume.disc.has_audio - TRUE iff the disc got audio tracks volume.disc.has_data - TRUE iff the disc got data tracks volume.disc.is_appendable - TRUE iff further data can be written volume.disc.is_blank - TRUE iff the data is blank volume.disc.is_rewriteable - TRUE iff the disc can be reformatted volume.disc.type - type of disc, can assume "cd_rom", "cd_r", "cd_rw", "dvd_rom", dvd_r", "dvd_rw", "dvd_ram", "dvd_plus_r", "dvd_plus_rw" (block_class_pre_process): Don't set volume.disc_type, but set the boolean property volume.is_disc. * hald/linux/linux_dvd_rw_utils.c (disc_is_appendable): new function 2004-05-09 David Zeuthen * hald/linux/linux_dvd_rw_utils.h: s/get_dvd_media_type/get_disc_type/ * hald/linux/linux_dvd_rw_utils.c (get_dvd_media_type): s/get_dvd_media_type/get_disc_type/ 2004-05-13 Joe Shaw * hald/linux/block_class_device.c (detect_media): Connect to the "callouts_finished" signal and call the callouts rather than removing the volume from the GDL here. Patch from Sjoerd Simons * hald/linux/net_class_device.c (mdio_read): Make the result an out parameter and return 0 on success and -1 on failure. (mii_get_rate): Check the result of mdio_read(). Put the check for whether it's 10mbit in an else-if. (mii_get_link): Check the result of mdio_read(). Based on a patch from Sjoerd Simons 2004-05-08 Joe Shaw * tools/callouts/fstab-update.sh: Improve the locking loop. 2004-05-07 Joe Shaw * NEWS: Update the udev requirements. Patch rom Kay Sievers * doc/TODO: Add an item about clean daemon shutdown. * tools/callouts/fstab-update.sh: Add locking on the fstab so things don't race for it. Timeout after 10 seconds. Also be overly cautious about when we remove the block device from the fstab and check to make sure that the resulting fstab exists and is larger than 0 bytes in size. 2004-05-05 David Zeuthen * hald/linux/linux_dvd_rw_utils.c (get_dvd_media_type): new function * hald/linux/block_class_device.c: rename some properties and ensure that all properties for a namespace is always available with default values - it's easiest to look at the diff to see what's changed; one highlight is the introduction of the volume.* namespace. (detect_media): use new utility in linux_dvd_rw_utils.c to get the disc type for DVD's. * tools/callouts/fstab-update.sh: property names changed * fdi/20freedesktop/lexar-media-cf-reader.fdi: propertys name changed * fdi/20freedesktop/6in1-card-reader.fdi: property names changed 2004-05-05 Kay Sievers * hald/linux/volume_id/volume_id.c (probe_udf): fix for big-endian 2004-05-04 David Zeuthen * hald/linux/volume_id/volume_id.c (probe_jfs): test for js == NULL * hald/linux/block_class_device.c (detect_media): call detect_fs when adding a disc. Also route the child through the TDL and test the TDL so we don't add more than one child now that we've got a delay thanks to callouts. (add_to_gdl): rename to disc_add_to_gdl, since we use it only for optical discs 2004-05-04 Kay Sievers * hald/linux/volume_id/volume_id.[ch] : support reading of iso9660 and udf labels 2004-05-04 David Zeuthen * libhal/libhal.c (hal_ctx_set_user_data): new function (hal_ctx_get_user_data): new function 2004-05-01 Owen Fraser-Green * hald/hald_dbus.c (manager_find_device_string_match): Set info.value 2004-05-01 David Zeuthen * libhal/libhal.h: fix that the extern "C" linkage stuff was accidently commented out 2004-05-01 David Zeuthen * hald/callout.c (iochn_data): remember to remove element from active_callouts list * hald/linux/class_device.c (class_device_detection_done): remove 2004-05-01 David Zeuthen * hald/Makefile.am (install-data-local): create /etc/hal/property.d * tools/callouts/fstab-update.sh: s/msdos/vfat/ if applicable * hald/logger.h: include stdio.h, stdlib.h since DIE macro uses this * doc/TODO: removed a TODO-note :-) * hald/callout.c (wait_for_callout): removed (handle_sigchld): new function (iochn_data): new function (process_callouts): install signal handler and setup GIOChannel stuff; don't install timeout for waiting for child * hald/linux/class_device.c (class_device_detection_done): removed * hald/linux/bus_device.c (bus_device_detection_done): removed 2004-04-30 Joe Shaw * hald/linux/block_class_device.c (block_class_pre_process): Process the mtab here, so that our fstype and mount_point properties are set. * hald/linux/bus_device.h, hald/linux/class_device.h: Remove the detection_done function. It's not really useful with all the asynchronicity. * hald/linux/*_bus_device.c, hald/linux/*_class_device.c: Remove the detection_done functions. * hald/hald_dbus.c (foreach_device_by_capability): Make sure caps is not NULL before comparing strings. 2004-04-30 David Zeuthen * doc/TODO: update TODO note about fs detection 2004-04-30 Kay Sievers * hald/Makefile.am (hald_SOURCES): add volume_id/volume_id.[ch] * hald/linux/block_class_device.c (detect_fs): use utility in new subdirectory volume_id * hald/linux/volume_id/volume_id.[ch]: new files 2004-04-27 Joe Shaw * doc/TODO: Remove a now completed TODO item. * hald/hald.c (gdl_store_changed): Don't call hal_callout_device() in the removed case. * hald/linux/osspec.c (remove_callouts_finished): Actually remove the device from the GDL in this callback. (remove_device, remove_class_device): Connect to the callouts_finished signal and call device callouts instead of removing it from the GDL here. 2004-04-26 Joe Shaw * hald/callout.c (hal_callout_device): We still need to emit the callouts_finished signal even if we have no callouts. Whoops. * hald/bus_device.c (bus_device_got_parent): We don't need to ref the device being added, since it's no longer unconditionally being unreffed immediately afterward. * hald/class_device.c (class_device_final): Ditto. * hald/common.c (device_move_from_tdl_to_gdl): Remove the ref note in the comment, and call g_object_ref() at the top of the function. 2004-04-26 David Zeuthen * doc/TODO: Added note about waiting for callouts to complete before removing a device and waiting for children to disappear before a device is removed 2004-04-26 David Zeuthen * hald/device.c (hal_device_print): Print out to stderr instead of stdout. * hald/device_store.c (hal_device_store_print): Print out the contents of a HalDeviceStore. * hald/linux/common.c (rename_and_merge): Check to see if the UDI exists in the TDL and try again if it is. 2004-04-26 Joe Shaw * hald/callout.c: Make pending callouts a hash table of lists, so we can execute all the callouts for the devices in order. (add_pending_callout, pop_pending_callout): New convenience functions. (wait_for_callout): If this is the last callout for a device, fire off the callouts_finished signal on the device. (hal_callout_device, hal_callout_capability, hal_callout_property): Use the new convenience functions, call process_callouts() in an idle function. * hald/device.c: Add a "callouts_finished" signal. * hald/hald.c (gdl_store_changed): Don't call hal_callout_device() here anymore... we call it in the backend before we get added to the GDL. * hald/hald_dbus.c (manager_device_exists, device_get_all_properties, device_get_property, device_get_property_type, device_set_property, device_add_capability, device_remove_property, device_property_exists, device_query_capability, agent_merge_properties, agent_device_matches): Search the TDL for the provided UDI if it's not found in the GDL. * hald/linux/block_class_device.c (detect_media): Instead of adding the device to the GDL immediately, connect to the callouts_finished signal and add the device then. Call hal_callout_device() here, though. * hald/linux/bus_device.c (bus_device_got_parent): Ditto. * hald/linux/class_device.c (class_device_final): Ditto. * hald/linux/common.c (device_move_from_tdl_to_gdl): Remove the device from the TDL and add it to the GDL. Remove the signal handler and unref the device. Used as a callback from bus_device.c and class_device.c. 2004-04-26 David Zeuthen * hald/linux/macio_bus_device.c: new file because with the recent change in how probing is handled, my CD-ROM wasn't added until 30 seconds late into the process as the macio glue wasn't handled * hald/Makefile.am (hald_SOURCES): add linux/macio_bus_device.c * hald/linux/osspec.c: add macio_bus_handler to bus_device_handlers * tools/device-manager/Const.py.in (BUS_NAMES): Add macio mapping 2004-04-25 David Zeuthen * doc/TODO: Add our notes about current issues with the Linux 2.6 kernel * hald/linux/usbif_bus_device.c (usbif_device_accept): remove is_probing * hald/linux/usb_bus_device.c (usb_device_accept): remove is_probing * hald/linux/printer_class_device.c (printer_class_device_accept): remove is_probing * hald/linux/osspec.c (visit_class_device): optionally take and use a ClassDeviceHandler object (visit_class): -do- (visit_device): optionally take and use a BusDeviceHandler object (visit_bus): new function; not currently used (osspec_probe): add a comment about migration to visit_bus once the kernel is ready; slight changes * hald/linux/net_class_device.c (net_class_pre_process): set category and capabilities * hald/linux/ide_host_bus_device.c (ide_host_device_accept): remove is_probing * hald/linux/common.c (got_parent): new function * hald/linux/class_device.h: change prototypes by removing is_probing parameter * hald/linux/class_device.c don't pass is_probing; use hald_is_initialising global instead * hald/linux/bus_device.h: change prototypes by removing is_probing parameter * hald/linux/bus_device.c: don't pass is_probing; use the global hald_is_initialising instead. Don't try to find parent if the sysfs path indicates that there is no parent. * hald/linux/block_class_device.c : don't pass is_probing; use hald_is_initialising global 2004-04-22 David Zeuthen * hald/linux/usb_bus_device.c (usb_add_caps_from_class): don't set capabilities from device class since this is very misleading. In fact, capabilities should only stem from kernel- or userspace- drivers. We retain the right to set the usbhub capability as no kernel driver is bound to this class of devices. Yet.. who knows? In either case, a GUI device browsers can always inspect the info.bus and consult the appropriate stuff, e.g. the usb.device_class, _sub_class and _protocol deal for usb devices, to select an appropriate icon. * hald/linux/pci_bus_device.c (pci_add_caps_from_class): removed for same reasons as above (pci_device_pre_process): don't call pci_add_caps_from_class * tools/device-manager/Representation.py: s/bridge.cardbus/pcmcia_socket/ * hald/linux/osspec.c: add pcmcia_socket_class_handler * hald/linux/pcmcia_socket_class_device.c: new file; very simple just tag a busdevice with the capability pcmcia_socket * hald/linux/class_device.c (class_device_final): log an informative message when we merge onto a device 2004-04-22 David Zeuthen * hald/linux/class_device.c (class_device_got_sysdevice): Instead of refusing to merge onto a socalled virtual device (which is really a HAL term, and thus quite crackful), just special-case the fact that we don't want to merge onto a usb interface but we prefer to merge onto the usb device. Which is sane and quite nice. This makes the scsi_device receive the scsi_generic class stuff and thus the scsi_generic.device_file=sg0 property. Which is also sane and quite nice (think SCSI multi-lun devices). * hald/linux/osspec.c (remove_class_device): Make a more concise statement in the log message about the fact that removal of class devices is not yet implemented; add @todo tag so this is not forgotten * doc/TODO: Add note about removal of class devices 2004-04-21 Joe Shaw * doc/TODO: Add a couple of callout-related items. * hald/callout.c (process_callouts): Reallocate the envp here with enough space for all of the properties, since properties were probably added since we initially measured the space. (hal_callout_device, hal_callout_capability, hal_callout_property): Reenable these. Don't bother counting the number of properties here, it doesn't matter. Instead allocate just enough space for our special env vars and let process_callouts() deal with the rest. 2004-04-21 David Zeuthen * hald/callout.c (hal_callout_property): callouts seem to be a bit broken right now (segfaults my box etc.), so disable them. Hopefully this is fixed soon! (hal_callout_capability): -do- (hal_callout_device): -do * hald/linux/usbif_bus_device.c (usbif_device_compute_udi): Don't print details about the device * hald/linux/usb_bus_device.c (usb_proc_parse): Comment out noisy print statements * hald/linux/osspec.c (handle_udev_node_created_found_device): (visit_class_device): clean up logging statements (visit_device): -do- (remove_device): comment out noisy logging statements (remove_class_device): -do- (handle_hotplug): -do- * hald/linux/class_device.c (class_device_got_device_file): comment out noisy logging statement (class_device_accept): -do- * hald/linux/common.c (rename_and_merge): comment out noisy logging statements (class_device_get_device_file): -do- * hald/hald.c (gdl_store_changed): don't print device, just print the UDI 2004-04-21 Robert Love * hald/callout.c: add property modified callout; change the action parameter to a tri-state and add appropriate enum * hald/callout.h: add prototype for hal_property_callout * hald/hald.c: invoke hal_property_callout on property modification 2004-04-20 David Zeuthen * doc/TODO (CVSID): Updated 2004-04-20 Robert Love * hald/callout.c: hal_property_get_as_string is now to_string, fix leak. * hald/device.c: add hal_device_property_to_string * hald/device.h: add prototype for hal_device_property_to_string * hald/property.c: rename hal_property_get_as_string to to_string * hald/property.h: ditto for the prototype 2004-04-20 Joe Shaw * hald/callout.c (Callout): Add the HalDevice to the structure, we need it for getting the properties. Add the starting index for the envp. (add_property_to_env): Deal with Callout structs instead of ForeachPropInfo. (process_callouts): Add the properties to the environment here, at callout time, instead of up front, since callouts may have changed properties, and we want later callouts to have the most up-to-date info. (process_callouts): Change the idle to a timeout. This is a copout. 2004-04-20 Joe Shaw * hald/callout.c: Rework this some to make the callouts asynchronous and tied in with the main loop, so that callouts can either link against libhal or use hal-{get|set}-property without deadlocking. 2004-04-19 Robert Love * hald/callout.c (hal_callout_capability): add properties to environment and set working directory correctly 2004-04-15 Joe Shaw * hald/device.c (hal_device_async_wait_property): Ref the device when we create the AsyncInfo. This should fix the glib warnings about signals. (destroy_async_match_info): Unref it when we're finished. 2004-04-14 Joe Shaw * hald/Makefile.am: Build the new scsi_generic class handler. * hald/linux/osspec.c: Add scsi_generic_class_handler. Also add a comment about how the order of the class_device_handlers array is important, particularly when probing at startup. * hald/linux/scsi_generic_class_device.c: Added. The actual handler. The dumbest and most straightforward backend yet. * tools/linux/hal_hotplug.c: Add file_list_scsi_generic. (wait_for_sysfs_info): And add it here... 2004-04-12 Joe Shaw * tools/device-manager/DeviceManager.py: Wrap the gnome.ui import in a try statement and desensitize the About menu item if it fails. This is to work around a broken python-gnome package on SUSE 9.0. 2004-04-12 Joe Shaw * hald/Makefile.am: Build the new net class device. * hald/linux/*.c: Change "post_process" to "pre_process", since we're actually doing all of this before our HalDevice merges into a superior one or gets added to the GDL. * hald/linux/class_device.h (ClassDeviceHandler): Add a new handler, "post_merge", which is called after we merge devices in class_device_final(). * hald/linux/class_device.c (class_device_final): Call our new post_merge function after we've merged devices. * hald/linux/net_class_device.c: Add back in network class device support. Uses MII registers to get the initial link state and uses netlink sockets to update it in real-time. * hald/linux/osspec.c: Add net_class_handler. 2004-04-12 David Zeuthen * hald/linux/block_class_device.c (block_class_post_process): s/hotplugable/hotpluggable/ 2004-04-12 David Zeuthen * hald/linux/block_class_device.c (block_class_post_process): Introduce storage.physical_device to point to the physical device backing this storage device 2004-04-12 David Zeuthen * hald/linux/block_class_device.c (block_class_post_process): Merge storage.* and storage_lun%d.* properties from physical device (eg. usb, ieee1394, ide) onto storage device * hald/device.c (hal_device_merge_with_rewrite): new function * hald/device.h: add prototype for hal_device_merge_with_rewrite * fdi/20freedesktop/lexar-media-cf-reader.fdi: new file * fdi/20freedesktop/6in1-card-reader.fdi: new file * fdi/20freedesktop/Makefile.am: add fdi files for my two card reader devices 2004-04-12 David Zeuthen * hald/linux/block_class_device.c (detect_fs_fat): make data an unsigned char array (block_class_post_process): Always choose the block.storage_device to be the top-level block device. Walk up the device chain to set storage.bus to [ide|ieee1394|usb] as appropriate. 2004-04-11 David Zeuthen * hald/linux/osspec.c (visit_class_device): Don't die if sysfs path is invalid (visit_device): Don't die if sysfs path is invalid 2004-04-11 David Zeuthen * tools/callouts/fstab-update.sh: Yuck, append a nondigit to MOUNTPOINT otherwise the removal of disk-8-1 (sda1) will also remove disk-8-17 (sdb1) 2004-04-11 David Zeuthen * tools/callouts/fstab-update.sh: Use HAL_PROP_BLOCK_FSTYPE if available * hald/linux/block_class_device.c (block_class_post_process): Move check for storage.is_hotplugable (block_class_post_process): Call detect_fs() to detect volume name (detect_fs_fat): new function, sets block.fstype to vfat and block.volume_label for volumes with FAT filesystems (detect_fs): new function 2004-04-10 David Zeuthen * libhal/libhal.[ch]: Added LibHalContext object so a stack of libraries and applications can simultaneously use libhal * libhal/libhal.h : Added LibHalLostCapability * libhal/libhal.c (hal_device_get_all_properties): Fixed a bug where the last property was missing * tools/hal_get_property.c: update to new libhal API * tools/hal_set_property.c: Update to new libhal API * tools/lshal.c: Update to new libhal API 2004-04-10 David Zeuthen * hald/linux/block_class_device.c (block_class_post_process): Revert to setting the storage backing device to the top-level block device 2004-04-10 David Zeuthen * hald/linux/class_device.h: add got_udi() method * hald/linux/class_device.c (class_device_final): move add/merge of class device to a single function * hald/linux/bus_device.h: add got_udi() method * hald/linux/bus_device.c (bus_device_got_parent): call got_udi() before adding (bus_device_got_udi): new function * hald/linux/block_class_device.c (block_class_got_udi): new function (block_class_post_process): set block.storage_device to the physical device, e.g. USB etc., backing the block device; simplify a bit 2004-04-08 Joe Shaw * hald/linux/printer_class_device.c (printer_class_device_accept): Added. Only accept class devices which have a name of "lpN". (printer_class_post_process): Get a description from the IEEE-1284 output and put it in printer.description. (printer_class_handler): Set the accept function to be printer_class_device_accept(), and change the sysfs class name from "printer" back to "usb". * tools/callouts/fstab-update.sh: Add some introductory text to the top of it, including a big warning. Create the mountpoint with mkdir -p instead of each individual directory. 2004-04-08 David Zeuthen * tools/callouts/fstab-update.sh: Callout script for fstab management 2004-04-08 David Zeuthen * hald/linux/osspec.c (remove_device): new function (remove_class_device): new function (handle_hotplug): simplify 2004-04-07 David Zeuthen * tools/linux/hal_dev.c: New file for sending device event * tools/linux/Makefile.am: Build and install hal.dev * hald/linux/class_device.h: Add accept method to ClassDeviceHandler * hald/Makefile.am (install-data-local): Create /etc/hal/device.d and /etc/hal/capability.d * hald/linux/osspec.c (handle_device_event): new function (handle_udev_node_created): removed function (osspec_filter_function): Handle events from hal.dev so we don't need to rely on udev having built-in dbus support * configure.in: Bump version to 0.2.90 2004-04-05 Joe Shaw * hald/linux/printer_class_device.c: Added. New printer class. * hald/linux/Makefile.am: Build linux/printer_class_device.c * hald/linux/osspec.c: Add the printer class handler. 2004-04-03 David Zeuthen * hald/main.c : Removed file * hald/linux/: Remove files from old backend 2004-04-03 David Zeuthen Merge hal-gobject-branch back to HEAD 2004-04-03 David Zeuthen * hald/linux/bus_device.c: Various cleanups * hald/linux/class_device.c: Various cleanups * hald/linux/block_class_device.c: Various cleanups * hald/device.c (hal_device_async_wait_property): New method 2004-04-02 David Zeuthen * hald/linux/osspec.c (handle_hotplug): Actually remove class devices that populate the tree (handle_udev_node_created): Search in Temporary Device List instead of the Global Device List - quite important difference :-) * hald/linux/common.c (rename_and_merge): remove from tdl * hald/linux/class_device.c (class_device_visit): add to tdl (class_device_got_parent_device): remove from tdl (class_device_got_sysdevice): remove from tdl (class_device_got_device_file): remove from tdl * hald/linux/bus_device.c (bus_device_visit): Asynchronously find the parent device instead of synchronously (bus_device_got_parent): New format * hald/linux/block_class_device.c (block_class_visit): add to tdl (detect_media): Add the patch from rml for storage.cdrom.media_type (block_class_removed): new function * hald/hald.c (hald_get_tdl): New function to get temporary device list 2004-04-01 David Zeuthen * hald/linux/common.c (rename_and_merge): Fixed a subtle error where multiple instances of the same device couldn't appear in the device list 2004-03-29 Robert Love * tools/linux/hal_hotplug.c: add a "strcat_len()" macro and use it 2004-03-29 Robert Love * tools/linux/hal_hotplug.c: sysfs_mnt_path should be a "char []" not a "char * []", also use PATH_MAX instead of 255, and finally use "const char" as appropriate 2004-03-30 David Zeuthen * hald/linux/block_class_device.c (detect_media): media detection on CD-ROM's from the patch from Robert (storage.cdrom.media_type) (block_class_tick): Comment out noisy debug statement when polling 2004-03-30 David Zeuthen * hald/main.c (device_get_all_properties): Comment out noise trace call * hald/device_store.c (ds_device_merge, ds_add_capability): Signal capability added even though target device already had the capability. Fixes problem with monitoring ethernet devices. 2004-03-28 David Zeuthen * hald/linux/linux_class_block.c (visit_class_device_block): Remove block.[size|start|block_size] properties 2004-03-26 Robert Love * hald/linux/linux_class_block.c (media_detect_timer_handler): Comment out noise debug statement 2004-03-25 Robert Love * hald/linux/linux_class_block.c (detect_media): add support for "storage.cdrom.media_type" 2004-03-14 Martin Waitz * hald/linux/linux_usb.c (usb_proc_parse): Just ignore if we can't open /proc/bus/usb/devices * hald/linux/usb_bus_device.c (usb_proc_parse): Just ignore if we can't open /proc/bus/usb/devices * tools/device-manager/DeviceManager.py: Print out nice error if hald is not running 2004-03-14 David Zeuthen * doc/TODO: Updated TODO file 2004-03-14 David Zeuthen Added first stab of rewrite of linux specific parts - the new code is a lot more object oriented and thus more compact; it's currently disabled until it's more tested; you have to manually enable by editing hald/Makefile.am * hald/Makefile.am (hald_SOURCES): Add new linux specific parts; currently disabled * hald/device_store.h: add ds_device_async_wait_for_property() * hald/device_store.c (DSDeviceAsyncFindStruct): Add device member used in for wait_for_property (async_find_check_new_addition): add wait_for_property check (ds_device_async_wait_for_property): new function * osspec.c : new file * common.[ch] : new files * bus_device.[ch] : new files * usb_bus_device.c : new file * usbif_bus_device.c : new file * pci_bus_device.c : new file * ide_bus_device.c : new file * ide_host_bus_device.c : new file * class_device.[ch] : new files * input_class_device.c : new file * block_class_device.c : new file * scsi_host_class_device.c : new file * scsi_device_class_device.c : new file 2004-03-05 Sjoerd Simons * hald/linux/linux_class_v4l.c (visit_class_device_v4l): Remove invalid free of a static string * hald/linux/linux_common.c (udevinfo_path): Add /usr/bin/udevinfo as candidate for location of udevinfo 2004-03-03 David Zeuthen Major reformatting patch - seems that everyone is following another coding style than me so I chose the GNOME coding guidelines, indent -kr -i8 -pcs -lps -psl, and did some manual reformatting 2004-03-01 Joe Shaw * configure.in: SUSE puts pci.ids in /usr/share, so add that to the list of directories to check. * tools/Makefile.am: Use @PACKAGE_LIBS@ and @DBUS_LIBS@ instead of referencing the libs directly. This allows us to have dbus and/or glib in a prefix. 2004-03-01 David Zeuthen Preliminary support for waiting for sysfs information to appear - not complete but it's a start... * tools/linux/hal_hotplug.c (get_sysfs_mnt_path): new function (main): call wait_for_sysfs_info() on hotplug add (wait_for_sysfs_info): new function 2004-03-01 Sjoerd Simons * hald/linux/linux_common.c (udevinfo_path): new function * hald/linux/linux_common.h: add udevinfo_path prototype * hald/linux/linux_class_v4l.c (visit_class_device_v4l): use udevinfo_path() to get path to udevinfo * hald/linux/linux_class_block.c (visit_class_device_block_got_parent): use udevinfo_path() to get path to udevinfo. Add support for SCSI tape detection. Set correct storage.media on SCSI CD-ROM and disk detection 2004-02-29 David Zeuthen * hald/linux/linux_usb.c (visit_device_usb): New way to check if device is an interface 2004-02-27 Joe Shaw * hald/linux/linux_class_block.c (visit_class_device_block_got_parent): Handle block devices which have a "scsi_device" as its parent class. Use sysfs to get vendor, product, and SCSI device type, which get mapped to HAL capabilities. * hald/linux/linux_usb.c (usb_proc_parse): Fallback to /proc/bus/usb/devices_please-use-sysfs-instead. Yeah, yeah. 2004-01-20 David Zeuthen * hald/linux/linux_osspec.c (visit_device): disable ieee1394 (osspec_init): disable ieee1394 (osspec_probe): disable ieee1394 (handle_hotplug): disable ieee1394 2004-01-19 David Zeuthen * configure.in: bump version to 0.2.6 * packaging/fedora/hal.spec (Version): bump to 0.2.6 * hald/linux/linux_class_v4l.c (get_udev_root): removed (linux_class_v4l_init): don't call get_udev_root() (visit_class_device_v4l): use new options in udev-013 * hald/linux/linux_class_block.c (get_udev_root): removed (linux_class_block_init): don't call get_udev_root() (visit_class_device_block_got_parent): use new options in udev-013 2004-01-19 David Zeuthen * hald/linux/linux_common.c (drivers_collect): Don't call DIE() if we cannot open the /sys/bus//drivers directory - just ignore this error with HAL_WARNING() 2004-01-18 David Zeuthen * hald/device_store.c (ds_device_merge): treat info.properties in a special way such that capabilities entries are actually merged * hald/linux/linux_class_v4l.c (visit_class_device_v4l): Replaced parent with sysdevice, since that is what we really search for; split properties onto v4l.[vbi,video,radio] (visit_class_device_v4l_got_parent): renamed to _got_sysdevice. Merge information onto sysdevice instead of creating a new device 2004-01-18 Bastien Nocera * hald/linux/linux_dvd_rw_utils.c (get_read_write_speed): fixed bug where the two write_speed assignments was swapped * doc/TODO: remove note about ide-scsi and ide-cd 2004-01-17 David Zeuthen * doc/TODO: some shuffling around, added note about that hald/linux/linux_dvd_rw_utils.c is ide-scsi centric 2004-01-17 Bastien Nocera * hald/linux/linux_dvd_rw_utils.c (pull_page2a_from_fd): new function (get_read_write_speed): new function * hald/linux/linux_dvd_rw_utils.h: add get_read_write_speed() prototype * hald/linux/linux_class_block.c (linux_class_block_check_if_ready_to_add): call get_read_write_speed for optical drives 2004-01-17 David Zeuthen * hald/device_store.c (ds_query_capability): use strtok_r instead of strstr as it didn't really work (example: will return true if called with 'cdrom' and caps were 'cdrom.cdr block'. (ds_add_capability): only announce new capability if we actually added it 2004-01-17 Joe Shaw * hald/Makefile.am (hald_SOURCES): add linux_ieee1394.[ch] * hald/linux/linux_ieee1394.[ch]: new files * hald/linux/linux_osspec.c (visit_device): visit IEEE1394 devices (osspec_probe): handle IEEE1394 devices (handle_hotplug): handle IEEE1394 devices 2004-01-17 Matthew Mastracci * tools/device-manager/Const.py.in (BUS_NAMES): add video4linux, fix I2C capitalization * hald/linux/linux_osspec.c (visit_class_device): add support for video4linux, minor I2C fixes (visit_class_device): add support for video4linux (visit_class_device): use class device path for I2C (handle_hotplug): hotplug support for video4linux * hald/Makefile.am (hald_SOURCES): Add linux_class_video4linux.[ch] * hald/linux/linux_class_video4linux.[ch]: new files 2004-01-17 Bastien Nocera * hald/Makefile.am (hald_SOURCES): Add linux_dvd_rw_utils.[ch] * hald/linux/linux_class_block.c (linux_class_block_check_if_ready_to_add): Check for DVD writer capabilities * hal.pc.in: Fixup up so applications only need to include libhal and not dbus * hald/linux/linux_dvd_rw_utils.[ch]: new files 2004-01-17 Robert Love * libhal/libhal.h: Change protototype of foo() to foo(void) to avoid warnings when compiling -Wstrict-prototypes 2004-01-16 David Zeuthen * packaging/fedora/hal.spec (Version): bump version to 0.2.5 * configure.in: bump version to 0.2.5 * tools/linux/hal_hotplug.c (main): sleep 1000ms instead of 500ms before sending signal - we really need to update to latest libsysfs in hald to avoid the race - this is soo ugly * hald/main.c (property_atomic_update_end): fix possible memory violation * hald/linux/linux_osspec.c (handle_hotplug): call linux_class_block_removed() just before destroying the HalDevice obj * hald/linux/linux_class_block.c (linux_class_block_removed): new function * hald/linux/linux_class_block.h: add prototype for linux_class_block_removed() * hald/device_store.c (ds_device_find_multiple_by_key_value_string): new funtion * hald/device_store.h: add prototype for ds_device_find_multiple_by_key_value_string() * hald/linux/linux_class_block.c (sigio_handler): Make this signal handler *a lot* safer by only setting a flag a timer can pick up (detect_media): properly handle situation when user removes media where partitions are mounted on (media_detect_timer_handler): check sigio_etc_changed (force_unmount_of_all_childs): newfunction (force_unmount): new function (linux_class_block_removed): new function 2004-01-14 David Zeuthen * hald/linux/linux_class_block.c (detect_media): Doh, leaked a filedescriptor which is big trouble. Fixed 2004-01-13 David Zeuthen * configure.in: Bump version number to 0.2.4 * packaging/fedora/hal.spec (Release): Bump version number to 0.2.4 * tools/device-manager/hal-device-manager: Remove requirement for pygtk 2.0 since it broke some systems 2004-01-13 David Zeuthen * hald/linux/linux_class_block.c (linux_class_block_check_if_ready_to_add): ioctl rc>=0 is also success (detect_media): rewrite most of this function (visit_class_device_block_got_parent): Rename storage.has_removable_media to storage.support_removable_media. Set it for all devices - only properly detected for IDE CD-ROM drives currently. (linux_class_block_check_if_ready_to_add): Move storage.* properties to visit_class_device_block_got_parent() 2004-01-13 David Zeuthen * configure.in: Bump version number to 0.2.3 * tools/device-manager/DeviceManager.py (DeviceManager.device_changed): Add support for Condition signal * tools/lshal.c (device_condition): new function (main): add device_condition to LibHalFunctions variable * libhal/libhal.c (filter_func): Process DeviceCondition * libhal/libhal.h (LibHalFunctions_s): Add device_condition and type LibHalDeviceCondition * hald/linux/linux_class_net.c (link_detection_process): Emit NetLinkEvent(bool got_link) condition * hald/linux/linux_class_block.c (etc_mtab_process_all_block_devices): emit BlockMount(string device, string mount_point, string fstype) and BlockUnmount(string device) events * hald/hald.h: added emit_condition() * hald/main.c (emit_condition): new function 2004-01-13 Matthew Mastracci * tools/device-manager/Const.py.in (BUS_NAMES): add i2c_adapter * hald/linux/linux_osspec.c (visit_class_device): add support for i2c-adapter (visit_device): add support for i2c and i2c-adapter (handle_hotplug): hotplug support for i2c and i2c-adapter * hald/Makefile.am (hald_SOURCES): Add linux_class_i2c_adapter.[ch] * hald/linux/linux_class_i2c_adapter.[ch]: new files 2004-01-12 David Zeuthen * hald/linux/linux_class_block.c (linux_class_block_check_if_ready_to_add): Check whether optical drive supports media changed signals (etc_mtab_process_all_block_devices): Only merge information from /etc/mtab if block.is_volume==TRUE (detect_media): New function (media_detect_timer_handler): New function (linux_class_block_detection_done): Setup 2 sec timer for media detection 2004-01-10 David Zeuthen * tools/device-manager/hal-device-manager: add requirement for pygtk version 2.0 2004-01-10 David Zeuthen * tools/device-manager/Const.py.in (BUS_NAMES): Add support for i2c devices * hald/linux/linux_i2c.[ch]: New files by Matthew Mastracci; slight modifications by me * hald/linux/linux_osspec.c (visit_device): Call visit_device_i2c() * hald/Makefile.am (hald_SOURCES): Add linux_i2c.[ch] 2004-01-08 David Zeuthen * hald/linux/linux_class_scsi.c (visit_class_device_scsi_host): Set scsi_host.host (visit_class_device_scsi_device): Set scsi_device.[host,bus,target,lun] (scsi_host_compute_udi): Simplify UDI computation using only scsi_host.host. This also makes it correct for multi-lun devices (scsi_device_compute_udi): Simplify UDI computation using the tupple {host, bus, target, lun}. This also makes it work with multi-lun devices * hald/linux/linux_class_block.c (linux_class_block_check_if_ready_to_add): Add O_NONBLOCK so optical drive capability query works without a disc mounted. Add capabilities (e.g. storage.cdr) as always present properties as well. A bit redundant, but it makes is more easy obvious that some devices might support this property. Populate block.storage_device to point the device with the storage.* properties 2004-01-05 David Zeuthen * hald/linux/linux_osspec.c (handle_hotplug): add some more debug * hald/linux/linux_class_block.c (visit_class_device_block_got_parent): add some more debug 2004-01-04 David Zeuthen * tools/linux/hal_hotplug.c: Don't include dbus-glib 2004-01-04 Joe Shaw * hald/main.c (PendingUpdate_s): Remove the "const" from the "key" field, since it's supposed to be freed. * hald/linux/linux_class_block.c: #include . (visit_class_device_block_got_parent): The path should be declared const. g_spawn_sync() was missing a NULL GError argument. (etc_mtab_process_all_block_devices): existing_block_device should be declared const. (get_udev_root): g_spawn_sync() needs a GError argument. * hald/linux/linux_class_net.c: Add #include "../hald.h". (visit_class_device_net): Wrap the check for ARPHRD_IEEE1394 in an #ifdef, since my machine doesn't seem to define it. * hald/linux/linux_common.c: #define _GNU_SOURCE since we're using strndup(). 2004-01-04 Joe Shaw * configure.in: Do a separate check for dbus alone, so that we can link libhal to it and not the glib libs. This fixes things for a dbus installed into a separate prefix. * libhal/Makefile.am: Use the DBUS_CFLAGS for the INCLUDES and DBUS_LIBS for the libhal_la_LIBADD. * tools/linux/Makefile.am: Ditto for hal_hotplug 2004-01-04 Anders Carlsson * tools/device-manager/DeviceManager.py: Add a couple of code paths for setting vendor. * tools/device-manager/hal-device-manager.glade: Fixup to use GtkTable instead of GtkFixed. 2004-01-04 David Zeuthen * hald/linux/linux_class_block.c (linux_class_block_check_if_ready_to_add): moved cdrom cap check to here. Renamed capabilities from cdrom.* to storage.* (visit_class_device_block_got_parent): moved cdrom cap away from here since on hotplugging we are not sure to have block.device. 2004-01-04 Anders Carlsson * hald/linux/linux_class_block.c: (visit_class_device_block_got_parent): Add support for cdrom capabilities. 2004-01-04 David Zeuthen * fdi/Makefile.am: install fdi.rng * fdi/fdi.rng: new file (thanks to Dave Malcolm) 2004-01-03 David Zeuthen * hald/linux/linux_class_block.c (visit_class_device_block_got_parent): Invoke udev on hald boot time to get device file names (etc_mtab_process_all_block_devices): Be careful not to overwrite existing block.device when looking at /etc/mtab (get_udev_root): new function (linux_class_block_init): find udev root using '/sbin/udev -r' 2004-01-02 David Zeuthen * configure.in: bump version to 0.2.2 * hald/linux/linux_class_net.c (link_detection_process): Group net.ethernet.link and net.ethernet.rate as an atomic update * fdi/Makefile.am: install fdi.dtd to $(datadir)/hal/fdi * fdi/fdi.dtd: new file (thanks to Dave Malcolm) * hald/device_store.c (ds_device_find_by_key_value_string): set that we can choose whether to search the GDL or not (ds_device_async_find_by_key_value_string): set that we can choose whether to search the GDL or not (ds_device_merge): Do all the merge as an atomic operation * hald/linux/linux_osspec.c (handle_udev_node_created_found_device): Call linux_class_block_check_if_ready_to_add() (handle_udev_node_created): search for device not in GDL * hald/linux/linux_common.c (rename_and_merge): renamed from rename_and_maybe_add. News is that you need to call ds_gdl_add() explicitly * hald/linux/linux_*.c: call rename_and_merge() instead. Explicitly call ds_gdl_add() * hald/linux/linux_class_block.c (etc_mtab_process_all_block_devices): make sure we always set required properties; set all properties in a single transaction (read_etc_mtab): add force parameter (etc_mtab_process_all_block_devices): add force parameter (visit_class_device_block_got_parent): reload /etc/mtab on every hotplug. Call linux_class_block_check_if_ready_to_add() instead of ds_gdl_add() (linux_class_block_check_if_ready_to_add): new function * libhal/libhal.c (filter_func): Added PropertyModified, removed Property[Changed, Added, Removed] * libhal/libhal.h (LibHalFunctions_s): Added PropertyModified, removed Property[Changed, Added, Removed] * tools/device-manager/DeviceManager.py (DeviceManager.device_changed): Listen for PropertyModified instead. Print out payload on stdout for debugging purposes * tools/lshal.c (property_modified): new function (property_added): removed (property_removed): removed (property_changed): removed * hald/main.c (hald_atomic_update_begin): new function (hald_atomic_update_end): new function (property_changed): add support for atomic updates (main): Run as root, we require this to sniff mii registres * hal.conf.in: Run as root, we require this to sniff mii registres * hald/hald.h: new file 2003-12-30 David Zeuthen * configure.in: Change default user to from hal to haldaemon since people may already use login called hal or hald (I know of both). Bump version number to 0.2.1 * packaging/fedora/hal.spec: new file * hald/main.c (main): Use HAL_USER macro instead of the hardcoded hal * hal.conf.in: group policy segfaults dbus-daemon-1 on 0.20, but works in CVS; Now changed so only root can use the AgentManager interface 2003-12-29 David Zeuthen * configure.in: add --with-init-scripts and --with-pid-file. Now configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var works like a charm on Fedora Core 1. * hald/Makefile.am: handle initscripts fun * hald/haldaemon.in: new file 2003-12-29 David Zeuthen * Makefile.am: add hal.conf.in to EXTRA_DIST to so make distcheck passes * configure.in: add --with-hal-user and --with-hal-group, defaults to hal:hal. Autogenerate hal.conf * hal.conf.in: new file * hal.conf: remove, since it is now autogenerated * hald/Makefile.am: Add $(sysconfig) dir * hald/main.c (usage): new function (main): Add commandline parsing, daemonizing and run-as-user * hald/linux/linux_usb.c (visit_device_usb_got_parent): fix a stupid bug where proc info wasn't reloaded (usb_proc_parse): Set cur info to NULL on subsequent calls to make it work 2003-12-23 David Zeuthen * configure.in: add autogeneration doc/Makefile, examples/Makefile and examples/volumed/Makefile * Makefile.am: add doc and examples to SUBDIRS * examples/Makefile.am: new file * examples/volumed/Makefile.am: new file * doc/Makefile.am: new file * doc/TODO: updated * HACKING: updated * NEWS: updated, since 0.2 is ready for distribution 2003-12-23 David Zeuthen * doc/TODO: updated 2003-12-23 David Zeuthen * configure.in: Drop DEVICEMANAGER_DIR. This allows us to do make install even in maintainer mode, but changes to datafiles (glade and png's) needs to be installed every time unless Const.py is directly edited. Add autogeneration of fdi/Makefile and fdi/10generic/Makefile and fdi/20freedesktop/Makefile. * hald/device_info.c (handle_match): Fix check for merge of the other non-string types (bool, int, double) (end): Merge non-string types * hald/linux/linux_class_block.c (visit_class_device_block_got_parent): rename various properties to match the spec. * hald/linux/linux_class_input.c (process_input_proc_info): rename various properties to match the spec. * hald/linux/linux_common.c (rename_and_maybe_add): Implement merging with persistent unplugged devices; search for .fdi files * hald/linux/linux_osspec.c (handle_hotplug): Don't destroy persistent devices on remove; rather mark the unplugged, info.not_available set to true, and remove some key properties in info and linux namespace. * hald/linux/linux_usb.c (usb_add_caps_from_class): Renamed capability from storage to storage_controller to match spec.. Hmm.. not sure.. * tools/device-manager/Const.py.in: Use @DATADIR@ and path instead of @DEVICEMANAGER_DIR@ * tools/device-manager/Representation.py: Add support for capability camera and fixup how the storage icon is selected to reflect the new spec * fdi/Makefile.am: new file * fdi/10generic/Makefile.am: new file * fdi/10generic/usb-classes.fdi: removed * fdi/20freedesktop/Makefile.am: new file * fdi/20freedesktop/ibm-usb-hub-keyboard.fdi: removed * fdi/20freedesktop/lexar-cf-card-reader.fdi: removed * fdi/20freedesktop/canon-digital-ixus-v.fdi: new file 2003-12-22 David Zeuthen * libhal/libhal.c (hal_free_string): rename from hal_free_utf8 as this name makes more sense and we don't yet support utf8 strings (hal_device_get_all_properties): fix memory leak of dbus strings in multiple places. Note: we have to audit hald as well :-/ (filter_func): fix dbus string memory leakages (hal_initialize): add use_cache to preserve API compatilibility when we actually get around to implement caching in libhal (hal_get_all_devices): add check for oom (hal_device_get_property_type): fix dbus string memory leakages * libhal/libhal.h: change hal_initialize() prototype. Change name of hal_free_utf8() to hal_free_string() * tools/Makefile.am: rename hal_[s|g]et_property program to hal-[s|g]et-property. * tools/hal_get_property.c (main): call hal_initialize with correct number of arguments. Fix string leakage bug. * tools/hal_set_property.c (main): call hal_initialize with correct number of arguments * tools/lshal.c (dump_devices): Call hal_free_string_array() instead of dbus_free_string_array() (print_property): fix string leakage (main): call hal_initialize with correct number of arguments 2003-12-22 David Zeuthen * acinclude.m4: borrow AS_AC_EXPAND from gstreamer (Martin Waitz) * configure.in: use AS_AC_EXPAND and define $(LN_S) and request generation of tools/device-manager/Const.py (Martin Waitz) * hald/Makefile.am: add $(top_srcdir) to pass make distcheck (Martin Waitz) * tools/Makefile.am: add $(top_srcdir) to pass make distcheck, and use direct path to libhal (Martin Waitz) * tools/device-manager/Const.py.in: use autoconf vars (Martin Waitz) * tools/device-manager/Makefile.am: simplify by removing manual variable replacement and by using dist_ and nodist_ prefixes. Use $(LN_S) to link (Martin Waitz) * tools/linux/Makefile.am: Fix symlinking (Martin Waitz) 2003-12-22 David Zeuthen * tools/device-manager/*: Some changes due to the big rename patch * hald/*.c: The big property rename change patch s/Bus/info.bus/ s/Capabilities/info.capabilities/ s/Category/info.category/ s/Product/info.product/ s/Vendor/info.vendor/ s/Linux.sysfs_path/linux.sysfs_path/ s/Linux.sysfs_path_device/linux.sysfs_path_device/ s/Linux.sysfs_bus_id/linux.sysfs_bus_id/ s/Parent/info.parent/ s/PhysicalDevice/info.physical_device/ info.udi NEW s/pci.Product/pci.product/ s/pci.Vendor/pci.vendor/ s/pci.ProductSubSystem/pci.subsys_product/ s/pci.VendorSubSystem/pci.subsys_vendor/ s/pci.deviceClass/pci.device_class/ s/pci.deviceSubClass/pci.device_subclass/ s/pci.deviceProtocol/pci.device_protocol/ s/pci.idProduct/pci.product_id/ s/pci.idVendor/pci.vendor_id/ s/pci.idProductSubSystem/pci.subsys_product_id/ s/pci.idVendorSubSystem/pci.subsys_vendor_id/ s/usb.Product/usb.product/ s/usb.Vendor/usb.vendor/ s/usb.bDeviceClass/usb.device_class/ s/usb.bDeviceSubClass/usb.device_subclass/ s/usb.bDeviceProtocol/usb.device_protocol/ s/usb.bMaxPower/usb.max_power/ s/usb.bcdDevice/usb.device_revision_bcd/ s/usb.bcdSpeed/usb.speed_bcd/ s/usb.bcdVersion/usb.version_bcd/ s/usb.busNumber/usb.bus_number/ s/usb.canWakeUp/usb.can_wake_up/ s/usb.configurationValue/usb.configuration_value/ s/usb.idProduct/usb.product_id/ s/usb.idVendor/usb.vendor_id/ s/usb.levelNumber/usb.level_number/ s/usb.numConfigurations/usb.num_configurations/ s/usb.numInterfaces/usb.num_interfaces/ s/usb.numPorts/usb.num_ports/ s/usb.selfPowered/usb.is_self_powered/ s/usb.serial/usb.serial/ s/usbif.bInterfaceClass/usbif.interface_class/ s/usbif.bInterfaceSubClass/usbif.interface_subclass/ s/usbif.bInterfaceProtocol/usbif.interface_protocol/ s/usbif.deviceIdProduct/usbif.device_product_id/ s/usbif.deviceIdVendor/usbif.device_vendor_id/ s/ide.channel/ide.channel/ s/ide.channel/ide.sub_channel/ s/ide_host.number/ide_host.number/ s/block.device/block.device/ s/block.fileSystem/block.fstype/ s/block.isMounted/block.is_mounted/ s/block.isVolume/block.is_volume/ s/block.major/block.major/ s/block.minor/block.minor/ s/block.mountPoint/block.mount_point/ s/block.size/block.size/ s/block.start/block.start/ s/block.model/block.model/ s/block.media/block.media/ s/block.removableMedia/block.has_removable_media/ block.block_size NEW s/net.ethernet.macAddr/net.ethernet.mac_addr/ s/net.ethernet.macAddrLower24/net.ethernet.mac_addr_lower24/ s/net.ethernet.macAddrUpper24/net.ethernet.mac_addr_upper24/ s/net.arpProtoHwId/net.arp_proto_hw_id/ 2003-12-22 David Zeuthen * hald/linux/linux_usb.c (usb_proc_parse): Allow multiple invocations, specifically one on every hotplug :-) (visit_device_usb_got_parent): Call usb_proc_parse, so we get up-to- date information from proc 2003-12-22 David Zeuthen * hald/device_store.c (async_find_check_new_addition): fixed a quite subtle bug where multiple finds for the same device were out there. I just love bloody callbacks :-/ 2003-12-21 David Zeuthen * examples/volumed/volumed.py: be less verbose * hald/linux/linux_osspec (osspec_init): Add match for udev signals (osspec_hotplug): renamed to handle_hotplug since old name didn't make any sense (handle_udev_node_created): new function (handle_udev_node_created_found_device): new function (osspec_filter_function): add check for udev signals * tools/linux/hal_hotplug.c (main): sleep a while so the kernel has time to populate sysfs (hmmm) 2003-12-21 David Zeuthen * Doxyfile.in: add tools directory * hald/device_store.c: fixup doxygen grouping * hald/device_store.h: fixup doxygen grouping * hald/logger.c: Don't print out trace priority logging statements * hald/linux/linux_class_block.c: Add mount point detection by monitoring /etc and looking at /etc/mtab. Several new functions. * hald/linux/linux_class_input.c (linux_class_input_handle_hotplug_add): new function * hald/linux/linux*.[ch]: Add _detection_done() method that is called when device detection (on startup of the HAL daemon) is done * hald/linux/linux_osspec.c (osspec_init): Call _detection_done (ospec_hotplug): Handle input being hotplugged * tools/hal_get_property.c: added doxygen comments * tools/hal_set_property.c: added doxygen comments * tools/lshal.c: added doxygen comments 2003-12-21 David Zeuthen * hald/device_store.c (ds_device_destroy): Only call gdl_changed_cb's if the device being destructed is in the GDL * hald/main.c (raise_wrong_state): removed (device_enable): removed (device_disable): removed (filter_function): remove call to device_enable() and device_disable() (gdl_changed): fix really silly bug where added and removed signals were switched * hald/linux/linux_common.c (rename_and_maybe_add): since we don't know anything about states, disable functionality for unplugged persistent devices * hald/linux/linux_usb.c (visit_device_usb): fixed segfault bug where kernel didn't gave neither vendor nor product name (thanks to testing on my powerbook that now finally runs 2.6.0, Yay!) * libhal/libhal.c (hal_device_disable): removed (hal_device_enable): removed (filter_func): don't handle all DeviceBooting etc. signals. Splitted PropertyChanged into PropertyChanged, PropertyAdded, PropertyRemoved callbacks (hal_device_property_watch_all): new function (hal_device_add_property_watch): new function (hal_device_remove_property_watch): new function * libhal/libhal.h: Removed all common constants since they were all state contstants. Removed LibHalDeviceBooting etc. typedefs. Added typedefs for PropertyAdded, PropertyRemoved callbacks. Changed type of LibHalFunctions. Added property for property_watch functions. * tools/Makefile.am: Added rules to buils lshal, hal_get_property and hal_set_property programs * tools/lshal.c: new file * tools/hal_get_property.c: new file * tools/hal_set_property.c: new file * tools/device-manager/DeviceManager.py: Don't reference State property as it is not available anymore * tools/linux/Makefile.am: Make sure hal.hotplug links statically, otherwise libdbus-1.so cannot be found unless installed in /usr/lib * tools/linux/hal_hotplug.c: Include unistd.h to shut up the compiler 2003-12-20 David Zeuthen * Doxyfile.in: Remove agents/linux26/sysfs, Add hald/linux and tools/linux. Change RECURSIVE to NO. * configure.in: Add AM_PATH_PYTHON. Add --with-hwdata option and search for places normally placed at RedHat and Debian. Require version 0.20 of D-BUS (Martin Waitz). Make USE_MAINTAINER_MODE an AM_CONDITIONAL. Don't check for libpci. Default D-BUS system.d directory to our own prefix. Add --with-hotplug option to specify the hotplug.d directory. Default to /etc/hotplug.d. Add tools/device-manager/Makefile. Print out HWDATA_DIR, LINUX_HOTPLUG_DIR. * hald: All source files, s/LOG_/HAL_/. Fixup Doxygen documentation * hald/logger.c: new file * hald/logger.h: change logging macros * hald/Makefile.am: add logger.c to SOURCES * hald/linux/linux_class_input.c (process_input_proc_info): Use EV_SYN if EV_RST is not defined * tools/Makefile.am: add device-manager to SUBDIRS * tools/device-manager/Makefile.am: new file; generates Const.py with correct version and paths. Installs into the python program and data into $(datadir)/hal/device-manager. Links from $(bindir) to the installation location. * tools/device-manager/Const.py.in: new file * tools/device-manager/Const.py: Removed from CVS; now autogenerated from Const.py.in * tools/device-manager/Representation.py: Prefix with Const.DATADIR when loading png files * tools/device-manager/DeviceManager.py: Prefix with Const.DATADIR when loading glade file * tools/linux/Makefile.am: Move hal.hotplug to libexec from bin. Create symlink in /etc/hotplug.d on install. 2003-12-15 David Zeuthen * hald/device_store.c (ds_init): Don't require callback functions (ds_add_cb_newcap): new function (ds_add_cb_property_changed): new function (ds_add_cb_gdl_changed): new function (ds_device_destroy): call all registered callbacks (ds_gdl_add): call all registered callbacks (ds_property_set_string): call all registered callbacks (ds_property_set_int): call all registered callbacks (ds_property_set_bool): call all registered callbacks (ds_property_set_double): call all registered callbacks (ds_property_remove): call all registered callbacks (ds_device_merge): call new capability on target for all capabilities on source (ds_add_capability): call all registered callbacks (ds_query_capability): new function * hald/device_store.h: Add new prototypes * hald/main.c (main): Register callbacks we used to give to ds_init() * hald/linux/linux_class_net (visit_class_device_net): Fixed bug where the net.ethernet capability was set on "Experimental Ethernet" instead on "Ethernet" (mdio_read): new function (link_detection_process): new function (link_detection_timer_handler): new function (link_detection_add): new function (link_detection_remove): new function (new_capability): new function (gdl_changed): new function (linux_class_net_init): Register callbacks for new_capability and gdl_changed. Add timer for checking link status every second 2003-12-14 David Zeuthen * doc/TODO: New file! Contains a high-level TODO list as a complement to the @todo's embedded in the source code. * hald/device_store.c (xstrdup): new function (ds_init): Require a callback to when the GDL changes (async_find_timeout_fn): new function (async_find_check_new_addition): new function (ds_device_async_find_by_key_value_string): new function (ds_device_find_by_key_value_string): new function (ds_device_new): use xstrdup (ds_gdl_add): check for pending async finds; notify about GDL change (ds_device_set_udi): use xstrdup (ds_property_set_string): use xstrdup (ds_property_set_int): use xstrdup (ds_property_set_bool): use xstrdup (ds_property_set_double): use xstrdup (ds_add_capability): new function * hald/device_store.h: Add prototypes and required datatypes for public functions added in device_store.c * hald/main.c (gdl_changed): new function (main): Call OS specific elements; see hald/linux * hald/linux: New directory holding files for device probing and hotplug handling on Linux 2.6. All the logic from agents/linux26/sysfs is ported over to use the local HAL interface in hald. It's a major change, but I'm sure it's worth it. It's simply more efficient having a single daemon and, more importantly, it's easier to manage. The monitoring code still needs to be ported over. This is the last major change before 0.2 is released. * hald/Makefile.am: Add sources from linux and linux/libsysfs * hald/osspec.h: new file * tools/linux/hal_hotplug.c: New simple program for translating a hotplug event into a D-BUS messages * hal.conf: Add interface for listening to D-BUS messages originating from Linux Hotplug * Makefile.am: Apply patch from Martin Waitz for smarter installation of D-BUS policy file. Remove reference to agents; add tools to SUBDIRS * configure.in: Remove all agents; add Makefile generation for tools and tools/linux 2003-12-14 Anders Carlsson * configure.in: Fix config message 2003-12-08 David Zeuthen * agents/linux26/sysfs/hal_monitor.c: (etc_mtab_process_all_block_devices): s/volume./block./ (udev_filter_func): new function for filtering D-BUS messages from udev (setup_udev_listener): setup filter for udev messages (hal_monitor_enter): Listen to D-BUS messages * agents/linux26/sysfs/main.c: (hal_sysfs_probe): Use global sysfs path (device_hotplug_add): Use global sysfs path (device_hotplug_remove): Use global sysfs path (drivers_collect): Use global sysfs path (mainloop_integration): Save D-BUS connection object for later use (main): Get sysfs mount path once and for all * agents/linux26/sysfs/main.h: Add dbus_connection and sysfs_mount_path as extern variables * hald/main.c: (device_query_capability): new function (filter_function): add check for Device.QueryCapability * libhal/libhal.c: Minor formatting stuff * examples/volumed/volumed.py: Crude example of volume manager now that we got udev integration in place. It doesn't really mount anything but prints out when it should mount. You'll need a very recent udev from BitKeeper with D-BUS enabled (got the patch accepted today) 2003-12-06 David Zeuthen * tools/device-manager/hal-device-manager.glade: Forgot to add file 2003-12-06 David Zeuthen * agents/linux26/sysfs/hal_monitor.c (ethmon_mdio_read): new function (ethmon_process): new function (ethmon_timeout): new function (ethmon_add): new function (ethmon_remove): new function (ethernet_process_all_devices): new function (device_added): new function (device_new_capability): new function (device_removed): new function (hal_monitor_enter): Initiate monitoring of link status on ethernet devices * agents/linux26/sysfs/hal_net.c (visit_class_device_net): Shuffle the code around so the capability is not set before the properties under the capability namespace * agents/linux26/sysfs/main.c: Add device_new_capability in hal_functions variable * agents/linux26/sysfs/main.c: Add device_new_capability so it is visible in other translation units * hald/main.c (manager_send_signal_new_capability): new function (device_add_capability): new function * libhal/libhal.c (hal_free_string_array): Fixed critical bug (hal_device_add_capability): Use new method on hal daemon instead of local modification (filter_func): Fix bug such that signals DeviceAdded and DeviceRemoved are intercepted on the Manager interface. Add check for NewCapability signal. (main): More precise match rule for intercepting signals * libhal/libhal.h: Add NewCapability callback * tools/device-manager/DeviceManager.py: Fix a stupid bug where we tried to call a get_current_focus_udi() method that is no more 2003-12-03 David Zeuthen * agents/linux26/sysfs/hal_net.c (visit_class_device_net): Change mac address to be split into two 24-bit sizes. s/ethernet/net.ethernet/ * libhal/libhal.c (hal_find_all_devices): Put trailing NULL in result (hal_manager_find_device_string_match): Put trailing NULL in result (hal_find_device_by_capability): Put trailing NULL in result * tools/device-manager/hal-device-manager/Representation.y: Simplify icon selection code 2003-12-03 David Zeuthen * tools/device-manager: new directory with tools/hal-device-manager split into many files * agents/linux26/sysfs/hal_block.c (visit_device_block): Set Capability and Category properties * agents/linux26/sysfs/hal_input.c (get_input_proc_cur_info_obj): new function (process_input_proc_info): Set Capability and Category properties * agents/linux26/sysfs/hal_monitor.c (etc_mtab_process_all_block_devices): Set some properties under the volume namespace * agents/linux26/sysfs/hal_net.c (visit_class_device_net): Set Capability and Category properties; set MAC address under namespace ethernet for Ethernet net devices * agents/linux26/sysfs/hal_pci.c (visit_device_pci): Set Capability and Category properties (pci_add_caps_from_class): new function * agents/linux26/sysfs/hal_usb.c (visit_device_usb_interface): Set Capability and Category properties (usb_add_caps_from_class): new function * hald/main.c (manager_find_device_by_capability): new function (filter_function): Add call * libhal/libhal.c (hal_get_all_devices): Convert from d-bus string array. (hal_manager_find_device_string_match): Convert from d-bus string array. (hal_device_add_capability): new function (hal_device_query_capability): new function (hal_find_device_by_capability): new function * libhal/libhal.h: Add prototypes 2003-12-01 David Zeuthen * agents/linux26/sysfs/hal_monitor.c: new file, the /etc/mtab monitoring code is still a bit cheesy (especially the sleep(1) :-) Someone with more linux-skills will hopefully rewrite it some day! * agents/linux26/sysfs/hal_monitor.h: new file * agents/linux26/sysfs/hal_usb.c (visit_device_usb): Fixed potential bug for whitespace-strip loop * agents/linux26/sysfs/main.c (hal_sysfs_probe): Call etc_mtab_process_all_block_devices() to inspect /etc/mtab and set correct information for the block devices that is already mounted (main): Add new option --monitor to start in monitoring mode. Right now only /etc/mtab is monitored but network link detection is planned. * tools/hal-device-manager: Don't rebuild entire tree if properties on a device is changing but just get the changes from hald and change the internal representation. Helps performance a lot. 2003-11-30 David Zeuthen * agents/linux26/sysfs/hal_net.c: new file * agents/linux26/sysfs/hal_net.h: new file * agents/linux26/sysfs/hal_input.c: new file * agents/linux26/sysfs/hal_input.h: new file * agents/linux26/sysfs/Makefile.am: Add net and input to filelist * agents/linux26/sysfs/hal_pci.c (visit_device_pci): Set driver property. (hal_pci_init): Collect drivers * agents/linux26/sysfs/hal_usb.c (visit_device_usb): Set driver property. Compute and set linux.kernel_devname; the name that the kernel uses to uniquely identify the device (visit_device_usb_interface): Set driver property (hal_usb_init): Collect drivers * agents/linux26/sysfs/main.c (find_num): Gracefully handle errors (find_udi_from_sysfs_path): allow max_time_to_try to be zero (find_udi_by_key_value): new function (visit_class_device): support for net class devices (hal_sysfs_probe): support for net class devices (device_hotplug_add): support for input and net class (device_hotplug_remove): support for input and net class devices (drivers_add_entry): new function (drivers_lookup): new function (drivers_collect): new function (main): support for input and net class devices * agents/linux26/sysfs/main.h: Add new prototypes * tools/hal-device-manager: Fix a bug that slowed down the app when the devices are changing. Many other changes * tools/hal-device-manager.glade: Add menu and gnome-app * tools/fdo-logo.png: new (binary) file 2003-11-27 David Zeuthen * libhal/libhal.c (hal_initialized): Fixed stupied error that prevented libhal from compiling 2003-11-27 David Zeuthen * agents/linux26/sysfs/hal-sysfs-agent.c: Removed; splitted into multiple files; added scsi, ide and block probing + hotplugging; many many changes.. * agents/linux26/sysfs/main.c: new file * agents/linux26/sysfs/main.h: new file * agents/linux26/sysfs/hal_usb.c: new file * agents/linux26/sysfs/hal_usb.h: new file * agents/linux26/sysfs/hal_pci.c: new file * agents/linux26/sysfs/hal_pci.h: new file * agents/linux26/sysfs/hal_ide.c: new file * agents/linux26/sysfs/hal_ide.h: new file * agents/linux26/sysfs/hal_scsi.c: new file * agents/linux26/sysfs/hal_scsi.h: new file * agents/linux26/sysfs/hal_block.c: new file * agents/linux26/sysfs/hal_block.h: new file * agents/linux26/sysfs/Makefile.am: Changed to reference new files * fdi/10generic/generic-hid-mouse.fdi: remove * fdi/10generic/generic-usb-hub.fdi: remove * fdi/10generic/usb-classes.fdi: new file * hald/device_info.c: Add support for bool in fdi-files * libhal/libhal.c: Allow caller to pass NULL in libhal_init() * tools/hal-device-manager: Don't show (most) virtual devices 2003-11-23 David Zeuthen * agents/linux26/sysfs/hal-sysfs-agent.c: USB interfaces now have their own device which has the USB device as the parent (usbif_compute_udi): new function (visit_device_usb_interface): create a new independent device for the interface * tools/hal-device-manager: Add support for bus usbif 2003-11-23 David Zeuthen * agents/linux26/sysfs/hal-sysfs-agent.c: (usb_compute_udi): Make the device configuration entry part of the device udi; use serial number, if available. (find_usb_device_from_interface_sysfs_path): new function (visit_device_usb_interface): Bugfix in white-space stripping (visit_device): Make visit of children optional (device_hotplug_add): Don't visit children when adding devices; handle interfaces seperately. Consequently the interfaces appear later. Added syslog calls. NOTE: Need to wait for enabling an USB device until all interfaces are collected. (device_hotplug_remove): Added syslog calls (main): Moved hotplug call after getopt switch, and handle all sorts of events. * tools/hal-device-manager: Call update_device_list() whenever a property changes; this is quite ineffective and should be changed later. 2003-11-22 David Zeuthen * COPYING: Updated to mention some source files may be LGPL also * Doxyfile: Updated to use doxygen 1.3.4 * Doxyfile.in: Updated to use doxygen 1.3.4 * configure.in: Don't build agents/linux/usb/Makefile; we've dropped 2.4 support. Build agents/linux26/sysfs/libsysfs/Makefile * agents/Makefile.am: Don't build in agents/linux * agents/linux26/sysfs/Makefile.am : Build in libsysfs * agents/linux26/sysfs/hal-sysfs-agent.c: Now using sysfsutils 0.3 (bus_support_append_device): removed (bus_support_find_bus): removed (visit_device_usb_interface): Don't require device UDI to be given; find it self (visit_device_usb): Don't manually visit USB interfaces (visit_device): Change to recursively visit children in device hierachy (visit_device_tree): removed (visit_root_device): removed (bus_support_collect): removed; not neccesary with sysfsutils 0.3 since we can get the bus from there * agents/linux26/sysfs/libsysfs: New directory for holding local copy of sysfsutils 0.3. * agents/linux26/sysfs/libsysfs/Makefile.am : new file * agents/linux26/sysfs/libsysfs/dlist.c : new file * agents/linux26/sysfs/libsysfs/dlist.h : new file * agents/linux26/sysfs/libsysfs/libsysfs.h : new file * agents/linux26/sysfs/libsysfs/sysfs.h : new file * agents/linux26/sysfs/libsysfs/sysfs_bus.c : new file * agents/linux26/sysfs/libsysfs/sysfs_class.c : new file * agents/linux26/sysfs/libsysfs/sysfs_device.c : new file * agents/linux26/sysfs/libsysfs/sysfs_dir.c : new file * agents/linux26/sysfs/libsysfs/sysfs_driver.c : new file * agents/linux26/sysfs/libsysfs/sysfs_utils.c : new file * agents/linux26/sysfs/libsysfs/ : new file 2003-11-22 David Zeuthen * agents/linux26/sysfs/hal-sysfs-agent.c: Implementing parsing of /proc/bus/usb/devices to merge information currently not present in sysfs. Quite a pain, but it seems to work... Still need some cleanup though (find_num): new function (find_double): new function (find_bcd2): new function (find_string): new function (usb_proc_find_virtual_hub): new function (usb_proc_find_virtual_hub_child): new function (usb_proc_find_on_hub): new function (usb_proc_handle_topology): new function (usb_proc_handle_device_info): new function (usb_proc_device_done): new function (usb_proc_parse_line): new function (usb_proc_parse): new function (visitor_usb_device): Locate and merge properties from /proc (main): Parse USB stuff from /proc/bus/usb/devices * tools/hal-device-manager: Add USB version * tools/hal-device-manager.glade: Add USB version 2003-11-18 David Zeuthen * agents/linux26/sysfs/hal-sysfs-agent.c: Use usb.ids if available. (find_parent_udi_from_sysfs_path): Sleep if parent device not found on hotplug; Fixes the issue of hotplugging a hub with many devices attached to it (visit_device_usb): Fix segfault when stripping whitespace off empty string. Provide guess for Vendor, Product properties (visit_device_pci): Provide guess for Vendor, Product properties * hald/main.c (manager_get_all_devices): Only return devices in the GDL (manager_find_device_string_match): Only match on devices in the GDL * libhal/libhal.c: Various documentation clarifications * tools/hal-device-manager: Use icons and Vendor, Product properties. Added "Advanced" tab page for showing all properties in a list. * tools/hal-device-manager.glade: Added "Advanced" tab page for showing all properties in a list. * tools/bus-usb.png: new (binary) file * tools/bus-pci.png: new (binary) file * tools/lshal.py: Sort properties 2003-11-16 David Zeuthen * agents/linux26 : new directory; for Linux 2.6 agents * agents/linux26/Makefile.am: new file * agents/linux26/sysfs/hal-sysfs-agent.c: new file; inspects sysfs on Linux 2.6 and adds USB, PCI devices found there. Currently works with both --probe and in hotplug situations. Block devices are planned real soon now. * agents/linux26/sysfs/Makefile.am: new file * tools/hal-device-manager: Added support for PCI devices * tools/hal-device-manager.glade: Added PCI page in device_notebook * libhal/libhal.h: Added hal_manager_find_device_string_match() * libhal/libhal.c (hal_manager_find_device_string_match): new function * hald/main.c (manager_find_device_string_match): new function * configure.in: add agents/linux26/Makefile, agents/linux26/Makefile * Doxyfile.in: add agents/linux26/sysfs * Doxyfile: add agents/linux26/sysfs 2003-11-15 David Zeuthen * agents/linux/usb/usb_agent.c (usb_compute_parents): Remove calls to free(); we are causing segfaults because of we are interferring with D-BUS memory management (usb_compute_parent): Remove calls to free(); same reason (usb_probe): Call usb_compute_parents() (usb_hotplug): Remove calls to free(); same as above; compute parents for all USB devices every time a single device is added/removed (main): Sleep for one second before handling hotplug event to allow the kernel to update /proc/bus/usb/devices * hald/device_info.h: new file * hald/device_info.c: new file * hald/Makefile.am: add device_info.[ch] * hald/device_store.h: Change signature of HalDevicePropertyChangeCallback with an added parameter to allow the callback handler to see if a device have been added * hald/device_store.c: Change to new signature of property_change_cb * hald/logger.h: Don't print LOG_TRACE() * hald/main.c (device_enable): Call di_search_and_merge() to handle .fdi files (agent_manager_commit_to_gdl): Call ds_gdl_add() (filter_func): Don't log entry on every method invocation (property_changed): Implement * tools/hal-device-manager: Use Product, Vendor, Category properties to display information, if available. Handle property changed; reloads device tree when a Parent property changes. Subscribe to signals org.freedesktop.Hal.Device interface to catch property changes * tools/lshal.py: Listen to property changes on device objects * fdi: new directory * fdi/10generic: new directory * fdi/20freedesktop: new directory * fdi/10generic/generic-usb-hub.fdi: new file * fdi/10generic/generic-hid-mouse.fdi: new file * fdi/20freedesktop/ibm-usb-hub-keyboard.fdi: new file * fdi/20freedesktop/lexar-cf-card-reader.fdi: new file 2003-11-11 David Zeuthen * Doxyfile: new file, added so we can generate doxygen documentation without having to run autogen.sh 2003-11-11 David Zeuthen * tools/hal-device-manager: new file, GUI device manager using PyGTK * tools/hal-device-manager.glade: new file * agents/linux/usb/Makefile.am: rename program to hal-usb-agent.hotplug so it works with the linux-hotplug event multiplexor * agents/linux/usb/usb_agent.c (usb_hotplug): implement (handle_device_info2): drop usb.revisionProduct; use usb.bcdDevice instead (handle_config_desc): set usb.config.%d.isActive property (usb_compute_parent): new function (usb_rename_and_maybe_add): new function (usb_hotplug_get_minimal): new function * hald/main.c (manager_send_signal_device_added): new function (manager_send_signal_device_removed): new function (agent_manager_commit_to_gdl): send out signal using above function (agent_manager_remove): send out signal using above function (test): removed * libhal/libhal.c (hal_device_print): new function * libhal/libhal.h: add prototype for hal_device_print() * tools/lshal.py: print device types, reprint device list when receiving D-BUS signals from the HAL daemon 2003-11-09 David Zeuthen * agents/linux/usb/usb_agent.c (usage): Fixed typo from --remove to --probe. Cosmetic (usb_device_set_parent): New function (usb_compute_parents): New function (usb_probe): Set Parent for devices after probe and filtering/renaming * hald/device_store.h: ds_device_destroy now returns void * hald/device_store.c (ds_device_destroy): now return void * libhal/libhal.c: Tidied up error reporting to be __FILE__ __LINE__ * COPYING: New file 2003-11-08 David Zeuthen * HACKING: Fixed typo 2003-11-06 David Zeuthen * hal.conf: Changed to work with D-BUS head 2003-11-05 David Zeuthen * Initial module creation; moved HAL 0.1 out of the way