~ubuntu-branches/ubuntu/precise/enigmail/precise-security

« back to all changes in this revision

Viewing changes to testing/mozbase/mozprocess/tests/iniparser/iniparser.h

  • Committer: Package Import Robot
  • Author(s): Chris Coulson
  • Date: 2012-11-12 16:36:01 UTC
  • mfrom: (0.12.15)
  • Revision ID: package-import@ubuntu.com-20121112163601-t8e8skdfi3ni9iqp
Tags: 2:1.4.6-0ubuntu0.12.04.1
* New upstream release v1.4.6
  - see LP: #1080212 for USN information
* Drop unneeded patches
  - remove debian/patches/correct-version-number.diff
  - remove debian/patches/dont_register_cids_multiple_times.diff
  - update debian/patches/series
* Support building in an objdir
  - update debian/rules

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
/*-------------------------------------------------------------------------*/
 
3
/**
 
4
   @file    iniparser.h
 
5
   @author  N. Devillard
 
6
   @date    Sep 2007
 
7
   @version 3.0
 
8
   @brief   Parser for ini files.
 
9
*/
 
10
/*--------------------------------------------------------------------------*/
 
11
 
 
12
/*
 
13
        $Id: iniparser.h,v 1.26 2011-03-02 20:15:13 ndevilla Exp $
 
14
        $Revision: 1.26 $
 
15
*/
 
16
 
 
17
#ifndef _INIPARSER_H_
 
18
#define _INIPARSER_H_
 
19
 
 
20
/*---------------------------------------------------------------------------
 
21
                                                                Includes
 
22
 ---------------------------------------------------------------------------*/
 
23
 
 
24
#include <stdio.h>
 
25
#include <stdlib.h>
 
26
#include <string.h>
 
27
 
 
28
/*
 
29
 * The following #include is necessary on many Unixes but not Linux.
 
30
 * It is not needed for Windows platforms.
 
31
 * Uncomment it if needed.
 
32
 */
 
33
/* #include <unistd.h> */
 
34
 
 
35
#include "dictionary.h"
 
36
 
 
37
/*-------------------------------------------------------------------------*/
 
38
/**
 
39
  @brief    Get number of sections in a dictionary
 
40
  @param    d   Dictionary to examine
 
41
  @return   int Number of sections found in dictionary
 
42
 
 
43
  This function returns the number of sections found in a dictionary.
 
44
  The test to recognize sections is done on the string stored in the
 
45
  dictionary: a section name is given as "section" whereas a key is
 
46
  stored as "section:key", thus the test looks for entries that do not
 
47
  contain a colon.
 
48
 
 
49
  This clearly fails in the case a section name contains a colon, but
 
50
  this should simply be avoided.
 
51
 
 
52
  This function returns -1 in case of error.
 
53
 */
 
54
/*--------------------------------------------------------------------------*/
 
55
 
 
56
int iniparser_getnsec(dictionary * d);
 
57
 
 
58
 
 
59
/*-------------------------------------------------------------------------*/
 
60
/**
 
61
  @brief    Get name for section n in a dictionary.
 
62
  @param    d   Dictionary to examine
 
63
  @param    n   Section number (from 0 to nsec-1).
 
64
  @return   Pointer to char string
 
65
 
 
66
  This function locates the n-th section in a dictionary and returns
 
67
  its name as a pointer to a string statically allocated inside the
 
68
  dictionary. Do not free or modify the returned string!
 
69
 
 
70
  This function returns NULL in case of error.
 
71
 */
 
72
/*--------------------------------------------------------------------------*/
 
73
 
 
74
char * iniparser_getsecname(dictionary * d, int n);
 
75
 
 
76
 
 
77
/*-------------------------------------------------------------------------*/
 
78
/**
 
79
  @brief    Save a dictionary to a loadable ini file
 
80
  @param    d   Dictionary to dump
 
81
  @param    f   Opened file pointer to dump to
 
82
  @return   void
 
83
 
 
84
  This function dumps a given dictionary into a loadable ini file.
 
85
  It is Ok to specify @c stderr or @c stdout as output files.
 
86
 */
 
87
/*--------------------------------------------------------------------------*/
 
88
 
 
89
void iniparser_dump_ini(dictionary * d, FILE * f);
 
90
 
 
91
/*-------------------------------------------------------------------------*/
 
92
/**
 
93
  @brief    Dump a dictionary to an opened file pointer.
 
94
  @param    d   Dictionary to dump.
 
95
  @param    f   Opened file pointer to dump to.
 
96
  @return   void
 
97
 
 
98
  This function prints out the contents of a dictionary, one element by
 
99
  line, onto the provided file pointer. It is OK to specify @c stderr
 
100
  or @c stdout as output files. This function is meant for debugging
 
101
  purposes mostly.
 
102
 */
 
103
/*--------------------------------------------------------------------------*/
 
104
void iniparser_dump(dictionary * d, FILE * f);
 
105
 
 
106
/*-------------------------------------------------------------------------*/
 
107
/**
 
108
  @brief    Get the string associated to a key
 
109
  @param    d       Dictionary to search
 
110
  @param    key     Key string to look for
 
111
  @param    def     Default value to return if key not found.
 
112
  @return   pointer to statically allocated character string
 
113
 
 
114
  This function queries a dictionary for a key. A key as read from an
 
115
  ini file is given as "section:key". If the key cannot be found,
 
116
  the pointer passed as 'def' is returned.
 
117
  The returned char pointer is pointing to a string allocated in
 
118
  the dictionary, do not free or modify it.
 
119
 */
 
120
/*--------------------------------------------------------------------------*/
 
121
char * iniparser_getstring(dictionary * d, char * key, char * def);
 
122
 
 
123
/*-------------------------------------------------------------------------*/
 
124
/**
 
125
  @brief    Get the string associated to a key, convert to an int
 
126
  @param    d Dictionary to search
 
127
  @param    key Key string to look for
 
128
  @param    notfound Value to return in case of error
 
129
  @return   integer
 
130
 
 
131
  This function queries a dictionary for a key. A key as read from an
 
132
  ini file is given as "section:key". If the key cannot be found,
 
133
  the notfound value is returned.
 
134
 
 
135
  Supported values for integers include the usual C notation
 
136
  so decimal, octal (starting with 0) and hexadecimal (starting with 0x)
 
137
  are supported. Examples:
 
138
 
 
139
  - "42"      ->  42
 
140
  - "042"     ->  34 (octal -> decimal)
 
141
  - "0x42"    ->  66 (hexa  -> decimal)
 
142
 
 
143
  Warning: the conversion may overflow in various ways. Conversion is
 
144
  totally outsourced to strtol(), see the associated man page for overflow
 
145
  handling.
 
146
 
 
147
  Credits: Thanks to A. Becker for suggesting strtol()
 
148
 */
 
149
/*--------------------------------------------------------------------------*/
 
150
int iniparser_getint(dictionary * d, char * key, int notfound);
 
151
 
 
152
/*-------------------------------------------------------------------------*/
 
153
/**
 
154
  @brief    Get the string associated to a key, convert to a double
 
155
  @param    d Dictionary to search
 
156
  @param    key Key string to look for
 
157
  @param    notfound Value to return in case of error
 
158
  @return   double
 
159
 
 
160
  This function queries a dictionary for a key. A key as read from an
 
161
  ini file is given as "section:key". If the key cannot be found,
 
162
  the notfound value is returned.
 
163
 */
 
164
/*--------------------------------------------------------------------------*/
 
165
double iniparser_getdouble(dictionary * d, char * key, double notfound);
 
166
 
 
167
/*-------------------------------------------------------------------------*/
 
168
/**
 
169
  @brief    Get the string associated to a key, convert to a boolean
 
170
  @param    d Dictionary to search
 
171
  @param    key Key string to look for
 
172
  @param    notfound Value to return in case of error
 
173
  @return   integer
 
174
 
 
175
  This function queries a dictionary for a key. A key as read from an
 
176
  ini file is given as "section:key". If the key cannot be found,
 
177
  the notfound value is returned.
 
178
 
 
179
  A true boolean is found if one of the following is matched:
 
180
 
 
181
  - A string starting with 'y'
 
182
  - A string starting with 'Y'
 
183
  - A string starting with 't'
 
184
  - A string starting with 'T'
 
185
  - A string starting with '1'
 
186
 
 
187
  A false boolean is found if one of the following is matched:
 
188
 
 
189
  - A string starting with 'n'
 
190
  - A string starting with 'N'
 
191
  - A string starting with 'f'
 
192
  - A string starting with 'F'
 
193
  - A string starting with '0'
 
194
 
 
195
  The notfound value returned if no boolean is identified, does not
 
196
  necessarily have to be 0 or 1.
 
197
 */
 
198
/*--------------------------------------------------------------------------*/
 
199
int iniparser_getboolean(dictionary * d, char * key, int notfound);
 
200
 
 
201
 
 
202
/*-------------------------------------------------------------------------*/
 
203
/**
 
204
  @brief    Set an entry in a dictionary.
 
205
  @param    ini     Dictionary to modify.
 
206
  @param    entry   Entry to modify (entry name)
 
207
  @param    val     New value to associate to the entry.
 
208
  @return   int 0 if Ok, -1 otherwise.
 
209
 
 
210
  If the given entry can be found in the dictionary, it is modified to
 
211
  contain the provided value. If it cannot be found, -1 is returned.
 
212
  It is Ok to set val to NULL.
 
213
 */
 
214
/*--------------------------------------------------------------------------*/
 
215
int iniparser_set(dictionary * ini, char * entry, char * val);
 
216
 
 
217
 
 
218
/*-------------------------------------------------------------------------*/
 
219
/**
 
220
  @brief    Delete an entry in a dictionary
 
221
  @param    ini     Dictionary to modify
 
222
  @param    entry   Entry to delete (entry name)
 
223
  @return   void
 
224
 
 
225
  If the given entry can be found, it is deleted from the dictionary.
 
226
 */
 
227
/*--------------------------------------------------------------------------*/
 
228
void iniparser_unset(dictionary * ini, char * entry);
 
229
 
 
230
/*-------------------------------------------------------------------------*/
 
231
/**
 
232
  @brief    Finds out if a given entry exists in a dictionary
 
233
  @param    ini     Dictionary to search
 
234
  @param    entry   Name of the entry to look for
 
235
  @return   integer 1 if entry exists, 0 otherwise
 
236
 
 
237
  Finds out if a given entry exists in the dictionary. Since sections
 
238
  are stored as keys with NULL associated values, this is the only way
 
239
  of querying for the presence of sections in a dictionary.
 
240
 */
 
241
/*--------------------------------------------------------------------------*/
 
242
int iniparser_find_entry(dictionary * ini, char * entry) ;
 
243
 
 
244
/*-------------------------------------------------------------------------*/
 
245
/**
 
246
  @brief    Parse an ini file and return an allocated dictionary object
 
247
  @param    ininame Name of the ini file to read.
 
248
  @return   Pointer to newly allocated dictionary
 
249
 
 
250
  This is the parser for ini files. This function is called, providing
 
251
  the name of the file to be read. It returns a dictionary object that
 
252
  should not be accessed directly, but through accessor functions
 
253
  instead.
 
254
 
 
255
  The returned dictionary must be freed using iniparser_freedict().
 
256
 */
 
257
/*--------------------------------------------------------------------------*/
 
258
dictionary * iniparser_load(char * ininame);
 
259
 
 
260
/*-------------------------------------------------------------------------*/
 
261
/**
 
262
  @brief    Free all memory associated to an ini dictionary
 
263
  @param    d Dictionary to free
 
264
  @return   void
 
265
 
 
266
  Free all memory associated to an ini dictionary.
 
267
  It is mandatory to call this function before the dictionary object
 
268
  gets out of the current context.
 
269
 */
 
270
/*--------------------------------------------------------------------------*/
 
271
void iniparser_freedict(dictionary * d);
 
272
 
 
273
#endif