r23166: Bring samba.org's iniparser copy in sync with the upstream version 2.17.
authorLars Müller <lmuelle@samba.org>
Sun, 27 May 2007 15:58:19 +0000 (15:58 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:22:51 +0000 (12:22 -0500)
19 files changed:
source/iniparser/AUTHORS
source/iniparser/Makefile
source/iniparser/html/dir_000000.html [deleted file]
source/iniparser/html/dirs.html [deleted file]
source/iniparser/html/doxygen.css
source/iniparser/html/globals_func.html
source/iniparser/html/index.html
source/iniparser/html/iniparser_8h.html
source/iniparser/html/iniparser_8main.html
source/iniparser/html/tab_b.gif [new file with mode: 0644]
source/iniparser/html/tab_l.gif [new file with mode: 0644]
source/iniparser/html/tab_r.gif [new file with mode: 0644]
source/iniparser/html/tabs.css [new file with mode: 0644]
source/iniparser/src/dictionary.c
source/iniparser/src/dictionary.h
source/iniparser/src/iniparser.c
source/iniparser/src/iniparser.h
source/iniparser/src/strlib.c
source/iniparser/src/strlib.h

index 86f842c50dfd5c1d49b76df0a09c4ffe0a9f0ec6..f3dc8765748f3ecb73cd52998ce736bd93f36aa9 100644 (file)
@@ -1 +1,5 @@
+Author for this package:
 Nicolas Devillard <ndevilla@free.fr>
+
+Many thanks to the many people who contributed ideas, code, suggestions,
+corrections, enhancements.
index 59793dbee19b791dce6e01c22859030be419a067..bc5d61211aebdf2096de711acb4950e2ec05033d 100644 (file)
@@ -4,12 +4,16 @@
 
 # Compiler settings
 CC      = gcc
-CFLAGS  = -O3
+CFLAGS  = -O3 -fPIC
 
 # Ar settings to build the library
 AR         = ar
 ARFLAGS = rcv
 
+SHLD = ${CC} ${CFLAGS}
+LDSHFLAGS = -shared -Wl,-Bsymbolic  -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib
+LDFLAGS = -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib
+
 # Set RANLIB to ranlib on systems that require it (Sun OS < 4, Mac OSX)
 # RANLIB  = ranlib
 RANLIB = true
@@ -34,17 +38,21 @@ SRCS = src/iniparser.c \
 OBJS = $(SRCS:.c=.o)
 
 
-default:       libiniparser.a
+default:       libiniparser.a libiniparser.so
 
 libiniparser.a:        $(OBJS)
        @($(AR) $(ARFLAGS) libiniparser.a $(OBJS))
        @($(RANLIB) libiniparser.a)
 
+libiniparser.so:       $(OBJS)
+       @$(SHLD) $(LDSHFLAGS) -o $@.0 $(OBJS) $(LDFLAGS) \
+               -Wl,-soname=`basename $@`.0
+
 clean:
        $(RM) $(OBJS)
 
 veryclean:
-       $(RM) $(OBJS) libiniparser.a
+       $(RM) $(OBJS) libiniparser.a libiniparser.so*
        rm -rf ./html ; mkdir html
        cd test ; $(MAKE) veryclean
 
diff --git a/source/iniparser/html/dir_000000.html b/source/iniparser/html/dir_000000.html
deleted file mode 100644 (file)
index 9e4da6f..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<html>
-<head>
-       <meta name="author"    content="ndevilla@free.fr">
-       <meta name="keywords"  content="ini file, config file, parser, C library">
-       <link href="doxygen.css" rel="stylesheet" type="text/css">
-<title>iniparser 2.x</title>
-</head>
-
-<body text="#000000" bgcolor="#ffffff">
-
-
-
-<!-- Generated by Doxygen 1.4.4 -->
-<div class="nav">
-<a class="el" href="dir_000000.html">src</a></div>
-<h1>src Directory Reference</h1><table border="0" cellpadding="0" cellspacing="0">
-<tr><td></td></tr>
-<tr><td colspan="2"><br><h2>Files</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">file &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html">iniparser.h</a></td></tr>
-
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parser for ini files. <br></td></tr>
-
-<p>
-</table>
-
-</body>
-</html>
diff --git a/source/iniparser/html/dirs.html b/source/iniparser/html/dirs.html
deleted file mode 100644 (file)
index 1671bd2..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
-<head>
-       <meta name="author"    content="ndevilla@free.fr">
-       <meta name="keywords"  content="ini file, config file, parser, C library">
-       <link href="doxygen.css" rel="stylesheet" type="text/css">
-<title>iniparser 2.x</title>
-</head>
-
-<body text="#000000" bgcolor="#ffffff">
-
-
-
-<!-- Generated by Doxygen 1.4.4 -->
-<h1>iniparser Directories</h1>This directory hierarchy is sorted roughly, but not completely, alphabetically:<ul>
-<li><a class="el" href="dir_000000.html">src</a>
-</ul>
-
-</body>
-</html>
index decae9e3941302a33be302993fd0b85f69cb72fe..c7db1a8a04edf1f89932d1059eb1d1873b8ee583 100644 (file)
@@ -17,8 +17,8 @@ H3 {
 CAPTION { font-weight: bold }
 DIV.qindex {
        width: 100%;
-       background-color: #eeeeff;
-       border: 1px solid #b0b0b0;
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
        text-align: center;
        margin: 2px;
        padding: 2px;
@@ -26,16 +26,16 @@ DIV.qindex {
 }
 DIV.nav {
        width: 100%;
-       background-color: #eeeeff;
-       border: 1px solid #b0b0b0;
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
        text-align: center;
        margin: 2px;
        padding: 2px;
        line-height: 140%;
 }
 DIV.navtab {
-       background-color: #eeeeff;
-       border: 1px solid #b0b0b0;
+       background-color: #e8eef2;
+       border: 1px solid #84b0c7;
        text-align: center;
        margin: 2px;
        margin-right: 15px;
@@ -80,7 +80,7 @@ A.codeRef:visited { font-weight: normal; color: #0000FF}
 A:hover { text-decoration: none; background-color: #f2f2ff }
 DL.el { margin-left: -1cm }
 .fragment {
-       font-family: Fixed, monospace;
+       font-family: monospace, fixed;
        font-size: 95%;
 }
 PRE.fragment {
@@ -96,14 +96,7 @@ PRE.fragment {
        padding-bottom: 4px;
 }
 DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px }
-TD.md { background-color: #F4F4FB; font-weight: bold; }
-TD.mdPrefix {
-       background-color: #F4F4FB;
-       color: #606060;
-       font-size: 80%;
-}
-TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; }
-TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; }
+
 DIV.groupHeader {
        margin-left: 16px;
        margin-top: 12px;
@@ -118,7 +111,7 @@ BODY {
        margin-left: 20px;
 }
 TD.indexkey {
-       background-color: #eeeeff;
+       background-color: #e8eef2;
        font-weight: bold;
        padding-right  : 10px;
        padding-top    : 2px;
@@ -131,7 +124,7 @@ TD.indexkey {
        border: 1px solid #CCCCCC;
 }
 TD.indexvalue {
-       background-color: #eeeeff;
+       background-color: #e8eef2;
        font-style: italic;
        padding-right  : 10px;
        padding-top    : 2px;
@@ -156,13 +149,6 @@ SPAN.comment       { color: #800000 }
 SPAN.preprocessor  { color: #806020 }
 SPAN.stringliteral { color: #002080 }
 SPAN.charliteral   { color: #008080 }
-.mdTable {
-       border: 1px solid #868686;
-       background-color: #F4F4FB;
-}
-.mdRow {
-       padding: 8px 10px;
-}
 .mdescLeft {
        padding: 0px 8px 4px 8px;
        font-size: 80%;
@@ -286,24 +272,87 @@ FORM.search {
 INPUT.search { font-size: 75%;
                color: #000080;
                font-weight: normal;
-               background-color: #eeeeff;
+               background-color: #e8eef2;
 }
 TD.tiny      { font-size: 75%;
 }
 a {
-       color: #252E78;
+       color: #1A41A8;
 }
 a:visited {
-       color: #3D2185;
+       color: #2A3798;
 }
 .dirtab { padding: 4px;
           border-collapse: collapse;
-          border: 1px solid #b0b0b0;
+          border: 1px solid #84b0c7;
 }
-TH.dirtab { background: #eeeeff;
+TH.dirtab { background: #e8eef2;
             font-weight: bold;
 }
 HR { height: 1px;
      border: none;
      border-top: 1px solid black;
 }
+
+/* Style for detailed member documentation */
+.memtemplate {
+  font-size: 80%;
+  color: #606060;
+  font-weight: normal;
+} 
+.memnav { 
+  background-color: #e8eef2;
+  border: 1px solid #84b0c7;
+  text-align: center;
+  margin: 2px;
+  margin-right: 15px;
+  padding: 2px;
+}
+.memitem {
+  padding: 4px;
+  background-color: #eef3f5;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #dedeee;
+  -moz-border-radius: 8px 8px 8px 8px;
+}
+.memname {
+  white-space: nowrap;
+  font-weight: bold;
+}
+.memdoc{
+  padding-left: 10px;
+}
+.memproto {
+  background-color: #d5e1e8;
+  width: 100%;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #84b0c7;
+  font-weight: bold;
+  -moz-border-radius: 8px 8px 8px 8px;
+}
+.paramkey {
+  text-align: right;
+}
+.paramtype {
+  white-space: nowrap;
+}
+.paramname {
+  color: #602020;
+  font-style: italic;
+  white-space: nowrap;
+}
+/* End Styling for detailed member documentation */
+
+/* for the tree view */
+.ftvtree {
+       font-family: sans-serif;
+       margin:0.5em;
+}
+.directory { font-size: 9pt; font-weight: bold; }
+.directory h3 { margin: 0px; margin-top: 1em; font-size: 11pt; }
+.directory > h3 { margin-top: 0; }
+.directory p { margin: 0px; white-space: nowrap; }
+.directory div { display: none; margin: 0px; }
+.directory img { vertical-align: -30%; }
index 3e398005f57af143344c879a8363c3d732c9849a..dc5c7126f05b41709f6f1c67de4d201b68555311 100644 (file)
 
 
 
-<!-- Generated by Doxygen 1.4.4 -->
-<div class="qindex"><a class="qindex" href="globals.html">All</a> | <a class="qindexHL" href="globals_func.html">Functions</a></div>
-
+<!-- Generated by Doxygen 1.5.1 -->
+<div class="tabs">
+  <ul>
+    <li><a href="globals.html"><span>All</span></a></li>
+    <li id="current"><a href="globals_func.html"><span>Functions</span></a></li>
+  </ul>
+</div>
+&nbsp;
 <p>
 <ul>
 <li>iniparser_dump()
-: <a class="el" href="iniparser_8h.html#a3">iniparser.h</a><li>iniparser_dump_ini()
-: <a class="el" href="iniparser_8h.html#a2">iniparser.h</a><li>iniparser_find_entry()
-: <a class="el" href="iniparser_8h.html#a11">iniparser.h</a><li>iniparser_freedict()
-: <a class="el" href="iniparser_8h.html#a13">iniparser.h</a><li>iniparser_getboolean()
-: <a class="el" href="iniparser_8h.html#a8">iniparser.h</a><li>iniparser_getdouble()
-: <a class="el" href="iniparser_8h.html#a7">iniparser.h</a><li>iniparser_getint()
-: <a class="el" href="iniparser_8h.html#a6">iniparser.h</a><li>iniparser_getnsec()
-: <a class="el" href="iniparser_8h.html#a0">iniparser.h</a><li>iniparser_getsecname()
-: <a class="el" href="iniparser_8h.html#a1">iniparser.h</a><li>iniparser_getstr()
-: <a class="el" href="iniparser_8h.html#a4">iniparser.h</a><li>iniparser_getstring()
-: <a class="el" href="iniparser_8h.html#a5">iniparser.h</a><li>iniparser_load()
-: <a class="el" href="iniparser_8h.html#a12">iniparser.h</a><li>iniparser_setstr()
-: <a class="el" href="iniparser_8h.html#a9">iniparser.h</a><li>iniparser_unset()
-: <a class="el" href="iniparser_8h.html#a10">iniparser.h</a></ul>
+: <a class="el" href="iniparser_8h.html#046436b3489cd8854ba8e29109250324">iniparser.h</a>
+<li>iniparser_dump_ini()
+: <a class="el" href="iniparser_8h.html#ece0e32de371c9e9592d8333f816dfac">iniparser.h</a>
+<li>iniparser_find_entry()
+: <a class="el" href="iniparser_8h.html#3d67c98bbc0cb5239f024ad54bdc63f1">iniparser.h</a>
+<li>iniparser_freedict()
+: <a class="el" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser.h</a>
+<li>iniparser_getboolean()
+: <a class="el" href="iniparser_8h.html#eb93c13fcbb75efaa396f53bfd73ff4d">iniparser.h</a>
+<li>iniparser_getdouble()
+: <a class="el" href="iniparser_8h.html#480d35322f1252344cf2246ac21ee559">iniparser.h</a>
+<li>iniparser_getint()
+: <a class="el" href="iniparser_8h.html#694eb1110f4200db8648820a0bb405fa">iniparser.h</a>
+<li>iniparser_getnsec()
+: <a class="el" href="iniparser_8h.html#0b5d6cdc7587e2d27a30f5cdc4a91931">iniparser.h</a>
+<li>iniparser_getsecname()
+: <a class="el" href="iniparser_8h.html#393212be805f395bbfdeb1bafa8bb72a">iniparser.h</a>
+<li>iniparser_getstr()
+: <a class="el" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser.h</a>
+<li>iniparser_getstring()
+: <a class="el" href="iniparser_8h.html#7894f8480e1f254d4a1b4a31bdc51b46">iniparser.h</a>
+<li>iniparser_load()
+: <a class="el" href="iniparser_8h.html#b0be559bfb769224b3f1b75e26242a67">iniparser.h</a>
+<li>iniparser_setstr()
+: <a class="el" href="iniparser_8h.html#605a88057bac4c3249513fc588421c32">iniparser.h</a>
+<li>iniparser_unset()
+: <a class="el" href="iniparser_8h.html#7b1a7f2492a35043867fa801b8f21e52">iniparser.h</a>
+</ul>
 
 </body>
 </html>
index e0ca48b87231a892bf59f9e1d84ba62cb1bb5b5b..a09575587d2851aa218b860ae4ee1d98b615e917 100644 (file)
@@ -10,8 +10,8 @@
 
 
 
-<!-- Generated by Doxygen 1.4.4 -->
-<h1>iniparser documentation </h1>
+<!-- Generated by Doxygen 1.5.1 -->
+<h1>iniparser documentation</h1>
 <p>
 <h3 align="center">2.x </h3><hr>
 <h2><a class="anchor" name="welcome">
@@ -22,14 +22,17 @@ iniParser is a simple C library offering ini file parsing services. The library
 What is an ini file?</a></h2>
 An ini file is an ASCII file describing simple parameters (character strings, integers, floating-point values or booleans) in an explicit format, easy to use and modify for users.<p>
 An ini file is segmented into Sections, declared by the following syntax:<p>
-<div class="fragment"><pre class="fragment">    [Section Name]
+<div class="fragment"><pre class="fragment">
+    [Section Name]
        </pre></div><p>
 i.e. the section name enclosed in square brackets, alone on a line. Sections names are allowed to contain any character but square brackets or linefeeds. Slashes (/) are also reserved for hierarchical sections (see below).<p>
 In any section are zero or more variables, declared with the following syntax:<p>
-<div class="fragment"><pre class="fragment">    Key = value ; comment
+<div class="fragment"><pre class="fragment">
+    Key = value ; comment
        </pre></div><p>
 The key is any string (possibly containing blanks). The value is any character on the right side of the equal sign. Values can be given enclosed with quotes. If no quotes are present, the value is understood as containing all characters between the first and the last non-blank characters. The following declarations are identical:<p>
-<div class="fragment"><pre class="fragment">    Hello = "this is a long string value" ; comment
+<div class="fragment"><pre class="fragment">
+    Hello = "this is a long string value" ; comment
     Hello = this is a long string value ; comment
        </pre></div><p>
 The semicolon and comment at the end of the line are optional. If there is a comment, it starts from the first character after the semicolon up to the end of the line.<p>
@@ -46,7 +49,7 @@ Type 'make', that should do it.<p>
 To use the library in your programs, add the following line on top of your module:<p>
 <div class="fragment"><pre class="fragment"><span class="preprocessor">    #include "<a class="code" href="iniparser_8h.html">iniparser.h</a>"</span>
 </pre></div><p>
-And link your program with the iniparser library by adding <code>-liniparser</code>.a to the compile line.<p>
+And link your program with the iniparser library by adding <code>-liniparser.a</code> to the compile line.<p>
 See the file test/initest.c for an example.<p>
 <hr>
 <h2><a class="anchor" name="reference">
@@ -59,22 +62,24 @@ The library is completely documented in its header file. On-line documentation h
 <h2><a class="anchor" name="usage">
 Using the parser</a></h2>
 Comments are discarded by the parser. Then sections are identified, and in each section a new entry is created for every keyword found. The keywords are stored with the following syntax:<p>
-<div class="fragment"><pre class="fragment">    [Section]
+<div class="fragment"><pre class="fragment">
+    [Section]
     Keyword = value ; comment
        </pre></div><p>
 is converted to the following key pair:<p>
-<div class="fragment"><pre class="fragment">    ("section:keyword", "value")
+<div class="fragment"><pre class="fragment">
+    ("section:keyword", "value")
        </pre></div><p>
 This means that if you want to retrieve the value that was stored in the section called <code>Pizza</code>, in the keyword <code>Cheese</code>, you would make a request to the dictionary for <code>"pizza:cheese"</code>. All section and keyword names are converted to lowercase before storage in the structure. The value side is conserved as it has been parsed, though.<p>
-Section names are also stored in the structure. They are stored using as key the section name, and a NULL associated value. They can be queried through <a class="el" href="iniparser_8h.html#a11">iniparser_find_entry()</a>.<p>
-To launch the parser, simply use the function called <a class="el" href="iniparser_8h.html#a12">iniparser_load()</a>, which takes an input file name and returns a newly allocated <em>dictionary</em> structure. This latter object should remain opaque to the user and only accessed through the following accessor functions:<p>
+Section names are also stored in the structure. They are stored using as key the section name, and a NULL associated value. They can be queried through <a class="el" href="iniparser_8h.html#3d67c98bbc0cb5239f024ad54bdc63f1">iniparser_find_entry()</a>.<p>
+To launch the parser, simply use the function called <a class="el" href="iniparser_8h.html#b0be559bfb769224b3f1b75e26242a67">iniparser_load()</a>, which takes an input file name and returns a newly allocated <em>dictionary</em> structure. This latter object should remain opaque to the user and only accessed through the following accessor functions:<p>
 <ul>
-<li><a class="el" href="iniparser_8h.html#a4">iniparser_getstr()</a></li><li><a class="el" href="iniparser_8h.html#a6">iniparser_getint()</a></li><li><a class="el" href="iniparser_8h.html#a7">iniparser_getdouble()</a></li><li><a class="el" href="iniparser_8h.html#a8">iniparser_getboolean()</a></li></ul>
+<li><a class="el" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser_getstr()</a></li><li><a class="el" href="iniparser_8h.html#694eb1110f4200db8648820a0bb405fa">iniparser_getint()</a></li><li><a class="el" href="iniparser_8h.html#480d35322f1252344cf2246ac21ee559">iniparser_getdouble()</a></li><li><a class="el" href="iniparser_8h.html#eb93c13fcbb75efaa396f53bfd73ff4d">iniparser_getboolean()</a></li></ul>
 <p>
-Finally, discard this structure using <a class="el" href="iniparser_8h.html#a13">iniparser_freedict()</a>.<p>
+Finally, discard this structure using <a class="el" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser_freedict()</a>.<p>
 All values parsed from the ini file are stored as strings. The getint, getdouble and getboolean accessors are just converting these strings to the requested type on the fly, but you could basically perform this conversion by yourself after having called the getstr accessor.<p>
-Notice that the <a class="el" href="iniparser_8h.html#a8">iniparser_getboolean()</a> function will return an integer (0 or 1), trying to make sense of what was found in the file. Strings starting with "y", "Y", "t", "T" or "1" are considered true values (return 1), strings starting with "n", "N", "f", "F", "0" are considered false (return 0). This allows flexible handling of boolean answers.<p>
-If you want to add extra information into the structure that was not present in the ini file, you can use <a class="el" href="iniparser_8h.html#a9">iniparser_setstr()</a> to insert a string.<p>
+Notice that the <a class="el" href="iniparser_8h.html#eb93c13fcbb75efaa396f53bfd73ff4d">iniparser_getboolean()</a> function will return an integer (0 or 1), trying to make sense of what was found in the file. Strings starting with "y", "Y", "t", "T" or "1" are considered true values (return 1), strings starting with "n", "N", "f", "F", "0" are considered false (return 0). This allows flexible handling of boolean answers.<p>
+If you want to add extra information into the structure that was not present in the ini file, you can use <a class="el" href="iniparser_8h.html#605a88057bac4c3249513fc588421c32">iniparser_setstr()</a> to insert a string.<p>
 <hr>
 <h2><a class="anchor" name="implementation">
 A word about the implementation</a></h2>
@@ -84,7 +89,8 @@ The dictionary structure is a pretty simple dictionary implementation which migh
 Hierarchical ini files</a></h2>
 ini files are nice to present informations to the user in a readable format, but lack a very useful feature: the possibility of organizing data in a hierarchical (tree-like) fashion. The following convention can be used to make ini files obtain this second dimension:<p>
 A section depends on another section if it contains its name as a prefix, separated by slashes (/). For example: we have 2 main sections in the ini file. The first one is called <code>Pizza</code> and has two child subsections called <code>Cheese</code> and <code>Ham</code>. The second main section in the ini file is called <code>Wine</code> and has two child subsections called <code>Year</code> and <code>Grape</code>. As a tree, this could appear as:<p>
-<div class="fragment"><pre class="fragment">    |
+<div class="fragment"><pre class="fragment">
+    |
     +-- Pizza
     |     +-- Cheese
     |     +-- Ham
@@ -93,7 +99,8 @@ A section depends on another section if it contains its name as a prefix, separa
          +--- Grape
        </pre></div><p>
 In an ini file, that would be converted to:<p>
-<div class="fragment"><pre class="fragment">    [Pizza]
+<div class="fragment"><pre class="fragment">
+    [Pizza]
 
     [Pizza/Cheese]
     Name   = Gorgonzola ;
@@ -116,15 +123,16 @@ This proposal is actually more related to the way people write ini files, more t
 Accessing the above tree would give something like (error checking removed for clarity sake):<p>
 <div class="fragment"><pre class="fragment">    dictionary * d ;
 
-    d = <a class="code" href="iniparser_8h.html#a12">iniparser_load</a>(<span class="stringliteral">"example.ini"</span>);
+    d = <a class="code" href="iniparser_8h.html#b0be559bfb769224b3f1b75e26242a67">iniparser_load</a>(<span class="stringliteral">"example.ini"</span>);
 
-    printf(<span class="stringliteral">"cheese name is %s\n"</span>, <a class="code" href="iniparser_8h.html#a4">iniparser_getstr</a>(d, <span class="stringliteral">"pizza/cheese:name"</span>));
-    printf(<span class="stringliteral">"grape name is %s\n"</span>,  <a class="code" href="iniparser_8h.html#a4">iniparser_getstr</a>(d, <span class="stringliteral">"wine/grape:name"</span>));
+    printf(<span class="stringliteral">"cheese name is %s\n"</span>, <a class="code" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser_getstr</a>(d, <span class="stringliteral">"pizza/cheese:name"</span>));
+    printf(<span class="stringliteral">"grape name is %s\n"</span>,  <a class="code" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser_getstr</a>(d, <span class="stringliteral">"wine/grape:name"</span>));
 
-    <a class="code" href="iniparser_8h.html#a13">iniparser_freedict</a>(d);
+    <a class="code" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser_freedict</a>(d);
 </pre></div><p>
 The whole ini file above is represented in the dictionary as the following list of pairs:<p>
-<div class="fragment"><pre class="fragment">    key                             value
+<div class="fragment"><pre class="fragment">
+    key                             value
 
     "pizza"                         NULL
     "pizza/cheese"                  NULL
index 3f0534f31ec457aa42febd16f2c14faddad2152c..9a7d5ecbc345c6bbf42a273ff011bcb4645d0942 100644 (file)
 
 
 
-<!-- Generated by Doxygen 1.4.4 -->
-<div class="nav">
-<a class="el" href="dir_000000.html">src</a></div>
+<!-- Generated by Doxygen 1.5.1 -->
 <h1>iniparser.h File Reference</h1>Parser for ini files. <a href="#_details">More...</a>
 <p>
 <table border="0" cellpadding="0" cellspacing="0">
 <tr><td></td></tr>
 <tr><td colspan="2"><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a0">iniparser_getnsec</a> (dictionary *d)</td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#0b5d6cdc7587e2d27a30f5cdc4a91931">iniparser_getnsec</a> (dictionary *d)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of sections in a dictionary.  <a href="#a0"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a1">iniparser_getsecname</a> (dictionary *d, int n)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of sections in a dictionary.  <a href="#0b5d6cdc7587e2d27a30f5cdc4a91931"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#393212be805f395bbfdeb1bafa8bb72a">iniparser_getsecname</a> (dictionary *d, int n)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get name for section n in a dictionary.  <a href="#a1"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a2">iniparser_dump_ini</a> (dictionary *d, FILE *f)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get name for section n in a dictionary.  <a href="#393212be805f395bbfdeb1bafa8bb72a"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#ece0e32de371c9e9592d8333f816dfac">iniparser_dump_ini</a> (dictionary *d, FILE *f)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save a dictionary to a loadable ini file.  <a href="#a2"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a3">iniparser_dump</a> (dictionary *d, FILE *f)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Save a dictionary to a loadable ini file.  <a href="#ece0e32de371c9e9592d8333f816dfac"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#046436b3489cd8854ba8e29109250324">iniparser_dump</a> (dictionary *d, FILE *f)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump a dictionary to an opened file pointer.  <a href="#a3"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a4">iniparser_getstr</a> (dictionary *d, char *key)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dump a dictionary to an opened file pointer.  <a href="#046436b3489cd8854ba8e29109250324"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#587eafb48937fdee8ae414ad7a666db8">iniparser_getstr</a> (dictionary *d, const char *key)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, return NULL if not found.  <a href="#a4"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a5">iniparser_getstring</a> (dictionary *d, char *key, char *def)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, return NULL if not found.  <a href="#587eafb48937fdee8ae414ad7a666db8"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#7894f8480e1f254d4a1b4a31bdc51b46">iniparser_getstring</a> (dictionary *d, const char *key, char *def)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key.  <a href="#a5"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a6">iniparser_getint</a> (dictionary *d, char *key, int notfound)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key.  <a href="#7894f8480e1f254d4a1b4a31bdc51b46"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#694eb1110f4200db8648820a0bb405fa">iniparser_getint</a> (dictionary *d, const char *key, int notfound)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to an int.  <a href="#a6"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a7">iniparser_getdouble</a> (dictionary *d, char *key, double notfound)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to an int.  <a href="#694eb1110f4200db8648820a0bb405fa"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">double&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#480d35322f1252344cf2246ac21ee559">iniparser_getdouble</a> (dictionary *d, char *key, double notfound)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to a double.  <a href="#a7"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a8">iniparser_getboolean</a> (dictionary *d, char *key, int notfound)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to a double.  <a href="#480d35322f1252344cf2246ac21ee559"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#eb93c13fcbb75efaa396f53bfd73ff4d">iniparser_getboolean</a> (dictionary *d, const char *key, int notfound)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to a boolean.  <a href="#a8"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a9">iniparser_setstr</a> (dictionary *ini, char *entry, char *val)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the string associated to a key, convert to a boolean.  <a href="#eb93c13fcbb75efaa396f53bfd73ff4d"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#605a88057bac4c3249513fc588421c32">iniparser_setstr</a> (dictionary *ini, char *entry, char *val)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an entry in a dictionary.  <a href="#a9"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a10">iniparser_unset</a> (dictionary *ini, char *entry)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set an entry in a dictionary.  <a href="#605a88057bac4c3249513fc588421c32"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#7b1a7f2492a35043867fa801b8f21e52">iniparser_unset</a> (dictionary *ini, char *entry)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete an entry in a dictionary.  <a href="#a10"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a11">iniparser_find_entry</a> (dictionary *ini, char *entry)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete an entry in a dictionary.  <a href="#7b1a7f2492a35043867fa801b8f21e52"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#3d67c98bbc0cb5239f024ad54bdc63f1">iniparser_find_entry</a> (dictionary *ini, char *entry)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds out if a given entry exists in a dictionary.  <a href="#a11"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">dictionary *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a12">iniparser_load</a> (char *ininame)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Finds out if a given entry exists in a dictionary.  <a href="#3d67c98bbc0cb5239f024ad54bdc63f1"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">dictionary *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#b0be559bfb769224b3f1b75e26242a67">iniparser_load</a> (const char *ininame)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse an ini file and return an allocated dictionary object.  <a href="#a12"></a><br></td></tr>
-<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#a13">iniparser_freedict</a> (dictionary *d)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parse an ini file and return an allocated dictionary object.  <a href="#b0be559bfb769224b3f1b75e26242a67"></a><br></td></tr>
+<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser_freedict</a> (dictionary *d)</td></tr>
 
-<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all memory associated to an ini dictionary.  <a href="#a13"></a><br></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Free all memory associated to an ini dictionary.  <a href="#90549ee518523921886b74454ff872eb"></a><br></td></tr>
 </table>
 <hr><a name="_details"></a><h2>Detailed Description</h2>
 Parser for ini files. 
 <p>
-<dl compact><dt><b>Author:</b></dt><dd>N. Devillard </dd></dl>
-<dl compact><dt><b>Date:</b></dt><dd>Mar 2000 </dd></dl>
-<dl compact><dt><b>Version:</b></dt><dd><dl compact><dt><b>Revision</b></dt><dd>1.20 </dd></dl>
+<dl class="author" compact><dt><b>Author:</b></dt><dd>N. Devillard </dd></dl>
+<dl class="date" compact><dt><b>Date:</b></dt><dd>Mar 2000 </dd></dl>
+<dl class="version" compact><dt><b>Version:</b></dt><dd><dl class="rcs" compact><dt><b>Revision</b></dt><dd>1.23 </dd></dl>
 </dd></dl>
 <hr><h2>Function Documentation</h2>
-<a class="anchor" name="a3"></a><!-- doxytag: member="iniparser.h::iniparser_dump" ref="a3" args="(dictionary *d, FILE *f)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+<a class="anchor" name="046436b3489cd8854ba8e29109250324"></a><!-- doxytag: member="iniparser.h::iniparser_dump" ref="046436b3489cd8854ba8e29109250324" args="(dictionary *d, FILE *f)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">void iniparser_dump           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>d</em>, </td>
+          <td class="memname">void iniparser_dump           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>FILE *&nbsp;</td>
-          <td class="mdname" nowrap> <em>f</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE *&nbsp;</td>
+          <td class="paramname"> <em>f</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Dump a dictionary to an opened file pointer. 
@@ -111,42 +101,34 @@ Dump a dictionary to an opened file pointer.
     <tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>Opened file pointer to dump to. </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
-This function prints out the contents of a dictionary, one element by line, onto the provided file pointer. It is OK to specify <code>stderr</code> or <code>stdout</code> as output files. This function is meant for debugging purposes mostly.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a2"></a><!-- doxytag: member="iniparser.h::iniparser_dump_ini" ref="a2" args="(dictionary *d, FILE *f)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
+This function prints out the contents of a dictionary, one element by line, onto the provided file pointer. It is OK to specify <code>stderr</code> or <code>stdout</code> as output files. This function is meant for debugging purposes mostly. 
+</div>
+</div><p>
+<a class="anchor" name="ece0e32de371c9e9592d8333f816dfac"></a><!-- doxytag: member="iniparser.h::iniparser_dump_ini" ref="ece0e32de371c9e9592d8333f816dfac" args="(dictionary *d, FILE *f)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">void iniparser_dump_ini           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>d</em>, </td>
+          <td class="memname">void iniparser_dump_ini           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>FILE *&nbsp;</td>
-          <td class="mdname" nowrap> <em>f</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">FILE *&nbsp;</td>
+          <td class="paramname"> <em>f</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Save a dictionary to a loadable ini file. 
@@ -157,42 +139,34 @@ Save a dictionary to a loadable ini file.
     <tr><td valign="top"></td><td valign="top"><em>f</em>&nbsp;</td><td>Opened file pointer to dump to </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
-This function dumps a given dictionary into a loadable ini file. It is Ok to specify <code>stderr</code> or <code>stdout</code> as output files.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a11"></a><!-- doxytag: member="iniparser.h::iniparser_find_entry" ref="a11" args="(dictionary *ini, char *entry)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
+This function dumps a given dictionary into a loadable ini file. It is Ok to specify <code>stderr</code> or <code>stdout</code> as output files. 
+</div>
+</div><p>
+<a class="anchor" name="3d67c98bbc0cb5239f024ad54bdc63f1"></a><!-- doxytag: member="iniparser.h::iniparser_find_entry" ref="3d67c98bbc0cb5239f024ad54bdc63f1" args="(dictionary *ini, char *entry)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">int iniparser_find_entry           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>ini</em>, </td>
+          <td class="memname">int iniparser_find_entry           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>ini</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>entry</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>entry</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Finds out if a given entry exists in a dictionary. 
@@ -203,33 +177,25 @@ Finds out if a given entry exists in a dictionary.
     <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>Name of the entry to look for </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>integer 1 if entry exists, 0 otherwise</dd></dl>
-Finds out if a given entry exists in the dictionary. Since sections are stored as keys with NULL associated values, this is the only way of querying for the presence of sections in a dictionary.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a13"></a><!-- doxytag: member="iniparser.h::iniparser_freedict" ref="a13" args="(dictionary *d)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">void iniparser_freedict           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname1" valign="top" nowrap> <em>d</em>          </td>
-          <td class="md" valign="top">&nbsp;)&nbsp;</td>
-          <td class="md" nowrap></td>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>integer 1 if entry exists, 0 otherwise</dd></dl>
+Finds out if a given entry exists in the dictionary. Since sections are stored as keys with NULL associated values, this is the only way of querying for the presence of sections in a dictionary. 
+</div>
+</div><p>
+<a class="anchor" name="90549ee518523921886b74454ff872eb"></a><!-- doxytag: member="iniparser.h::iniparser_freedict" ref="90549ee518523921886b74454ff872eb" args="(dictionary *d)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">void iniparser_freedict           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Free all memory associated to an ini dictionary. 
@@ -239,48 +205,40 @@ Free all memory associated to an ini dictionary.
     <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>Dictionary to free </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
-Free all memory associated to an ini dictionary. It is mandatory to call this function before the dictionary object gets out of the current context.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a8"></a><!-- doxytag: member="iniparser.h::iniparser_getboolean" ref="a8" args="(dictionary *d, char *key, int notfound)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
+Free all memory associated to an ini dictionary. It is mandatory to call this function before the dictionary object gets out of the current context. 
+</div>
+</div><p>
+<a class="anchor" name="eb93c13fcbb75efaa396f53bfd73ff4d"></a><!-- doxytag: member="iniparser.h::iniparser_getboolean" ref="eb93c13fcbb75efaa396f53bfd73ff4d" args="(dictionary *d, const char *key, int notfound)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">int iniparser_getboolean           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>d</em>, </td>
+          <td class="memname">int iniparser_getboolean           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>key</em>, </td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>key</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>int&nbsp;</td>
-          <td class="mdname" nowrap> <em>notfound</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>notfound</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Get the string associated to a key, convert to a boolean. 
@@ -292,7 +250,7 @@ Get the string associated to a key, convert to a boolean.
     <tr><td valign="top"></td><td valign="top"><em>notfound</em>&nbsp;</td><td>Value to return in case of error </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>integer</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>integer</dd></dl>
 This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned.<p>
 A true boolean is found if one of the following is matched:<p>
 <ul>
@@ -302,47 +260,39 @@ A false boolean is found if one of the following is matched:<p>
 <ul>
 <li>A string starting with 'n'</li><li>A string starting with 'N'</li><li>A string starting with 'f'</li><li>A string starting with 'F'</li><li>A string starting with '0'</li></ul>
 <p>
-The notfound value returned if no boolean is identified, does not necessarily have to be 0 or 1.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a7"></a><!-- doxytag: member="iniparser.h::iniparser_getdouble" ref="a7" args="(dictionary *d, char *key, double notfound)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+The notfound value returned if no boolean is identified, does not necessarily have to be 0 or 1. 
+</div>
+</div><p>
+<a class="anchor" name="480d35322f1252344cf2246ac21ee559"></a><!-- doxytag: member="iniparser.h::iniparser_getdouble" ref="480d35322f1252344cf2246ac21ee559" args="(dictionary *d, char *key, double notfound)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">double iniparser_getdouble           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>d</em>, </td>
+          <td class="memname">double iniparser_getdouble           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>key</em>, </td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>key</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>double&nbsp;</td>
-          <td class="mdname" nowrap> <em>notfound</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">double&nbsp;</td>
+          <td class="paramname"> <em>notfound</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Get the string associated to a key, convert to a double. 
@@ -354,48 +304,40 @@ Get the string associated to a key, convert to a double.
     <tr><td valign="top"></td><td valign="top"><em>notfound</em>&nbsp;</td><td>Value to return in case of error </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>double</dd></dl>
-This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a6"></a><!-- doxytag: member="iniparser.h::iniparser_getint" ref="a6" args="(dictionary *d, char *key, int notfound)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>double</dd></dl>
+This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned. 
+</div>
+</div><p>
+<a class="anchor" name="694eb1110f4200db8648820a0bb405fa"></a><!-- doxytag: member="iniparser.h::iniparser_getint" ref="694eb1110f4200db8648820a0bb405fa" args="(dictionary *d, const char *key, int notfound)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">int iniparser_getint           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>d</em>, </td>
+          <td class="memname">int iniparser_getint           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>key</em>, </td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>key</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>int&nbsp;</td>
-          <td class="mdname" nowrap> <em>notfound</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>notfound</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Get the string associated to a key, convert to an int. 
@@ -407,33 +349,31 @@ Get the string associated to a key, convert to an int.
     <tr><td valign="top"></td><td valign="top"><em>notfound</em>&nbsp;</td><td>Value to return in case of error </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>integer</dd></dl>
-This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a0"></a><!-- doxytag: member="iniparser.h::iniparser_getnsec" ref="a0" args="(dictionary *d)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">int iniparser_getnsec           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname1" valign="top" nowrap> <em>d</em>          </td>
-          <td class="md" valign="top">&nbsp;)&nbsp;</td>
-          <td class="md" nowrap></td>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>integer</dd></dl>
+This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the notfound value is returned.<p>
+Supported values for integers include the usual C notation so decimal, octal (starting with 0) and hexadecimal (starting with 0x) are supported. Examples:<p>
+<ul>
+<li>"42" -&gt; 42</li><li>"042" -&gt; 34 (octal -&gt; decimal)</li><li>"0x42" -&gt; 66 (hexa -&gt; decimal)</li></ul>
+<p>
+Warning: the conversion may overflow in various ways. Conversion is totally outsourced to strtol(), see the associated man page for overflow handling.<p>
+Credits: Thanks to A. Becker for suggesting strtol() 
+</div>
+</div><p>
+<a class="anchor" name="0b5d6cdc7587e2d27a30f5cdc4a91931"></a><!-- doxytag: member="iniparser.h::iniparser_getnsec" ref="0b5d6cdc7587e2d27a30f5cdc4a91931" args="(dictionary *d)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">int iniparser_getnsec           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Get number of sections in a dictionary. 
@@ -443,44 +383,36 @@ Get number of sections in a dictionary.
     <tr><td valign="top"></td><td valign="top"><em>d</em>&nbsp;</td><td>Dictionary to examine </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>int Number of sections found in dictionary</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>int Number of sections found in dictionary</dd></dl>
 This function returns the number of sections found in a dictionary. The test to recognize sections is done on the string stored in the dictionary: a section name is given as "section" whereas a key is stored as "section:key", thus the test looks for entries that do not contain a colon.<p>
 This clearly fails in the case a section name contains a colon, but this should simply be avoided.<p>
-This function returns -1 in case of error.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a1"></a><!-- doxytag: member="iniparser.h::iniparser_getsecname" ref="a1" args="(dictionary *d, int n)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+This function returns -1 in case of error. 
+</div>
+</div><p>
+<a class="anchor" name="393212be805f395bbfdeb1bafa8bb72a"></a><!-- doxytag: member="iniparser.h::iniparser_getsecname" ref="393212be805f395bbfdeb1bafa8bb72a" args="(dictionary *d, int n)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">char* iniparser_getsecname           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>d</em>, </td>
+          <td class="memname">char* iniparser_getsecname           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>int&nbsp;</td>
-          <td class="mdname" nowrap> <em>n</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">int&nbsp;</td>
+          <td class="paramname"> <em>n</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Get name for section n in a dictionary. 
@@ -491,43 +423,35 @@ Get name for section n in a dictionary.
     <tr><td valign="top"></td><td valign="top"><em>n</em>&nbsp;</td><td>Section number (from 0 to nsec-1). </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>Pointer to char string</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to char string</dd></dl>
 This function locates the n-th section in a dictionary and returns its name as a pointer to a string statically allocated inside the dictionary. Do not free or modify the returned string!<p>
-This function returns NULL in case of error.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a4"></a><!-- doxytag: member="iniparser.h::iniparser_getstr" ref="a4" args="(dictionary *d, char *key)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+This function returns NULL in case of error. 
+</div>
+</div><p>
+<a class="anchor" name="587eafb48937fdee8ae414ad7a666db8"></a><!-- doxytag: member="iniparser.h::iniparser_getstr" ref="587eafb48937fdee8ae414ad7a666db8" args="(dictionary *d, const char *key)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">char* iniparser_getstr           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>d</em>, </td>
+          <td class="memname">char* iniparser_getstr           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>key</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Get the string associated to a key, return NULL if not found. 
@@ -538,49 +462,41 @@ Get the string associated to a key, return NULL if not found.
     <tr><td valign="top"></td><td valign="top"><em>key</em>&nbsp;</td><td>Key string to look for </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>pointer to statically allocated character string, or NULL.</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to statically allocated character string, or NULL.</dd></dl>
 This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, NULL is returned. The returned char pointer is pointing to a string allocated in the dictionary, do not free or modify it.<p>
-This function is only provided for backwards compatibility with previous versions of iniparser. It is recommended to use <a class="el" href="iniparser_8h.html#a5">iniparser_getstring()</a> instead.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a5"></a><!-- doxytag: member="iniparser.h::iniparser_getstring" ref="a5" args="(dictionary *d, char *key, char *def)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+This function is only provided for backwards compatibility with previous versions of iniparser. It is recommended to use <a class="el" href="iniparser_8h.html#7894f8480e1f254d4a1b4a31bdc51b46">iniparser_getstring()</a> instead. 
+</div>
+</div><p>
+<a class="anchor" name="7894f8480e1f254d4a1b4a31bdc51b46"></a><!-- doxytag: member="iniparser.h::iniparser_getstring" ref="7894f8480e1f254d4a1b4a31bdc51b46" args="(dictionary *d, const char *key, char *def)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">char* iniparser_getstring           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>d</em>, </td>
+          <td class="memname">char* iniparser_getstring           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>d</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>key</em>, </td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>key</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>def</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>def</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Get the string associated to a key. 
@@ -592,33 +508,25 @@ Get the string associated to a key.
     <tr><td valign="top"></td><td valign="top"><em>def</em>&nbsp;</td><td>Default value to return if key not found. </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>pointer to statically allocated character string</dd></dl>
-This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the pointer passed as 'def' is returned. The returned char pointer is pointing to a string allocated in the dictionary, do not free or modify it.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a12"></a><!-- doxytag: member="iniparser.h::iniparser_load" ref="a12" args="(char *ininame)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
-        <tr>
-          <td class="md" nowrap valign="top">dictionary* iniparser_load           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">char *&nbsp;</td>
-          <td class="mdname1" valign="top" nowrap> <em>ininame</em>          </td>
-          <td class="md" valign="top">&nbsp;)&nbsp;</td>
-          <td class="md" nowrap></td>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>pointer to statically allocated character string</dd></dl>
+This function queries a dictionary for a key. A key as read from an ini file is given as "section:key". If the key cannot be found, the pointer passed as 'def' is returned. The returned char pointer is pointing to a string allocated in the dictionary, do not free or modify it. 
+</div>
+</div><p>
+<a class="anchor" name="b0be559bfb769224b3f1b75e26242a67"></a><!-- doxytag: member="iniparser.h::iniparser_load" ref="b0be559bfb769224b3f1b75e26242a67" args="(const char *ininame)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname">dictionary* iniparser_load           </td>
+          <td>(</td>
+          <td class="paramtype">const char *&nbsp;</td>
+          <td class="paramname"> <em>ininame</em>          </td>
+          <td>&nbsp;)&nbsp;</td>
+          <td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Parse an ini file and return an allocated dictionary object. 
@@ -628,49 +536,41 @@ Parse an ini file and return an allocated dictionary object.
     <tr><td valign="top"></td><td valign="top"><em>ininame</em>&nbsp;</td><td>Name of the ini file to read. </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>Pointer to newly allocated dictionary</dd></dl>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>Pointer to newly allocated dictionary</dd></dl>
 This is the parser for ini files. This function is called, providing the name of the file to be read. It returns a dictionary object that should not be accessed directly, but through accessor functions instead.<p>
-The returned dictionary must be freed using <a class="el" href="iniparser_8h.html#a13">iniparser_freedict()</a>.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a9"></a><!-- doxytag: member="iniparser.h::iniparser_setstr" ref="a9" args="(dictionary *ini, char *entry, char *val)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+The returned dictionary must be freed using <a class="el" href="iniparser_8h.html#90549ee518523921886b74454ff872eb">iniparser_freedict()</a>. 
+</div>
+</div><p>
+<a class="anchor" name="605a88057bac4c3249513fc588421c32"></a><!-- doxytag: member="iniparser.h::iniparser_setstr" ref="605a88057bac4c3249513fc588421c32" args="(dictionary *ini, char *entry, char *val)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">int iniparser_setstr           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>ini</em>, </td>
+          <td class="memname">int iniparser_setstr           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>ini</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>entry</em>, </td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>entry</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>val</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>val</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Set an entry in a dictionary. 
@@ -682,42 +582,34 @@ Set an entry in a dictionary.
     <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>New value to associate to the entry. </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>int 0 if Ok, -1 otherwise.</dd></dl>
-If the given entry can be found in the dictionary, it is modified to contain the provided value. If it cannot be found, -1 is returned. It is Ok to set val to NULL.    </td>
-  </tr>
-</table>
-<a class="anchor" name="a10"></a><!-- doxytag: member="iniparser.h::iniparser_unset" ref="a10" args="(dictionary *ini, char *entry)" --><p>
-<table class="mdTable" cellpadding="2" cellspacing="0">
-  <tr>
-    <td class="mdRow">
-      <table cellpadding="0" cellspacing="0" border="0">
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>int 0 if Ok, -1 otherwise.</dd></dl>
+If the given entry can be found in the dictionary, it is modified to contain the provided value. If it cannot be found, -1 is returned. It is Ok to set val to NULL. 
+</div>
+</div><p>
+<a class="anchor" name="7b1a7f2492a35043867fa801b8f21e52"></a><!-- doxytag: member="iniparser.h::iniparser_unset" ref="7b1a7f2492a35043867fa801b8f21e52" args="(dictionary *ini, char *entry)" -->
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
         <tr>
-          <td class="md" nowrap valign="top">void iniparser_unset           </td>
-          <td class="md" valign="top">(&nbsp;</td>
-          <td class="md" nowrap valign="top">dictionary *&nbsp;</td>
-          <td class="mdname" nowrap> <em>ini</em>, </td>
+          <td class="memname">void iniparser_unset           </td>
+          <td>(</td>
+          <td class="paramtype">dictionary *&nbsp;</td>
+          <td class="paramname"> <em>ini</em>, </td>
         </tr>
         <tr>
-          <td class="md" nowrap align="right"></td>
-          <td class="md"></td>
-          <td class="md" nowrap>char *&nbsp;</td>
-          <td class="mdname" nowrap> <em>entry</em></td>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype">char *&nbsp;</td>
+          <td class="paramname"> <em>entry</em></td><td>&nbsp;</td>
         </tr>
         <tr>
-          <td class="md"></td>
-          <td class="md">)&nbsp;</td>
-          <td class="md" colspan="2"></td>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td><td width="100%"></td>
         </tr>
       </table>
-    </td>
-  </tr>
-</table>
-<table cellspacing="5" cellpadding="0" border="0">
-  <tr>
-    <td>
-      &nbsp;
-    </td>
-    <td>
+</div>
+<div class="memdoc">
 
 <p>
 Delete an entry in a dictionary. 
@@ -728,10 +620,10 @@ Delete an entry in a dictionary.
     <tr><td valign="top"></td><td valign="top"><em>entry</em>&nbsp;</td><td>Entry to delete (entry name) </td></tr>
   </table>
 </dl>
-<dl compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
-If the given entry can be found, it is deleted from the dictionary.    </td>
-  </tr>
-</table>
+<dl class="return" compact><dt><b>Returns:</b></dt><dd>void</dd></dl>
+If the given entry can be found, it is deleted from the dictionary. 
+</div>
+</div><p>
 
 </body>
 </html>
index 38a963bbc7face91ed16774066022f2e60363649..a00eed2f9eb4438c2ae9b42a58a3d0f020e79db3 100644 (file)
@@ -10,7 +10,7 @@
 
 
 
-<!-- Generated by Doxygen 1.4.4 -->
+<!-- Generated by Doxygen 1.5.1 -->
 <h1>iniparser.main File Reference</h1><table border="0" cellpadding="0" cellspacing="0">
 <tr><td></td></tr>
 </table>
diff --git a/source/iniparser/html/tab_b.gif b/source/iniparser/html/tab_b.gif
new file mode 100644 (file)
index 0000000..0d62348
Binary files /dev/null and b/source/iniparser/html/tab_b.gif differ
diff --git a/source/iniparser/html/tab_l.gif b/source/iniparser/html/tab_l.gif
new file mode 100644 (file)
index 0000000..9b1e633
Binary files /dev/null and b/source/iniparser/html/tab_l.gif differ
diff --git a/source/iniparser/html/tab_r.gif b/source/iniparser/html/tab_r.gif
new file mode 100644 (file)
index 0000000..ce9dd9f
Binary files /dev/null and b/source/iniparser/html/tab_r.gif differ
diff --git a/source/iniparser/html/tabs.css b/source/iniparser/html/tabs.css
new file mode 100644 (file)
index 0000000..a61552a
--- /dev/null
@@ -0,0 +1,102 @@
+/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */
+
+DIV.tabs
+{
+   float            : left;
+   width            : 100%;
+   background       : url("tab_b.gif") repeat-x bottom;
+   margin-bottom    : 4px;
+}
+
+DIV.tabs UL
+{
+   margin           : 0px;
+   padding-left     : 10px;
+   list-style       : none;
+}
+
+DIV.tabs LI, DIV.tabs FORM
+{
+   display          : inline;
+   margin           : 0px;
+   padding          : 0px;
+}
+
+DIV.tabs FORM
+{
+   float            : right;
+}
+
+DIV.tabs A
+{
+   float            : left;
+   background       : url("tab_r.gif") no-repeat right top;
+   border-bottom    : 1px solid #84B0C7;
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+DIV.tabs A:hover
+{
+   background-position: 100% -150px;
+}
+
+DIV.tabs A:link, DIV.tabs A:visited,
+DIV.tabs A:active, DIV.tabs A:hover
+{
+       color: #1A419D;
+}
+
+DIV.tabs SPAN
+{
+   float            : left;
+   display          : block;
+   background       : url("tab_l.gif") no-repeat left top;
+   padding          : 5px 9px;
+   white-space      : nowrap;
+}
+
+DIV.tabs INPUT
+{
+   float            : right;
+   display          : inline;
+   font-size        : 1em;
+}
+
+DIV.tabs TD
+{
+   font-size        : x-small;
+   font-weight      : bold;
+   text-decoration  : none;
+}
+
+
+
+/* Commented Backslash Hack hides rule from IE5-Mac \*/
+DIV.tabs SPAN {float : none;}
+/* End IE5-Mac hack */
+
+DIV.tabs A:hover SPAN
+{
+   background-position: 0% -150px;
+}
+
+DIV.tabs LI#current A
+{
+   background-position: 100% -150px;
+   border-width     : 0px;
+}
+
+DIV.tabs LI#current SPAN
+{
+   background-position: 0% -150px;
+   padding-bottom   : 6px;
+}
+
+DIV.nav
+{
+   background       : none;
+   border           : none;
+   border-bottom    : 1px solid #84B0C7;
+}
index edbd6f9a353f01e8afc637f4059b9770261df5a2..b9d426dc7e326e7c6523b4cd3c97174bd165fdf6 100644 (file)
@@ -4,7 +4,7 @@
    @file       dictionary.c
    @author     N. Devillard
    @date       Aug 2000
-   @version    $Revision: 1.23 $
+   @version    $Revision: 1.25 $
    @brief      Implements a dictionary for string variables.
 
    This module implements a simple dictionary object, i.e. a list
 /*--------------------------------------------------------------------------*/
 
 /*
-       $Id: dictionary.c,v 1.23 2002/06/17 09:30:46 ndevilla Exp $
+       $Id: dictionary.c,v 1.25 2007-05-27 13:03:43 ndevilla Exp $
        $Author: ndevilla $
-       $Date: 2002/06/17 09:30:46 $
-       $Revision: 1.23 $
+       $Date: 2007-05-27 13:03:43 $
+       $Revision: 1.25 $
 */
 
 /*---------------------------------------------------------------------------
index dcab6e75117a7f4f34a3ad9fa5b9b4e917793228..b332680b04cdf4d50dcc3c6a2261fcf166cfcc2c 100644 (file)
@@ -14,9 +14,9 @@
 /*--------------------------------------------------------------------------*/
 
 /*
-       $Id: dictionary.h,v 1.11 2002/06/17 09:30:46 ndevilla Exp $
+       $Id: dictionary.h,v 1.11 2002-06-17 09:30:46 ndevilla Exp $
        $Author: ndevilla $
-       $Date: 2002/06/17 09:30:46 $
+       $Date: 2002-06-17 09:30:46 $
        $Revision: 1.11 $
 */
 
index 0cb452b26550faaad36f9464b38f1ccb396ffb3b..09340876d8c85b45106bdffec3f9cc0d9973fcbf 100644 (file)
@@ -4,16 +4,16 @@
    @file    iniparser.c
    @author  N. Devillard
    @date    Mar 2000
-   @version $Revision: 2.14 $
+   @version $Revision: 2.17 $
    @brief   Parser for ini files.
 */
 /*--------------------------------------------------------------------------*/
 
 /*
-    $Id: iniparser.c,v 2.14 2002/12/12 10:49:01 ndevilla Exp $
+    $Id: iniparser.c,v 2.17 2007-05-27 13:03:43 ndevilla Exp $
     $Author: ndevilla $
-    $Date: 2002/12/12 10:49:01 $
-    $Revision: 2.14 $
+    $Date: 2007-05-27 13:03:43 $
+    $Revision: 2.17 $
 */
 
 /*---------------------------------------------------------------------------
@@ -280,6 +280,20 @@ char * iniparser_getstring(dictionary * d, const char * key, char * def)
   This function queries a dictionary for a key. A key as read from an
   ini file is given as "section:key". If the key cannot be found,
   the notfound value is returned.
+
+  Supported values for integers include the usual C notation
+  so decimal, octal (starting with 0) and hexadecimal (starting with 0x)
+  are supported. Examples:
+
+  "42"      ->  42
+  "042"     ->  34 (octal -> decimal)
+  "0x42"    ->  66 (hexa  -> decimal)
+
+  Warning: the conversion may overflow in various ways. Conversion is
+  totally outsourced to strtol(), see the associated man page for overflow
+  handling.
+
+  Credits: Thanks to A. Becker for suggesting strtol()
  */
 /*--------------------------------------------------------------------------*/
 int iniparser_getint(dictionary * d, const char * key, int notfound)
@@ -288,7 +302,7 @@ int iniparser_getint(dictionary * d, const char * key, int notfound)
 
     str = iniparser_getstring(d, key, INI_INVALID_KEY);
     if (str==INI_INVALID_KEY) return notfound ;
-    return atoi(str);
+    return (int)strtol(str, NULL, 0);
 }
 
 
index 2df8ffe8374654ae4dfa9f9e85213db5c398ff63..5bbd9045cfca044c8d662bc33a6a0516b5e1fa0e 100644 (file)
@@ -4,16 +4,16 @@
    @file    iniparser.h
    @author  N. Devillard
    @date    Mar 2000
-   @version $Revision: 1.20 $
+   @version $Revision: 1.23 $
    @brief   Parser for ini files.
 */
 /*--------------------------------------------------------------------------*/
 
 /*
-       $Id: iniparser.h,v 1.20 2005/08/19 17:23:21 ndevilla Exp $
+       $Id: iniparser.h,v 1.23 2006-09-27 11:03:35 ndevilla Exp $
        $Author: ndevilla $
-       $Date: 2005/08/19 17:23:21 $
-       $Revision: 1.20 $
+       $Date: 2006-09-27 11:03:35 $
+       $Revision: 1.23 $
 */
 
 #ifndef _INIPARSER_H_
@@ -154,6 +154,20 @@ char * iniparser_getstring(dictionary * d, const char * key, char * def);
   This function queries a dictionary for a key. A key as read from an
   ini file is given as "section:key". If the key cannot be found,
   the notfound value is returned.
+
+  Supported values for integers include the usual C notation
+  so decimal, octal (starting with 0) and hexadecimal (starting with 0x)
+  are supported. Examples:
+
+  - "42"      ->  42
+  - "042"     ->  34 (octal -> decimal)
+  - "0x42"    ->  66 (hexa  -> decimal)
+
+  Warning: the conversion may overflow in various ways. Conversion is
+  totally outsourced to strtol(), see the associated man page for overflow
+  handling.
+
+  Credits: Thanks to A. Becker for suggesting strtol()
  */
 /*--------------------------------------------------------------------------*/
 int iniparser_getint(dictionary * d, const char * key, int notfound);
index b954a36cf791874e3cc0e529b3c88c6fdd9b66cc..f0d85aea580246991be353affe2657af49ce5d7b 100644 (file)
@@ -4,7 +4,7 @@
   @file                strlib.c
   @author      N. Devillard
   @date                Jan 2001
-  @version     $Revision: 1.8 $
+  @version     $Revision: 1.9 $
   @brief       Various string handling routines to complement the C lib.
 
   This modules adds a few complementary string routines usually missing
 /*--------------------------------------------------------------------------*/
 
 /*
-       $Id: strlib.c,v 1.8 2002/12/12 10:29:16 ndevilla Exp $
+       $Id: strlib.c,v 1.9 2006-09-27 11:04:11 ndevilla Exp $
        $Author: ndevilla $
-       $Date: 2002/12/12 10:29:16 $
-       $Revision: 1.8 $
+       $Date: 2006-09-27 11:04:11 $
+       $Revision: 1.9 $
 */
 
 /*---------------------------------------------------------------------------
index 39ca26f1df0df62d1ba8989b07a0cb4a291e9705..cd70a6287deb7d140edc093b829e190ce9446c93 100644 (file)
@@ -4,7 +4,7 @@
   @file     strlib.h
   @author   N. Devillard
   @date     Jan 2001
-  @version  $Revision: 1.3 $
+  @version  $Revision: 1.4 $
   @brief    Various string handling routines to complement the C lib.
 
   This modules adds a few complementary string routines usually missing
 /*--------------------------------------------------------------------------*/
 
 /*
-       $Id: strlib.h,v 1.3 2001/10/19 08:31:41 ndevilla Exp $
+       $Id: strlib.h,v 1.4 2006-09-27 11:04:11 ndevilla Exp $
        $Author: ndevilla $
-       $Date: 2001/10/19 08:31:41 $
-       $Revision: 1.3 $
+       $Date: 2006-09-27 11:04:11 $
+       $Revision: 1.4 $
 */
 
 #ifndef _STRLIB_H_