]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/basic/set.c
tree-wide: drop license boilerplate
[thirdparty/systemd.git] / src / basic / set.c
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 /***
3 This file is part of systemd.
4
5 Copyright 2017 Lennart Poettering
6 ***/
7
8 #include "alloc-util.h"
9 #include "set.h"
10
11 int set_make(Set **ret, const struct hash_ops *hash_ops HASHMAP_DEBUG_PARAMS, void *add, ...) {
12 _cleanup_set_free_ Set *s = NULL;
13 int r;
14
15 assert(ret);
16
17 s = set_new(hash_ops HASHMAP_DEBUG_PASS_ARGS);
18 if (!s)
19 return -ENOMEM;
20
21 if (add) {
22 va_list ap;
23
24 r = set_put(s, add);
25 if (r < 0)
26 return r;
27
28 va_start(ap, add);
29
30 for (;;) {
31 void *arg = va_arg(ap, void*);
32
33 if (!arg)
34 break;
35
36 r = set_put(s, arg);
37 if (r < 0) {
38 va_end(ap);
39 return r;
40 }
41 }
42
43 va_end(ap);
44 }
45
46 *ret = TAKE_PTR(s);
47
48 return 0;
49 }