This file is indexed.

/usr/share/doc/elektra-doc/html/index.html is in elektra-doc 0.8.7-4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.7"/>
<title>Elektra: The Elektra API</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Elektra
   &#160;<span id="projectnumber">0.8.7</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.7 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">The Elektra API </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><h1><a class="anchor" id="overview"></a>
Elektra Initiative Overview</h1>
<p>Elektra provides a universal and secure framework to store configuration parameters in a global, hierarchical key database. The core is a small library implemented in C. The plugin-based framework fulfills many configuration-related tasks to avoid any unnecessary code duplication across applications while it still allows the core to stay without any external dependency. Elektra abstracts from cross-platform-related issues with an consistent API, and allows applications to be aware of other applications' configurations, leveraging easy application integration.</p>
<p>See the website for more information <a href="http://www.libelektra.org">http://www.libelektra.org</a></p>
<h1><a class="anchor" id="focus"></a>
API docu</h1>
<p>This document occupies with the API implementation, documentation, internals and plugins. On the one hand it gives an overview and an introduction for developers using Elektra, on the other hand it gives an informal descriptions what methods must and may provide to allow an alternative implementation of the API.</p>
<p>The current version (for stable releases) of this document can be found at <a href="http://doc.libelektra.org/api/current/html">http://doc.libelektra.org/api/current/html</a></p>
<p>The latest version (from git master) of this document can be found at <a href="http://doc.libelektra.org/api/latest/html">http://doc.libelektra.org/api/latest/html</a></p>
<h1><a class="anchor" id="using"></a>
Using the Elektra Library</h1>
<p>A C or C++ source file that wants to use Elektra should include: </p><div class="fragment"><div class="line"><span class="preprocessor">#include &lt;kdb.h&gt;</span></div>
</div><!-- fragment --><p>To link an executable with the Elektra library, the correct way is to use the <code>pkg-config</code> tool: </p><div class="fragment"><div class="line">bash$ cc `pkg-config --libs elektra` -o myapp myapp.c</div>
</div><!-- fragment --><h1><a class="anchor" id="classes"></a>
Elektra API</h1>
<p>The API was written in pure C because Elektra was designed to be useful even for the most basic system programs, which are all made in C. Also, being C, bindings to other languages can appear easily.</p>
<p>The API follows an Object Oriented design, and there are 3 main classes as shown by the figure:</p>
<div class="image">
<img src="classes.png" alt="classes.png"/>
<div class="caption">
Elektra Classes</div></div>
<p> Some general things you can do with each class are:</p>
<p><a class="el" href="group__kdb.html">KDB </a></p><ul>
<li><a class="el" href="group__kdb.html">The four lowlevel functions </a></li>
<li><a class="el" href="group__kdb.html#ga6808defe5870f328dd17910aacbdc6ca">Open </a> and <a class="el" href="group__kdb.html#gadb54dc9fda17ee07deb9444df745c96f">Close </a> the Database</li>
<li><a class="el" href="group__kdb.html#ga28e385fd9cb7ccfe0b2f1ed2f62453a1">Get </a> and <a class="el" href="group__kdb.html#ga11436b058408f83d303ca5e996832bcf">Set </a> <a class="el" href="group__keyset.html">KeySet </a> in the Database</li>
<li>See <a class="el" href="group__kdb.html">class documentation</a> for more</li>
</ul>
<p><a class="el" href="group__key.html">Key </a></p><ul>
<li>Get and Set key properties like <a class="el" href="group__keyname.html#ga7699091610e7f3f43d2949514a4b35d9">name </a>, <a class="el" href="group__keyvalue.html#ga622bde1eb0e0c4994728331326340ef2">string </a> or <a class="el" href="group__keyvalue.html#gaa50a5358fd328d373a45f395fa1b99e7">binary </a> values, <a class="el" href="group__keymeta.html#gabc0cec592ce3b77e9bc33dbc8e8f6bdc">permissions </a>, <a class="el" href="group__keymeta.html#ga57689eb5691679071463b777ae786ae9">changed time </a> and <a class="el" href="group__keyvalue.html#gafb89735689929ff717cc9f2d0d0b46a2">comment </a></li>
<li>Test if it is a <a class="el" href="group__keytest.html#ga373acc20c6209357045891f4b0c70041"><code>user/</code> </a> or <a class="el" href="group__keytest.html#gafe49cfb61c2accb3073131c23a56fb14"><code>system/</code> </a> key, etc</li>
<li>See <a class="el" href="group__key.html">class documentation</a> for more</li>
</ul>
<p><a class="el" href="group__keyset.html">KeySet </a></p><ul>
<li>Linked list of Key objects</li>
<li>Append <a class="el" href="group__keyset.html#gaa5a1d467a4d71041edce68ea7748ce45">a single key </a> or an entire <a class="el" href="group__keyset.html#ga21eb9c3a14a604ee3a8bdc779232e7b7">KeySet </a></li>
<li><a class="el" href="group__keyset.html#ga317321c9065b5a4b3e33fe1c399bcec9">Work with </a> its <a class="el" href="group__keyset.html#ga4287b9416912c5f2ab9c195cb74fb094">internal cursor </a></li>
<li>See <a class="el" href="group__keyset.html">class documentation</a> for more</li>
</ul>
<h1><a class="anchor" id="keynames"></a>
Key Names and Namespaces</h1>
<p>There are 2 trees of keys: <code>system</code> and <code>user</code> </p>
<ul>
<li>The "system" Subtree It is provided to store system-wide configuration keys, that is, configurations that daemons and system services will use. But all other programs will also try to fetch system keys to have a fallback managed by the distributor or admin when the user does not have configuration for its own.</li>
<li>The "user" Subtree Used to store user-specific configurations, like the personal settings of a user to certain programs. The user subtree will always be favoured if present (except for security concerns the user subtree may not be considered). See <a class="el" href="group__keyset.html#cascading">Cascading</a> in the documentation of <a class="el" href="group__keyset.html#gad2e30fb6d4739d917c5abb2ac2f9c1a1">ksLookupByName()</a> how the selection of user and system keys works.</li>
</ul>
<h1><a class="anchor" id="rules"></a>
Rules for Key Names</h1>
<p>When using Elektra to store your application's configuration and state, please keep in mind the following rules:</p><ul>
<li>You are not allowed to create keys right under <code>system</code> or <code>user</code>. They are reserved for more generic purposes.</li>
<li>The keys for your application, called say <em>MyApp</em>, should be created under <code>system/sw/MyApp/current</code> and <code>user/sw/MyApp/current</code> </li>
<li>current is the default configuration profile, users may symlink to the profile they want.</li>
<li>That means you just need to <a class="el" href="group__kdb.html#ga28e385fd9cb7ccfe0b2f1ed2f62453a1" title="Retrieve keys in an atomic and universal way, all other kdbGet() Functions rely on that one...">kdbGet()</a> <code>system/sw/MyApp/profile</code> and <code>user/sw/MyApp/profile</code> and then <a class="el" href="group__keyset.html#gad2e30fb6d4739d917c5abb2ac2f9c1a1">ksLookupByName()</a> in <code>/sw/MyApp/profile</code> while profile defaults to current, but may be changed by the user or admin. See <a class="el" href="group__keyset.html#cascading">Cascading</a> to learn more about that feature.</li>
</ul>
<h1><a class="anchor" id="backendsoverview"></a>
Backend Overview</h1>
<p>The core of elektra does not store configuration itself to the harddisk. Instead this work is delegated to backends.</p>
<p>If you want to develop a backend, you should already have some experience with Elektra from the user point of view. You should be familiar with the data structures: <a class="el" href="group__key.html">Key </a> and <a class="el" href="group__keyset.html">KeySet </a> Then you can start reading about Backends, which are composed out of <a class="el" href="group__plugin.html">Plugins</a>.</p>
<h1><a class="anchor" id="glossary"></a>
Glossary</h1>
<ul>
<li><b>pop</b>, used in <a class="el" href="group__keyset.html#gae42530b04defb772059de0600159cf69">ksPop()</a> and <a class="el" href="group__keyset.html#KDB_O_POP">KDB_O_POP</a> means to remove a key from a keyset.</li>
<li><b>delete</b>, or abbr. del, used in <a class="el" href="group__key.html#ga3df95bbc2494e3e6703ece5639be5bb1">keyDel()</a>, <a class="el" href="group__keyset.html#ga27e5c16473b02a422238c8d970db7ac8">ksDel()</a> and <a class="el" href="group__kdb.html#gga98a3d6a4016c9dad9cbd1a99a9c2a45aa66a5380c120f25f28f49848c4a863ead">KDB_O_DEL</a> means to free a key or keyset. The memory can be used for something else afterwards.</li>
<li><b>remove</b> means that the key/value information in the physical database will be removed permanently. </li>
</ul>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Tue Aug 19 2014 18:22:58 for Elektra by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.7
</small></address>
</body>
</html>