summaryrefslogtreecommitdiff
path: root/src/basic/ordered-set.c
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2021-03-13 15:57:55 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2021-03-14 00:39:05 +0900
commitcf45350745ef02b80378761dcccf4e9744ef839a (patch)
treedc1376926a36e85e31932922d66d168d3aed7edb /src/basic/ordered-set.c
parent95ba433a5f34baf92921fb58051bc8241f908c0e (diff)
downloadsystemd-cf45350745ef02b80378761dcccf4e9744ef839a.tar.gz
ordered-set: make ordered_set_put_strdup() allocate OrderedSet object
For consistency with set_put_strdup().
Diffstat (limited to 'src/basic/ordered-set.c')
-rw-r--r--src/basic/ordered-set.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/basic/ordered-set.c b/src/basic/ordered-set.c
index 58fa8af1b7..0a76f04561 100644
--- a/src/basic/ordered-set.c
+++ b/src/basic/ordered-set.c
@@ -35,30 +35,33 @@ int ordered_set_consume(OrderedSet *s, void *p) {
return r;
}
-int ordered_set_put_strdup(OrderedSet *s, const char *p) {
+int _ordered_set_put_strdup(OrderedSet **s, const char *p HASHMAP_DEBUG_PARAMS) {
char *c;
int r;
assert(s);
assert(p);
+ r = _ordered_set_ensure_allocated(s, &string_hash_ops_free HASHMAP_DEBUG_PASS_ARGS);
+ if (r < 0)
+ return r;
+
+ if (ordered_set_contains(*s, p))
+ return 0;
+
c = strdup(p);
if (!c)
return -ENOMEM;
- r = ordered_set_consume(s, c);
- if (r == -EEXIST)
- return 0;
-
- return r;
+ return ordered_set_consume(*s, c);
}
-int ordered_set_put_strdupv(OrderedSet *s, char **l) {
+int _ordered_set_put_strdupv(OrderedSet **s, char **l HASHMAP_DEBUG_PARAMS) {
int n = 0, r;
char **i;
STRV_FOREACH(i, l) {
- r = ordered_set_put_strdup(s, *i);
+ r = _ordered_set_put_strdup(s, *i HASHMAP_DEBUG_PASS_ARGS);
if (r < 0)
return r;
@@ -68,7 +71,7 @@ int ordered_set_put_strdupv(OrderedSet *s, char **l) {
return n;
}
-int ordered_set_put_string_set(OrderedSet *s, OrderedSet *l) {
+int ordered_set_put_string_set(OrderedSet **s, OrderedSet *l) {
int n = 0, r;
char *p;