ssize_t string_table_lookup(const char * const *table, size_t len, const char *key) {
if (!key)
- return -1;
+ return -EINVAL;
for (size_t i = 0; i < len; ++i)
if (streq_ptr(table[i], key))
return (ssize_t) i;
- return -1;
+ return -EINVAL;
}
#define _DEFINE_STRING_TABLE_LOOKUP_FROM_STRING_WITH_BOOLEAN(name,type,yes,scope) \
scope type name##_from_string(const char *s) { \
if (!s) \
- return -1; \
+ return -EINVAL; \
int b = parse_boolean(s); \
if (b == 0) \
return (type) 0; \
unsigned u = 0; \
type i; \
if (!s) \
- return (type) -1; \
+ return -EINVAL; \
i = (type) string_table_lookup(name##_table, ELEMENTSOF(name##_table), s); \
if (i >= 0) \
return i; \
- if (safe_atou(s, &u) >= 0 && u <= max) \
- return (type) u; \
- return (type) -1; \
- } \
+ if (safe_atou(s, &u) < 0) \
+ return -EINVAL; \
+ if (u > max) \
+ return -EINVAL; \
+ return (type) u; \
+ }
#define _DEFINE_STRING_TABLE_LOOKUP(name,type,scope) \
_DEFINE_STRING_TABLE_LOOKUP_TO_STRING(name,type,scope) \
if (i >= 0 && i < size) {
if (sparse)
- assert_se(rev == i || rev == -1);
+ assert_se(rev == i || rev == -EINVAL);
else
assert_se(val != NULL && rev == i);
} else
- assert_se(val == NULL && rev == -1);
+ assert_se(val == NULL && rev == -EINVAL);
}
}
test_ioprio_class_from_to_string_one("1", 1);
test_ioprio_class_from_to_string_one("7", 7);
test_ioprio_class_from_to_string_one("8", 8);
- test_ioprio_class_from_to_string_one("9", -1);
- test_ioprio_class_from_to_string_one("-1", -1);
+ test_ioprio_class_from_to_string_one("9", -EINVAL);
+ test_ioprio_class_from_to_string_one("-1", -EINVAL);
}
static void test_setpriority_closest(void) {
assert_se(setrlimit(RLIMIT_NOFILE, &new) >= 0);
assert_se(rlimit_from_string("NOFILE") == RLIMIT_NOFILE);
- assert_se(rlimit_from_string("LimitNOFILE") == -1);
- assert_se(rlimit_from_string("RLIMIT_NOFILE") == -1);
- assert_se(rlimit_from_string("xxxNOFILE") == -1);
- assert_se(rlimit_from_string("DefaultLimitNOFILE") == -1);
+ assert_se(rlimit_from_string("LimitNOFILE") == -EINVAL);
+ assert_se(rlimit_from_string("RLIMIT_NOFILE") == -EINVAL);
+ assert_se(rlimit_from_string("xxxNOFILE") == -EINVAL);
+ assert_se(rlimit_from_string("DefaultLimitNOFILE") == -EINVAL);
assert_se(rlimit_from_string_harder("NOFILE") == RLIMIT_NOFILE);
assert_se(rlimit_from_string_harder("LimitNOFILE") == RLIMIT_NOFILE);
assert_se(rlimit_from_string_harder("RLIMIT_NOFILE") == RLIMIT_NOFILE);
- assert_se(rlimit_from_string_harder("xxxNOFILE") == -1);
- assert_se(rlimit_from_string_harder("DefaultLimitNOFILE") == -1);
+ assert_se(rlimit_from_string_harder("xxxNOFILE") == -EINVAL);
+ assert_se(rlimit_from_string_harder("DefaultLimitNOFILE") == -EINVAL);
for (i = 0; i < _RLIMIT_MAX; i++) {
_cleanup_free_ char *prefixed = NULL;