Files
config-parser/doc/latex/config_8c.tex
2025-05-20 16:15:21 +02:00

95 lines
9.1 KiB
TeX

\doxysection{config.\+c File Reference}
\hypertarget{config_8c}{}\label{config_8c}\index{config.c@{config.c}}
{\ttfamily \#include "{}config.\+h"{}}\newline
{\ttfamily \#include $<$stdio.\+h$>$}\newline
{\ttfamily \#include $<$stdlib.\+h$>$}\newline
{\ttfamily \#include $<$string.\+h$>$}\newline
{\ttfamily \#include $<$errno.\+h$>$}\newline
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item
int \mbox{\hyperlink{config_8c_aae86bc3f3ebba4d6aba3ca1392c0126a}{check\+Section}} (char \texorpdfstring{$\ast$}{*}str, char delimiter\+Left, char delimiter\+Right, char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}section\+Name)
\begin{DoxyCompactList}\small\item\em Here we check if the given string contains a section for example \mbox{[}SECTIONName\mbox{]} here delimiter\+Left is \mbox{[} and delimiter\+Right is \mbox{]} if a section is found, the section name will be written to section\+Name. \end{DoxyCompactList}\item
int \mbox{\hyperlink{config_8c_a699e504c1ab9ceffb828dbf365a5e374}{get\+Str\+At\+Pos}} (char \texorpdfstring{$\ast$}{*}str, int from\+Pos, int to\+Pos, char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}name, int size\+Name)
\item
int \mbox{\hyperlink{config_8c_ab0b547ee554d9b305adc1b2ad85080a3}{get\+Name\+Value\+Pair}} (char \texorpdfstring{$\ast$}{*}str, char left\+Delimiter\+Pos, char right\+Delimiter\+Pos, char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}name, char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}value, int size\+Name, int size\+Value)
\item
int \mbox{\hyperlink{config_8c_a15a5f64f830221feac0af723899208b2}{parse\+Config}} (char \texorpdfstring{$\ast$}{*}original\+Buffer, struct \mbox{\hyperlink{structconfigEntry}{config\+Entry}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}entry, int config\+Size\+Count, int \texorpdfstring{$\ast$}{*}returned\+Count)
\end{DoxyCompactItemize}
\doxysubsection{Function Documentation}
\Hypertarget{config_8c_aae86bc3f3ebba4d6aba3ca1392c0126a}\index{config.c@{config.c}!checkSection@{checkSection}}
\index{checkSection@{checkSection}!config.c@{config.c}}
\doxysubsubsection{\texorpdfstring{checkSection()}{checkSection()}}
{\footnotesize\ttfamily \label{config_8c_aae86bc3f3ebba4d6aba3ca1392c0126a}
int check\+Section (\begin{DoxyParamCaption}\item[{char \texorpdfstring{$\ast$}{*}}]{str}{, }\item[{char}]{delimiter\+Left}{, }\item[{char}]{delimiter\+Right}{, }\item[{char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{section\+Name}{}\end{DoxyParamCaption})}
Here we check if the given string contains a section for example \mbox{[}SECTIONName\mbox{]} here delimiter\+Left is \mbox{[} and delimiter\+Right is \mbox{]} if a section is found, the section name will be written to section\+Name.
Input\+:
\begin{DoxyParams}{Parameters}
{\em char} & \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}str\+: the string to check \\
\hline
{\em char} & delimiter\+Left\+: the left delimiter to check for \\
\hline
{\em char} & delimiter\+Right\+: the right delimiter to check for\\
\hline
\end{DoxyParams}
Output\+:
\begin{DoxyParams}{Parameters}
{\em char} & \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}section\+Name\+: if found the section Name of the section\\
\hline
\end{DoxyParams}
Return\+:
\begin{DoxyParams}{Parameters}
{\em int} & status\+\_\+code\+: one of the following values\+: \\
\hline
\end{DoxyParams}
Definition at line \mbox{\hyperlink{config_8c_source_l00024}{24}} of file \mbox{\hyperlink{config_8c_source}{config.\+c}}.
\Hypertarget{config_8c_ab0b547ee554d9b305adc1b2ad85080a3}\index{config.c@{config.c}!getNameValuePair@{getNameValuePair}}
\index{getNameValuePair@{getNameValuePair}!config.c@{config.c}}
\doxysubsubsection{\texorpdfstring{getNameValuePair()}{getNameValuePair()}}
{\footnotesize\ttfamily \label{config_8c_ab0b547ee554d9b305adc1b2ad85080a3}
int get\+Name\+Value\+Pair (\begin{DoxyParamCaption}\item[{char \texorpdfstring{$\ast$}{*}}]{str}{, }\item[{char}]{left\+Delimiter\+Pos}{, }\item[{char}]{right\+Delimiter\+Pos}{, }\item[{char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{name}{, }\item[{char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{value}{, }\item[{int}]{size\+Name}{, }\item[{int}]{size\+Value}{}\end{DoxyParamCaption})}
Here we get a "{}pair"{} of data, parsed from \texorpdfstring{$\ast$}{*}str, witch consists of a keyname and a keyvalue. These are written to the pointers at char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}name and char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}value. These pair can be in the form of\+: ex1\+: NAME=VALUE \texorpdfstring{$^\wedge$}{\string^} \texorpdfstring{$^\wedge$}{\string^} \texorpdfstring{$\vert$}{|} Here we have no delimiter this means right\+Delimiter\+Pos must be NULL This is the left delimiter ex2\+: name(value) \texorpdfstring{$^\wedge$}{\string^} \texorpdfstring{$^\wedge$}{\string^} \texorpdfstring{$\vert$}{|} This is the right\+Delimiter\+Pos and must be \textquotesingle{})\textquotesingle{} This is left\+Delimiter\+Pos which must be \textquotesingle{}(\textquotesingle{}
Input\+: char \texorpdfstring{$\ast$}{*}str\+: the line in the form of a string where a key value pair is stored char left\+Delimiter\+Pos\+: the left delimiter for example \textquotesingle{}=\textquotesingle{} char right\+Delimiter\+Pos\+: the right delimiter can be NULL in most cases, if NULL we assume that there is only one delimiter, which is in this case the left\+Delimiter\+Pos Output\+: char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}name\+: The address where we store the name of the Key char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}value\+: The address where we store the key value int size\+Name\+: for size checking against memory allocated at \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}name int size\+Value\+: for size checking against memory allocated at \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}value
Return\+: will return NO\+\_\+\+ERROR (0) if successfull. If not it will return the error of the subroutine
Definition at line \mbox{\hyperlink{config_8c_source_l00151}{151}} of file \mbox{\hyperlink{config_8c_source}{config.\+c}}.
\Hypertarget{config_8c_a699e504c1ab9ceffb828dbf365a5e374}\index{config.c@{config.c}!getStrAtPos@{getStrAtPos}}
\index{getStrAtPos@{getStrAtPos}!config.c@{config.c}}
\doxysubsubsection{\texorpdfstring{getStrAtPos()}{getStrAtPos()}}
{\footnotesize\ttfamily \label{config_8c_a699e504c1ab9ceffb828dbf365a5e374}
int get\+Str\+At\+Pos (\begin{DoxyParamCaption}\item[{char \texorpdfstring{$\ast$}{*}}]{str}{, }\item[{int}]{from\+Pos}{, }\item[{int}]{to\+Pos}{, }\item[{char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{name}{, }\item[{int}]{size\+Name}{}\end{DoxyParamCaption})}
Here we get / cut from from\+Pos to to\+Pos and write it to an address
Input\+: char \texorpdfstring{$\ast$}{*}str\+: the string to cut int from\+Pos\+: from which position we want to copy, the pos is included and zero indexed int to\+Pos\+: to which position we want to copy, the pos is included and zero indexed Output\+: char \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}name\+: here we will write the section name to Input\+: int size\+Name\+: the size of the user allocated buffer at \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}name
Definition at line \mbox{\hyperlink{config_8c_source_l00098}{98}} of file \mbox{\hyperlink{config_8c_source}{config.\+c}}.
\Hypertarget{config_8c_a15a5f64f830221feac0af723899208b2}\index{config.c@{config.c}!parseConfig@{parseConfig}}
\index{parseConfig@{parseConfig}!config.c@{config.c}}
\doxysubsubsection{\texorpdfstring{parseConfig()}{parseConfig()}}
{\footnotesize\ttfamily \label{config_8c_a15a5f64f830221feac0af723899208b2}
int parse\+Config (\begin{DoxyParamCaption}\item[{char \texorpdfstring{$\ast$}{*}}]{original\+Buffer}{, }\item[{struct \mbox{\hyperlink{structconfigEntry}{config\+Entry}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{entry}{, }\item[{int}]{config\+Size\+Count}{, }\item[{int \texorpdfstring{$\ast$}{*}}]{returned\+Count}{}\end{DoxyParamCaption})}
Given a null terminated buffer of content(ex. from a file) an parse it with a default syntax of\+: Sections -\/\texorpdfstring{$>$}{>} \mbox{[}SECTIONNAME\mbox{]} name / value -\/\texorpdfstring{$>$}{>} name=value
Input\+: char \texorpdfstring{$\ast$}{*}original\+Buffer\+: the buffer which holds the string for parsing. struct \doxylink{structconfigEntry}{config\+Entry} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}entry\+: a user allocated buffer to which we write the parsed config data. int config\+Size\+Count\+: the user allocated size of \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}entry. Output\+: int \texorpdfstring{$\ast$}{*}returned\+Count\+: to this variable the function writes the count of struct, which will be required to store all alavaible data.
Note\+: The funtion returns the maximum allowed data structures, determined by config\+Size\+Count. All data which exceeds will be dropped. To get the whole data we run the funtion a second time with the realloced config\+Size\+Count in the size of \mbox{[}returned\+Count\mbox{]} structures.
Definition at line \mbox{\hyperlink{config_8c_source_l00215}{215}} of file \mbox{\hyperlink{config_8c_source}{config.\+c}}.