Line data Source code
1 : /**
2 : * @file
3 : *
4 : * @brief
5 : *
6 : * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
7 : */
8 :
9 : #include <kdb.h>
10 :
11 : Key * copy;
12 :
13 : //! [Basic Copy All]
14 0 : void l (Key * k)
15 : {
16 : // receive copy
17 0 : keyCopyAllMeta (k, copy);
18 : // the caller will see the changed key k
19 : // with all the metadata from copy
20 0 : }
21 : //! [Basic Copy All]
22 :
23 0 : int needsSharedData (Key * k)
24 : {
25 0 : return k ? 1 : 0;
26 : }
27 :
28 : //! [Shared Meta All]
29 0 : void o (KeySet * ks)
30 : {
31 : Key * current;
32 0 : Key * shared = keyNew (0);
33 0 : keySetMeta (shared, "shared1", "this metadata should be shared among many keys");
34 0 : keySetMeta (shared, "shared2", "this metadata should be shared among many keys also");
35 0 : keySetMeta (shared, "shared3", "this metadata should be shared among many keys too");
36 :
37 0 : ksRewind (ks);
38 0 : while ((current = ksNext (ks)) != 0)
39 : {
40 0 : if (needsSharedData (current)) keyCopyAllMeta (current, shared);
41 : }
42 :
43 0 : keyDel (shared);
44 0 : }
45 : //! [Shared Meta All]
46 :
47 0 : int main (void)
48 : {
49 0 : Key * k = keyNew ("user/key", KEY_END);
50 0 : copy = keyNew ("user/copy", KEY_END);
51 0 : l (k);
52 0 : keyDel (k);
53 0 : keyDel (copy);
54 :
55 0 : KeySet * ks = ksNew (20, KS_END);
56 0 : o (ks);
57 0 : ksDel (ks);
58 : }
|