\hypertarget{kdbos_8h}{\section{kdbos.\+h File Reference}
\label{kdbos_8h}\index{kdbos.\+h@{kdbos.\+h}}
}


Operating system specific workarounds.  


{\ttfamily \#include $<$limits.\+h$>$}\\*
{\ttfamily \#include $<$inttypes.\+h$>$}\\*
{\ttfamily \#include $<$sys/types.\+h$>$}\\*
{\ttfamily \#include $<$stdarg.\+h$>$}\\*
Include dependency graph for kdbos.\+h\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{kdbos_8h__incl}
\end{center}
\end{figure}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{kdbos_8h_ac05e829cd51ec182b6a13400671a9d1e}{E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E}~(21)
\begin{DoxyCompactList}\small\item\em The buffer size needed for an array name. \end{DoxyCompactList}\item 
\#define \hyperlink{kdbos_8h_abd69e457fc53afc0dc2efad596d9ed7a}{K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+D\+E}~0600
\begin{DoxyCompactList}\small\item\em Default Mode. \end{DoxyCompactList}\item 
\#define \hyperlink{kdbos_8h_a383abc9de75375a7c8c24e5526643d51}{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+D\+E}~0100
\begin{DoxyCompactList}\small\item\em Default directory mode. \end{DoxyCompactList}\item 
\#define \hyperlink{kdbos_8h_ada78ffff3cb0d4ae9e82205fe0c992cc}{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H}~\+\_\+\+P\+O\+S\+I\+X\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X
\begin{DoxyCompactList}\small\item\em K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H will be the value for longest possible filenames on the system. \end{DoxyCompactList}\item 
\#define \hyperlink{kdbos_8h_ad19f92d6d37dc439d1727ca10263c9cc}{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+O\+R}~'/'
\begin{DoxyCompactList}\small\item\em Separator for key names. \end{DoxyCompactList}\item 
\#define \hyperlink{kdbos_8h_a6d24980bc81c4276367f4e80725a8b61}{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+P\+E}~'\textbackslash{}\textbackslash{}'
\begin{DoxyCompactList}\small\item\em Escape symbol for special characters in the key name. \end{DoxyCompactList}\item 
\#define \hyperlink{kdbos_8h_a93f061df863d00deae4b596cb18b99f8}{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+A\+R}~(U\+C\+H\+A\+R\+\_\+\+M\+A\+X+1)
\begin{DoxyCompactList}\small\item\em For iteration over trie children/values. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Operating system specific workarounds. 

Integer Types must be at least 32bit\+:

Type Purpose Limits int Integral Fast Type I\+N\+T\+\_\+\+M\+I\+N, I\+N\+T\+\_\+\+M\+A\+X size\+\_\+t size of array or string 0, S\+I\+Z\+E\+\_\+\+M\+A\+X ssize\+\_\+t size with error cond. -\/1, S\+S\+I\+Z\+E\+\_\+\+M\+A\+X($<$\+S\+I\+Z\+E\+\_\+\+M\+A\+X) time\+\_\+t Seconds since 1970 0,.. recommended\+: 64 bit uid\+\_\+t User identification 0,.. gid\+\_\+t Group identification 0,..

Following Elektra specific types must be defined with at least 32 bit\+:

Type Purpose keyswitch\+\_\+t For key\+New option\+\_\+t For kdb\+Get, kdb\+Set and ks\+Lookup$\ast$ cursor\+\_\+t stores information to find a position in a keyset

Following constants must be defined\+:

K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+O\+R how to delimit pathnames K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+D\+E the standard mode for keys K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+D\+E the mode to add ($\vert$=) for key directories K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+A\+R the maximum value of unsigned char

Following limits must be defined (in addition to limits mentioned above for types)\+:

K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H the maximum length for a pathname

In addition to the types the ... or va\+\_\+list must be supported, this is I\+S\+O C and should happen by including $<$stdarg.\+h$>$.

Go ahead and write a \#ifdef block for your operating system when the P\+O\+S\+I\+X defaults are not ok

\begin{DoxyCopyright}{Copyright}
B\+S\+D License (see doc/\+C\+O\+P\+Y\+I\+N\+G or \href{http://www.libelektra.org}{\tt http\+://www.\+libelektra.\+org}) 
\end{DoxyCopyright}


\subsection{Macro Definition Documentation}
\hypertarget{kdbos_8h_ac05e829cd51ec182b6a13400671a9d1e}{\index{kdbos.\+h@{kdbos.\+h}!E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E@{E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E}}
\index{E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E@{E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E}!kdbos.\+h@{kdbos.\+h}}
\subsubsection[{E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E}]{\setlength{\rightskip}{0pt plus 5cm}\#define E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E~(21)}}\label{kdbos_8h_ac05e829cd51ec182b6a13400671a9d1e}


The buffer size needed for an array name. 

The size of the buffer so that the buffer can contain\+:
\begin{DoxyItemize}
\item a \# in the beginning
\item up to 9 underscores are needed as prefix
\item a 32bit number has a maximum of 10 digits
\item one byte for null termination
\end{DoxyItemize}

E.\+g. \#\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+4000000000\textbackslash{}0 \hypertarget{kdbos_8h_a383abc9de75375a7c8c24e5526643d51}{\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+D\+E@{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+D\+E}}
\index{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+D\+E@{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+D\+E}!kdbos.\+h@{kdbos.\+h}}
\subsubsection[{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+D\+E}]{\setlength{\rightskip}{0pt plus 5cm}\#define K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+D\+E~0100}}\label{kdbos_8h_a383abc9de75375a7c8c24e5526643d51}


Default directory mode. 

This mode will be used for new directories. Will be O\+Red together with K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+D\+E to get the permissions of an directory. \hypertarget{kdbos_8h_abd69e457fc53afc0dc2efad596d9ed7a}{\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+D\+E@{K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+D\+E}}
\index{K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+D\+E@{K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+D\+E}!kdbos.\+h@{kdbos.\+h}}
\subsubsection[{K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+D\+E}]{\setlength{\rightskip}{0pt plus 5cm}\#define K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+D\+E~0600}}\label{kdbos_8h_abd69e457fc53afc0dc2efad596d9ed7a}


Default Mode. 

This mode will be used for new files \hypertarget{kdbos_8h_ada78ffff3cb0d4ae9e82205fe0c992cc}{\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H@{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H}}
\index{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H@{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H}!kdbos.\+h@{kdbos.\+h}}
\subsubsection[{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H}]{\setlength{\rightskip}{0pt plus 5cm}\#define K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H~\+\_\+\+P\+O\+S\+I\+X\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X}}\label{kdbos_8h_ada78ffff3cb0d4ae9e82205fe0c992cc}


K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+T\+H will be the value for longest possible filenames on the system. 

\hypertarget{kdbos_8h_a93f061df863d00deae4b596cb18b99f8}{\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+A\+R@{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+A\+R}}
\index{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+A\+R@{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+A\+R}!kdbos.\+h@{kdbos.\+h}}
\subsubsection[{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+A\+R}]{\setlength{\rightskip}{0pt plus 5cm}\#define K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+A\+R~(U\+C\+H\+A\+R\+\_\+\+M\+A\+X+1)}}\label{kdbos_8h_a93f061df863d00deae4b596cb18b99f8}


For iteration over trie children/values. 

for (i=0; i$<$K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+A\+R; ++i) \hypertarget{kdbos_8h_a6d24980bc81c4276367f4e80725a8b61}{\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+P\+E@{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+P\+E}}
\index{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+P\+E@{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+P\+E}!kdbos.\+h@{kdbos.\+h}}
\subsubsection[{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+P\+E}]{\setlength{\rightskip}{0pt plus 5cm}\#define K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+P\+E~'\textbackslash{}\textbackslash{}'}}\label{kdbos_8h_a6d24980bc81c4276367f4e80725a8b61}


Escape symbol for special characters in the key name. 

\begin{DoxySeeAlso}{See also}
\hyperlink{group__keyname}{here }. 
\end{DoxySeeAlso}
\hypertarget{kdbos_8h_ad19f92d6d37dc439d1727ca10263c9cc}{\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+O\+R@{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+O\+R}}
\index{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+O\+R@{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+O\+R}!kdbos.\+h@{kdbos.\+h}}
\subsubsection[{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+O\+R}]{\setlength{\rightskip}{0pt plus 5cm}\#define K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+O\+R~'/'}}\label{kdbos_8h_ad19f92d6d37dc439d1727ca10263c9cc}


Separator for key names. 

This character will be used to separate key names

\begin{DoxySeeAlso}{See also}
\hyperlink{group__keyname}{here }. 
\end{DoxySeeAlso}
