Merge pull request #21763 from yuwata/udevadm-write-only-attributes

udevadm: also show write-only attributes
This commit is contained in:
Zbigniew Jędrzejewski-Szmek 2021-12-15 13:22:45 +01:00 committed by GitHub
commit 05c1b1c95e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 11 deletions

View file

@ -1812,7 +1812,7 @@ static int device_sysattrs_read_all_internal(sd_device *device, const char *subd
if (lstat(path, &statbuf) != 0)
continue;
if (!(statbuf.st_mode & S_IRUSR))
if ((statbuf.st_mode & (S_IRUSR | S_IWUSR)) == 0)
continue;
r = set_put_strdup(&device->sysattrs, p ?: dent->d_name);

View file

@ -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))