// Properties retrieves a map[string]string of key/value device properties of the udev device. func (d *Device) Properties() (r map[string]string) { d.lock() defer d.unlock() r = make(map[string]string) for l := C.udev_device_get_properties_list_entry(d.ptr); l != nil; l = C.udev_list_entry_get_next(l) { r[C.GoString(C.udev_list_entry_get_name(l))] = C.GoString(C.udev_list_entry_get_value(l)) } return }
// PropertyIterator returns an Iterator over the key/value device properties of the udev device. // The Iterator is using the github.com/jkeiser/iter package. // Values are returned as an interface{} and should be cast to []string, // which will have length 2 and represent a Key/Value pair. func (d *Device) PropertyIterator() iter.Iterator { d.lock() defer d.unlock() l := C.udev_device_get_properties_list_entry(d.ptr) return iter.Iterator{ Next: func() (item interface{}, err error) { d.lock() defer d.unlock() if l != nil { item = []string{ C.GoString(C.udev_list_entry_get_name(l)), C.GoString(C.udev_list_entry_get_value(l)), } l = C.udev_list_entry_get_next(l) } else { err = iter.FINISHED } return }, Close: func() { }, } }
func (l ListEntry) Value() string { return C.GoString(C.udev_list_entry_get_value(l.ptr)) }