sd-device: introduce device_get_sysnum_unsigned()
This commit is contained in:
@@ -18,6 +18,7 @@ int device_new_from_strv(sd_device **ret, char **strv);
|
||||
|
||||
int device_opendir(sd_device *device, const char *subdir, DIR **ret);
|
||||
|
||||
int device_get_sysnum_unsigned(sd_device *device, unsigned *ret);
|
||||
int device_get_property_bool(sd_device *device, const char *key);
|
||||
int device_get_property_int(sd_device *device, const char *key, int *ret);
|
||||
int device_get_sysattr_int(sd_device *device, const char *sysattr, int *ret_value);
|
||||
|
||||
@@ -1445,6 +1445,26 @@ _public_ int sd_device_get_sysnum(sd_device *device, const char **ret) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int device_get_sysnum_unsigned(sd_device *device, unsigned *ret) {
|
||||
int r;
|
||||
|
||||
assert(device);
|
||||
|
||||
const char *s;
|
||||
r = sd_device_get_sysnum(device, &s);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
unsigned n;
|
||||
r = safe_atou_full(s, SAFE_ATO_REFUSE_PLUS_MINUS | SAFE_ATO_REFUSE_LEADING_WHITESPACE | 10, &n);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (ret)
|
||||
*ret = n;
|
||||
return 0;
|
||||
}
|
||||
|
||||
_public_ int sd_device_get_action(sd_device *device, sd_device_action_t *ret) {
|
||||
assert_return(device, -EINVAL);
|
||||
|
||||
|
||||
@@ -182,6 +182,8 @@ static void test_sd_device_one(sd_device *d) {
|
||||
assert_se(val < sysname + strlen(sysname));
|
||||
assert_se(in_charset(val, DIGITS));
|
||||
assert_se(!ascii_isdigit(val[-1]));
|
||||
r = device_get_sysnum_unsigned(d, NULL);
|
||||
ASSERT_TRUE(r >= 0 || r == -ERANGE); /* sysnum may be too large. */
|
||||
} else
|
||||
assert_se(r == -ENOENT);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user