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 : #include <stdio.h>
11 :
12 0 : void f (Key * k)
13 : {
14 0 : printf ("\tf called with %s\n", keyName (k));
15 0 : keySetName (k, "user/delete");
16 0 : keyDel (k);
17 0 : }
18 :
19 0 : void h (Key * k)
20 : {
21 0 : printf ("\th called with %s\n", keyName (k));
22 0 : keyIncRef (k);
23 :
24 0 : f (k);
25 :
26 0 : keyDecRef (k);
27 0 : }
28 :
29 0 : int main (void)
30 : {
31 0 : Key * k = keyNew ("user/key1", KEY_END);
32 0 : printf ("key has ref %zd\n", keyGetRef (k));
33 :
34 0 : f (k);
35 0 : printf ("key is now deleted\n\n");
36 :
37 0 : k = keyNew ("user/key2", KEY_END);
38 0 : keyIncRef (k);
39 0 : printf ("key has ref %zd\n", keyGetRef (k));
40 :
41 0 : f (k);
42 0 : printf ("key renamed to %s\n", keyName (k));
43 :
44 0 : f (k);
45 :
46 0 : keyDecRef (k);
47 0 : printf ("key has ref %zd\n", keyGetRef (k));
48 0 : keyDel (k);
49 0 : printf ("key is now deleted\n\n");
50 :
51 0 : k = keyNew ("user/key3", KEY_END);
52 0 : printf ("key has ref %zd\n", keyGetRef (k));
53 0 : h (k);
54 0 : keyDel (k);
55 0 : printf ("key is now deleted\n");
56 :
57 : return 0;
58 : }
|