summaryrefslogtreecommitdiffstats
path: root/src/udev/udevadm-info.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-12-13 22:25:03 +0100
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-12-14 13:50:02 +0100
commit3a90bef55a5a71a03629a762470b0f9014cd8453 (patch)
tree97c37bdc285163d1a4f6d71a760b10178d0f4c6e /src/udev/udevadm-info.c
parentsd-device: make FOREACH_DEVICE_SYSATTR() also list write-only attributes (diff)
downloadsystemd-3a90bef55a5a71a03629a762470b0f9014cd8453.tar.xz
systemd-3a90bef55a5a71a03629a762470b0f9014cd8453.zip
udevadm: also show write-only attributes
Diffstat (limited to '')
-rw-r--r--src/udev/udevadm-info.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c
index 84f7794e86..1c5cec86b8 100644
--- a/src/udev/udevadm-info.c
+++ b/src/udev/udevadm-info.c
@@ -73,6 +73,7 @@ static int print_all_attributes(sd_device *device, bool is_parent) {
_cleanup_free_ SysAttr *sysattrs = NULL;
const char *name, *value;
size_t n_items = 0;
+ int r;
value = NULL;
(void) sd_device_get_devpath(device, &value);
@@ -96,18 +97,22 @@ static int print_all_attributes(sd_device *device, bool is_parent) {
if (skip_attribute(name))
continue;
- if (sd_device_get_sysattr_value(device, name, &value) < 0)
- continue;
+ r = sd_device_get_sysattr_value(device, name, &value);
+ if (r >= 0) {
+ /* skip any values that look like a path */
+ if (value[0] == '/')
+ continue;
- /* skip any values that look like a path */
- if (value[0] == '/')
- continue;
+ /* skip nonprintable attributes */
+ len = strlen(value);
+ while (len > 0 && isprint((unsigned char) value[len-1]))
+ len--;
+ if (len > 0)
+ continue;
- /* skip nonprintable attributes */
- len = strlen(value);
- while (len > 0 && isprint((unsigned char) value[len-1]))
- len--;
- if (len > 0)
+ } else if (r == -EPERM)
+ value = "(write-only)";
+ else
continue;
if (!GREEDY_REALLOC(sysattrs, n_items + 1))