return r;
}
-int split_pair(const char *s, const char *sep, char **l, char **r) {
- char *x, *a, *b;
-
+int split_pair(const char *s, const char *sep, char **ret_first, char **ret_second) {
assert(s);
- assert(sep);
- assert(l);
- assert(r);
-
- if (isempty(sep))
- return -EINVAL;
+ assert(!isempty(sep));
+ assert(ret_first);
+ assert(ret_second);
- x = strstr(s, sep);
+ const char *x = strstr(s, sep);
if (!x)
return -EINVAL;
- a = strndup(s, x - s);
+ _cleanup_free_ char *a = strndup(s, x - s);
if (!a)
return -ENOMEM;
- b = strdup(x + strlen(sep));
- if (!b) {
- free(a);
+ _cleanup_free_ char *b = strdup(x + strlen(sep));
+ if (!b)
return -ENOMEM;
- }
-
- *l = a;
- *r = b;
+ *ret_first = TAKE_PTR(a);
+ *ret_second = TAKE_PTR(b);
return 0;
}
_d_; \
})
-int split_pair(const char *s, const char *sep, char **l, char **r);
+int split_pair(const char *s, const char *sep, char **ret_first, char **ret_second);
int free_and_strdup(char **p, const char *s);
static inline int free_and_strdup_warn(char **p, const char *s) {
TEST(split_pair) {
_cleanup_free_ char *a = NULL, *b = NULL;
- assert_se(split_pair("", "", &a, &b) == -EINVAL);
- assert_se(split_pair("foo=bar", "", &a, &b) == -EINVAL);
- assert_se(split_pair("", "=", &a, &b) == -EINVAL);
- assert_se(split_pair("foo=bar", "=", &a, &b) >= 0);
+ ASSERT_SIGNAL(split_pair("", NULL, &a, &b), SIGABRT);
+ ASSERT_SIGNAL(split_pair("", "", &a, &b), SIGABRT);
+ ASSERT_SIGNAL(split_pair("foo=bar", "", &a, &b), SIGABRT);
+ ASSERT_SIGNAL(split_pair(NULL, "=", &a, &b), SIGABRT);
+ ASSERT_ERROR(split_pair("", "=", &a, &b), EINVAL);
+ ASSERT_OK(split_pair("foo=bar", "=", &a, &b));
ASSERT_STREQ(a, "foo");
ASSERT_STREQ(b, "bar");
- free(a);
- free(b);
- assert_se(split_pair("==", "==", &a, &b) >= 0);
+ a = mfree(a);
+ b = mfree(b);
+ ASSERT_OK(split_pair("==", "==", &a, &b));
ASSERT_STREQ(a, "");
ASSERT_STREQ(b, "");
- free(a);
- free(b);
-
- assert_se(split_pair("===", "==", &a, &b) >= 0);
+ a = mfree(a);
+ b = mfree(b);
+ ASSERT_OK(split_pair("===", "==", &a, &b));
ASSERT_STREQ(a, "");
ASSERT_STREQ(b, "=");
}