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


Operating system specific workarounds.  


{\ttfamily \#include $<$limits.\+h$>$}\newline
{\ttfamily \#include $<$inttypes.\+h$>$}\newline
{\ttfamily \#include $<$sys/types.\+h$>$}\newline
{\ttfamily \#include $<$stdarg.\+h$>$}\newline
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\+ZE}~(1 + 19 + 20 + 1)
\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\+DE}~0600
\begin{DoxyCompactList}\small\item\em Default Mode. \end{DoxyCompactList}\item 
\#define \hyperlink{kdbos_8h_a383abc9de75375a7c8c24e5526643d51}{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+DE}~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\+TH}~\+\_\+\+P\+O\+S\+I\+X\+\_\+\+P\+A\+T\+H\+\_\+\+M\+AX
\begin{DoxyCompactList}\small\item\em K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+TH 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\+OR}~\textquotesingle{}/\textquotesingle{}
\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\+PE}~\textquotesingle{}\textbackslash{}\textbackslash{}\textquotesingle{}
\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\+AR}~(U\+C\+H\+A\+R\+\_\+\+M\+AX + 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\+IN, I\+N\+T\+\_\+\+M\+AX size\+\_\+t size of array or string 0, S\+I\+Z\+E\+\_\+\+M\+AX 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\+OR how to delimit pathnames K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+DE the standard mode for keys K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+DE the mode to add ($\vert$=) for key directories K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+AR 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\+TH the maximum length for a pathname

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

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

\begin{DoxyCopyright}{Copyright}
B\+SD License (see L\+I\+C\+E\+N\+S\+E.\+md or \href{https://www.libelektra.org}{\tt https\+://www.\+libelektra.\+org}) 
\end{DoxyCopyright}


\subsection{Macro Definition Documentation}
\mbox{\Hypertarget{kdbos_8h_ac05e829cd51ec182b6a13400671a9d1e}\label{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\+ZE@{E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+ZE}}
\index{E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+ZE@{E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+ZE}!kdbos.\+h@{kdbos.\+h}}
\subsubsection{\texorpdfstring{E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+ZE}{ELEKTRA\_MAX\_ARRAY\_SIZE}}
{\footnotesize\ttfamily \#define E\+L\+E\+K\+T\+R\+A\+\_\+\+M\+A\+X\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+ZE~(1 + 19 + 20 + 1)}



The buffer size needed for an array name. 

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

E.\+g. \#\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+\+\_\+18446744073709551615\textbackslash{}0 \mbox{\Hypertarget{kdbos_8h_a383abc9de75375a7c8c24e5526643d51}\label{kdbos_8h_a383abc9de75375a7c8c24e5526643d51}} 
\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+DE@{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+DE}}
\index{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+DE@{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+DE}!kdbos.\+h@{kdbos.\+h}}
\subsubsection{\texorpdfstring{K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+DE}{KDB\_DIR\_MODE}}
{\footnotesize\ttfamily \#define K\+D\+B\+\_\+\+D\+I\+R\+\_\+\+M\+O\+DE~0100}



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\+DE to get the permissions of an directory. \mbox{\Hypertarget{kdbos_8h_abd69e457fc53afc0dc2efad596d9ed7a}\label{kdbos_8h_abd69e457fc53afc0dc2efad596d9ed7a}} 
\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+DE@{K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+DE}}
\index{K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+DE@{K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+DE}!kdbos.\+h@{kdbos.\+h}}
\subsubsection{\texorpdfstring{K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+DE}{KDB\_FILE\_MODE}}
{\footnotesize\ttfamily \#define K\+D\+B\+\_\+\+F\+I\+L\+E\+\_\+\+M\+O\+DE~0600}



Default Mode. 

This mode will be used for new files \mbox{\Hypertarget{kdbos_8h_ada78ffff3cb0d4ae9e82205fe0c992cc}\label{kdbos_8h_ada78ffff3cb0d4ae9e82205fe0c992cc}} 
\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+TH@{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+TH}}
\index{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+TH@{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+TH}!kdbos.\+h@{kdbos.\+h}}
\subsubsection{\texorpdfstring{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+TH}{KDB\_MAX\_PATH\_LENGTH}}
{\footnotesize\ttfamily \#define K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+P\+A\+T\+H\+\_\+\+L\+E\+N\+G\+TH~\+\_\+\+P\+O\+S\+I\+X\+\_\+\+P\+A\+T\+H\+\_\+\+M\+AX}



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

\mbox{\Hypertarget{kdbos_8h_a93f061df863d00deae4b596cb18b99f8}\label{kdbos_8h_a93f061df863d00deae4b596cb18b99f8}} 
\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+AR@{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+AR}}
\index{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+AR@{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+AR}!kdbos.\+h@{kdbos.\+h}}
\subsubsection{\texorpdfstring{K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+AR}{KDB\_MAX\_UCHAR}}
{\footnotesize\ttfamily \#define K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+AR~(U\+C\+H\+A\+R\+\_\+\+M\+AX + 1)}



For iteration over trie children/values. 

for (i=0; i$<$K\+D\+B\+\_\+\+M\+A\+X\+\_\+\+U\+C\+H\+AR; ++i) \mbox{\Hypertarget{kdbos_8h_a6d24980bc81c4276367f4e80725a8b61}\label{kdbos_8h_a6d24980bc81c4276367f4e80725a8b61}} 
\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+PE@{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+PE}}
\index{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+PE@{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+PE}!kdbos.\+h@{kdbos.\+h}}
\subsubsection{\texorpdfstring{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+PE}{KDB\_PATH\_ESCAPE}}
{\footnotesize\ttfamily \#define K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+E\+S\+C\+A\+PE~\textquotesingle{}\textbackslash{}\textbackslash{}\textquotesingle{}}



Escape symbol for special characters in the key name. 

\begin{DoxySeeAlso}{See also}
\hyperlink{group__keyname}{here }. 
\end{DoxySeeAlso}
\mbox{\Hypertarget{kdbos_8h_ad19f92d6d37dc439d1727ca10263c9cc}\label{kdbos_8h_ad19f92d6d37dc439d1727ca10263c9cc}} 
\index{kdbos.\+h@{kdbos.\+h}!K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+OR@{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+OR}}
\index{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+OR@{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+OR}!kdbos.\+h@{kdbos.\+h}}
\subsubsection{\texorpdfstring{K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+OR}{KDB\_PATH\_SEPARATOR}}
{\footnotesize\ttfamily \#define K\+D\+B\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+A\+R\+A\+T\+OR~\textquotesingle{}/\textquotesingle{}}



Separator for key names. 

This character will be used to separate key names

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