Ok, I'll try my luck with git send-email then. I was unaware of this gmail-oddity. Sorry about that.
Any ideas, why lubudev consideres so many things as attributes ? Cheers, Andreas 2014-02-14 1:07 GMT+01:00 Lennart Poettering <lenn...@poettering.net>: > On Mon, 13.01.14 21:19, Andreas Fuchs (andu...@gmail.com) wrote: > > > For gudev -> gudevdevice: > > - Add support for get_sysfs_attr_keys() > > - Add support for has_sysfs_attr() > > > > Note: Only tested against systemd-204 on Ubuntu 13.10's patch-set... > > RFC1: For some reason libudev cosiders every link or file as sysfs > > attribute (opposed to udevadm). Is this intended ? > > RFC2: Since this is my first patch, please comment on any changes it > needs > > and I'll iterate. Thank you... > > Hmm, so this certainly looks useful, given that the low-level libudev > API supports something like this. > > Your patch is broken though, it got line-wrapper by your mailer? > > Kay, what's the deal with patches for gudev? Are you looking after this? > I wonder if David is still maintaining it? > > > > > Signed-off-by: Andreas Fuchs <andu...@gmail.com> > > --- > > src/gudev/gudevdevice.c | 53 > > +++++++++++++++++++++++++++++++++++++++++++++++++ > > src/gudev/gudevdevice.h | 3 +++ > > 2 files changed, 56 insertions(+) > > > > diff --git a/src/gudev/gudevdevice.c b/src/gudev/gudevdevice.c > > index 6c9e0f5..2c768b7 100644 > > --- a/src/gudev/gudevdevice.c > > +++ b/src/gudev/gudevdevice.c > > @@ -59,6 +59,8 @@ > > * g_udev_device_get_property_as_strv(). > > * > > * To access sysfs attributes for the device, use > > + * g_udev_device_get_sysfs_attr_keys(), > > + * g_udev_device_has_sysfs_attr(), > > * g_udev_device_get_sysfs_attr(), > > * g_udev_device_get_sysfs_attr_as_int(), > > * g_udev_device_get_sysfs_attr_as_uint64(), > > @@ -84,6 +86,7 @@ struct _GUdevDevicePrivate > > /* computed ondemand and cached */ > > gchar **device_file_symlinks; > > gchar **property_keys; > > + gchar **sysfs_attr_keys; > > gchar **tags; > > GHashTable *prop_strvs; > > GHashTable *sysfs_attr_strvs; > > @@ -98,6 +101,7 @@ g_udev_device_finalize (GObject *object) > > > > g_strfreev (device->priv->device_file_symlinks); > > g_strfreev (device->priv->property_keys); > > + g_strfreev (device->priv->sysfs_attr_keys); > > g_strfreev (device->priv->tags); > > > > if (device->priv->udevice != NULL) > > @@ -699,6 +703,55 @@ out: > > /* > > > ---------------------------------------------------------------------------------------------------- > > */ > > > > /** > > + * g_udev_device_get_sysfs_attr_keys: > > + * @device: A #GUdevDevice. > > + * > > + * Gets all keys for sysfs attributes on @device. > > + * > > + * Returns: (transfer none) (array zero-terminated=1) (element-type > utf8): > > A %NULL terminated string array of sysfs attribute keys. This array is > > owned by @device and should not be freed by the caller. > > + */ > > +const gchar * const * > > +g_udev_device_get_sysfs_attr_keys (GUdevDevice *device) > > +{ > > + struct udev_list_entry *l; > > + GPtrArray *p; > > + > > + g_return_val_if_fail (G_UDEV_IS_DEVICE (device), NULL); > > + > > + if (device->priv->sysfs_attr_keys != NULL) > > + goto out; > > + > > + p = g_ptr_array_new (); > > + for (l = udev_device_get_sysattr_list_entry (device->priv->udevice); l > > != NULL; l = udev_list_entry_get_next (l)) > > + { > > + g_ptr_array_add (p, g_strdup (udev_list_entry_get_name (l))); > > + } > > + g_ptr_array_add (p, NULL); > > + device->priv->sysfs_attr_keys = (gchar **) g_ptr_array_free (p, > FALSE); > > + > > + out: > > + return (const gchar * const *) device->priv->sysfs_attr_keys; > > +} > > + > > +/** > > + * g_udev_device_has_sysfs_attr: > > + * @device: A #GUdevDevice. > > + * @key: Name of sysfs attribute. > > + * > > + * Check if a the sysfs attribute with the given key exists. > > + * > > + * Returns: %TRUE only if the value for @key exist. > > + */ > > +gboolean > > +g_udev_device_has_sysfs_attr (GUdevDevice *device, > > + const gchar *key) > > +{ > > + g_return_val_if_fail (G_UDEV_IS_DEVICE (device), FALSE); > > + g_return_val_if_fail (key != NULL, FALSE); > > + return udev_device_get_sysattr_value (device->priv->udevice, key) != > > NULL; > > +} > > + > > +/** > > * g_udev_device_get_sysfs_attr: > > * @device: A #GUdevDevice. > > * @name: Name of the sysfs attribute. > > diff --git a/src/gudev/gudevdevice.h b/src/gudev/gudevdevice.h > > index 457b961..72ec180 100644 > > --- a/src/gudev/gudevdevice.h > > +++ b/src/gudev/gudevdevice.h > > @@ -108,6 +108,9 @@ gboolean > > g_udev_device_get_property_as_boolean (GUdevDevice *devic > > const gchar* const *g_udev_device_get_property_as_strv (GUdevDevice > > *device, > > const gchar > > *key); > > > > +const gchar* const *g_udev_device_get_sysfs_attr_keys (GUdevDevice > > *device); > > +gboolean g_udev_device_has_sysfs_attr (GUdevDevice > > *device, > > + const gchar > > *key); > > const gchar *g_udev_device_get_sysfs_attr (GUdevDevice > > *device, > > const gchar > > *name); > > gint g_udev_device_get_sysfs_attr_as_int (GUdevDevice > > *device, > > > _______________________________________________ > > systemd-devel mailing list > > systemd-devel@lists.freedesktop.org > > http://lists.freedesktop.org/mailman/listinfo/systemd-devel > > > > Lennart > > -- > Lennart Poettering, Red Hat >
_______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel