diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-12-14 06:25:03 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-12-14 21:50:02 +0900 |
commit | 3a90bef55a5a71a03629a762470b0f9014cd8453 (patch) | |
tree | 97c37bdc285163d1a4f6d71a760b10178d0f4c6e /src | |
parent | ab218d0bdb11e70878907e1139c90b8e48f51e2d (diff) | |
download | systemd-3a90bef55a5a71a03629a762470b0f9014cd8453.tar.gz |
udevadm: also show write-only attributes
Diffstat (limited to 'src')
-rw-r--r-- | src/udev/udevadm-info.c | 25 |
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)) |