[libgudev/wip/hadess/uncached-bools: 2/3] gudev: Ignore trailing linefeeds in sysfs attr
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgudev/wip/hadess/uncached-bools: 2/3] gudev: Ignore trailing linefeeds in sysfs attr
- Date: Tue, 16 Mar 2021 10:05:18 +0000 (UTC)
commit 31e31d5250b59cb91ac4580572c67b321dc7269d
Author: Bastien Nocera <hadess hadess net>
Date: Tue Mar 16 10:57:35 2021 +0100
gudev: Ignore trailing linefeeds in sysfs attr
sysfs attributes which contain text will almost always contain a '\n' at
the end so that they can be cat'ed cleanly from the shell.
Fix g_udev_device_get_sysfs_attr_as_boolean to take this into account by
cutting off the string before the first '\n' if it is present.
Closes: #7
gudev/gudevdevice.c | 21 ++++++++++++++++++---
1 file changed, 18 insertions(+), 3 deletions(-)
---
diff --git a/gudev/gudevdevice.c b/gudev/gudevdevice.c
index e14f367..27ffc52 100644
--- a/gudev/gudevdevice.c
+++ b/gudev/gudevdevice.c
@@ -896,6 +896,17 @@ out:
return result;
}
+static char *
+truncate_at_linefeed (const char *value)
+{
+ const char *p;
+
+ p = strchr (value, '\n');
+ if (!p)
+ return NULL;
+ return g_strndup (value, p - value);
+}
+
/**
* g_udev_device_get_sysfs_attr_as_boolean:
* @device: A #GUdevDevice.
@@ -916,16 +927,20 @@ g_udev_device_get_sysfs_attr_as_boolean (GUdevDevice *device,
const gchar *name)
{
gboolean result;
- const gchar *s;
+ const gchar *raw;
+ g_autofree char *truncated = NULL;
+ const char *s;
g_return_val_if_fail (G_UDEV_IS_DEVICE (device), FALSE);
g_return_val_if_fail (name != NULL, FALSE);
result = FALSE;
- s = g_udev_device_get_sysfs_attr (device, name);
- if (s == NULL)
+ raw = g_udev_device_get_sysfs_attr (device, name);
+ if (raw == NULL)
goto out;
+ truncated = truncate_at_linefeed (raw);
+ s = truncated ?: raw;
if (strcmp (s, "1") == 0 ||
g_ascii_strcasecmp (s, "true") == 0 ||
g_ascii_strcasecmp (s, "y") == 0) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]