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 "hidden.h"
10 :
11 : #ifndef HAVE_KDBCONFIG
12 : #include "kdbconfig.h"
13 : #endif
14 :
15 : #include <string.h>
16 :
17 20 : int elektraHiddenOpen (Plugin * handle, Key * errorKey ELEKTRA_UNUSED)
18 : {
19 20 : elektraPluginSetData (handle, ksNew (0, KS_END));
20 :
21 20 : return 1; /* success */
22 : }
23 :
24 20 : int elektraHiddenClose (Plugin * handle, Key * errorKey ELEKTRA_UNUSED)
25 : {
26 20 : ksDel (elektraPluginGetData (handle));
27 :
28 20 : return 1; /* success */
29 : }
30 :
31 20 : int elektraHiddenGet (Plugin * handle, KeySet * returned, Key * parentKey)
32 : {
33 20 : if (!strcmp (keyName (parentKey), "system/elektra/modules/hidden"))
34 : {
35 20 : KeySet * pluginConfig =
36 20 : ksNew (30, keyNew ("system/elektra/modules/hidden", KEY_VALUE, "hidden plugin waits for your orders", KEY_END),
37 : keyNew ("system/elektra/modules/hidden/exports", KEY_END),
38 : keyNew ("system/elektra/modules/hidden/exports/open", KEY_FUNC, elektraHiddenOpen, KEY_END),
39 : keyNew ("system/elektra/modules/hidden/exports/close", KEY_FUNC, elektraHiddenClose, KEY_END),
40 : keyNew ("system/elektra/modules/hidden/exports/get", KEY_FUNC, elektraHiddenGet, KEY_END),
41 : keyNew ("system/elektra/modules/hidden/exports/set", KEY_FUNC, elektraHiddenSet, KEY_END),
42 : #include "readme_hidden.c"
43 : keyNew ("system/elektra/modules/hidden/infos/version", KEY_VALUE, PLUGINVERSION, KEY_END), KS_END);
44 20 : ksAppend (returned, pluginConfig);
45 20 : ksDel (pluginConfig);
46 20 : return 1;
47 : }
48 :
49 0 : Key * cur = 0;
50 0 : KeySet * newReturned = ksNew (ksGetSize (returned), KS_END);
51 0 : KeySet * hiddenKeys = elektraPluginGetData (handle);
52 0 : ksClear (hiddenKeys);
53 :
54 0 : while ((cur = ksNext (returned)) != 0)
55 : {
56 0 : if (keyIsInactive (cur))
57 0 : ksAppendKey (newReturned, cur);
58 : else
59 0 : ksAppendKey (hiddenKeys, cur);
60 : }
61 :
62 0 : ksCopy (returned, newReturned);
63 0 : ksDel (newReturned);
64 :
65 0 : return 1; /* success */
66 : }
67 :
68 0 : int elektraHiddenSet (Plugin * handle, KeySet * returned, Key * parentKey ELEKTRA_UNUSED)
69 : {
70 0 : KeySet * hiddenKeys = elektraPluginGetData (handle);
71 0 : ksAppend (returned, hiddenKeys);
72 :
73 0 : return 1; /* success */
74 : }
75 :
76 20 : Plugin * ELEKTRA_PLUGIN_EXPORT
77 : {
78 : // clang-format off
79 20 : return elektraPluginExport("hidden",
80 : ELEKTRA_PLUGIN_OPEN, &elektraHiddenOpen,
81 : ELEKTRA_PLUGIN_CLOSE, &elektraHiddenClose,
82 : ELEKTRA_PLUGIN_GET, &elektraHiddenGet,
83 : ELEKTRA_PLUGIN_SET, &elektraHiddenSet,
84 : ELEKTRA_PLUGIN_END);
85 : }
86 :
|