STASIS
A pipeline delivery generator
Loading...
Searching...
No Matches
ini.h File Reference
#include <stdio.h>
#include <stddef.h>
#include <stdbool.h>
#include "template.h"
Include dependency graph for ini.h:

Go to the source code of this file.

Data Structures

union  INIVal
 Consolidate possible value types. More...
 
struct  INIData
 A structure to describe an INI data record. More...
 
struct  INISection
 A structure to describe an INI section. More...
 
struct  INIFILE
 A structure to describe an INI configuration file. More...
 

Macros

#define INI_WRITE_RAW   0
 Dump INI data. Contents are not modified.
 
#define INI_WRITE_PRESERVE   1
 Dump INI data. Template strings are.
 
#define INI_READ_RAW   0
 Dump INI data. Contents are not modified.
 
#define INI_READ_RENDER   1
 Dump INI data. Template strings are.
 
#define INI_SETVAL_APPEND   0
 
#define INI_SETVAL_REPLACE   1
 
#define INI_SEARCH_EXACT   0
 
#define INI_SEARCH_BEGINS   1
 
#define INI_SEARCH_SUBSTR   2
 expanded to preserve runtime state.
 
#define INIVAL_TYPE_CHAR   1
 Byte.
 
#define INIVAL_TYPE_UCHAR   2
 Unsigned byte.
 
#define INIVAL_TYPE_SHORT   3
 Short integer.
 
#define INIVAL_TYPE_USHORT   4
 Unsigned short integer.
 
#define INIVAL_TYPE_INT   5
 Integer.
 
#define INIVAL_TYPE_UINT   6
 Unsigned integer.
 
#define INIVAL_TYPE_LONG   7
 Long integer.
 
#define INIVAL_TYPE_ULONG   8
 Unsigned long integer.
 
#define INIVAL_TYPE_LLONG   9
 Long long integer.
 
#define INIVAL_TYPE_ULLONG   10
 Unsigned long long integer.
 
#define INIVAL_TYPE_DOUBLE   11
 Double precision float.
 
#define INIVAL_TYPE_FLOAT   12
 Single precision float.
 
#define INIVAL_TYPE_STR   13
 String.
 
#define INIVAL_TYPE_STR_ARRAY   14
 String Array.
 
#define INIVAL_TYPE_BOOL   15
 Boolean.
 
#define INIVAL_TO_LIST   1 << 1
 

Functions

struct INIFILEini_open (const char *filename)
 
struct INISectionini_section_search (struct INIFILE **ini, unsigned mode, const char *value)
 
int ini_section_create (struct INIFILE **ini, char *key)
 
int ini_has_key (struct INIFILE *ini, const char *section, const char *key)
 
int ini_setval (struct INIFILE **ini, unsigned type, char *section_name, char *key, char *value)
 
struct INIDataini_getall (struct INIFILE *ini, char *section_name)
 
int ini_getval (struct INIFILE *ini, char *section_name, char *key, int type, int flags, union INIVal *result)
 
int ini_write (struct INIFILE *ini, FILE **stream, unsigned mode)
 
void ini_free (struct INIFILE **ini)
 
int ini_getval_int (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
unsigned int ini_getval_uint (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
long ini_getval_long (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
unsigned long ini_getval_ulong (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
long long ini_getval_llong (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
unsigned long long ini_getval_ullong (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
float ini_getval_float (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
double ini_getval_double (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
bool ini_getval_bool (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
short ini_getval_short (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
unsigned short ini_getval_ushort (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
char ini_getval_char (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
unsigned char ini_getval_uchar (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
char * ini_getval_char_p (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
char * ini_getval_str (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
char * ini_getval_char_array_p (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
char * ini_getval_str_array (struct INIFILE *ini, char *section_name, char *key, int flags, int *state)
 
struct StrListini_getval_strlist (struct INIFILE *ini, char *section_name, char *key, char *tok, int flags, int *state)
 

Function Documentation

◆ ini_free()

void ini_free ( struct INIFILE ** ini)

Free memory allocated by ini_open()

Parameters
ini

◆ ini_getall()

struct INIData * ini_getall ( struct INIFILE * ini,
char * section_name )

Retrieve all data records in an INI section

example.ini

[example]
key_1 = a string
key_2 = 100

example.c

#include "ini.h"
int main(int argc, char *argv[]) {
const char *filename = "example.ini"
struct INIData *data;
struct INIFILE *ini;
ini = ini_open(filename);
if (!ini) {
perror(filename);
exit(1);
}
// Read all records in "example" section
for (size_t i = 0; ((data = ini_getall(&ini, "example") != NULL); i++) {
printf("key=%s, value=%s\n", data->key, data->value);
}
}
struct INIFILE * ini_open(const char *filename)
Definition ini.c:539
struct INIData * ini_getall(struct INIFILE *ini, char *section_name)
Definition ini.c:94
A structure to describe an INI data record.
Definition ini.h:64
char * value
INI variable value.
Definition ini.h:66
char * key
INI variable name.
Definition ini.h:65
A structure to describe an INI configuration file.
Definition ini.h:82
Parameters
inipointer to INIFILE
section_nameto read
Returns
pointer to INIData
Here is the call graph for this function:

◆ ini_getval()

int ini_getval ( struct INIFILE * ini,
char * section_name,
char * key,
int type,
int flags,
union INIVal * result )

Retrieve a single record from a section key

example.ini

[example]
key_1 = a string
key_2 = 100

example.c

#include "ini.h"
int main(int argc, char *argv[]) {
const char *filename = "example.ini"
union INIVal *data;
struct INIFILE *ini;
ini = ini_open(filename);
if (!ini) {
perror(filename);
exit(1);
}
data = ini_getval(&ini, "example", "key_1", INIVAL_TYPE_STR);
puts(data.as_char_p);
data = ini_getval(&ini, "example", "key_2", INIVAL_TYPE_INT);
printf("%d\n", data.as_int);
}
int ini_getval(struct INIFILE *ini, char *section_name, char *key, int type, int flags, union INIVal *result)
Definition ini.c:118
#define INIVAL_TYPE_INT
Integer.
Definition ini.h:25
#define INIVAL_TYPE_STR
String.
Definition ini.h:33
Consolidate possible value types.
Definition ini.h:42
char * as_char_p
String.
Definition ini.h:55
int as_int
Integer.
Definition ini.h:47
Parameters
inipointer to INIFILE
section_nameto read
keyto return
typeINIVAL_TYPE_INT
typeINIVAL_TYPE_UINT
typeINIVAL_TYPE_LONG
typeINIVAL_TYPE_ULONG
typeINIVAL_TYPE_LLONG
typeINIVAL_TYPE_ULLONG
typeINIVAL_TYPE_DOUBLE
typeINIVAL_TYPE_FLOAT
typeINIVAL_TYPE_STR
typeINIVAL_TYPE_STR_ARRAY
typeINIVAL_TYPE_BOOL
resultpointer to INIVal
Returns
0 on success
Non-zero on error
Here is the call graph for this function:

◆ ini_has_key()

int ini_has_key ( struct INIFILE * ini,
const char * section,
const char * key )
Parameters
ini
section
key
Returns
Here is the call graph for this function:

◆ ini_open()

struct INIFILE * ini_open ( const char * filename)

Open and parse and INI configuration file

#include "ini.h"
int main(int argc, char *argv[]) {
const char *filename = "example.ini"
struct INIFILE *ini;
ini = ini_open(filename);
if (!ini) {
perror(filename);
exit(1);
}
}
Parameters
filenamepath to INI file
Returns
pointer to INIFILE
Here is the call graph for this function:

◆ ini_section_create()

int ini_section_create ( struct INIFILE ** ini,
char * key )
Parameters
ini
key
Returns
Here is the call graph for this function:

◆ ini_section_search()

struct INISection * ini_section_search ( struct INIFILE ** ini,
unsigned mode,
const char * value )
Parameters
ini
value
Returns
Here is the call graph for this function:

◆ ini_setval()

int ini_setval ( struct INIFILE ** ini,
unsigned type,
char * section_name,
char * key,
char * value )

Assign value to a section key

Parameters
ini
typeINI_SETVAL_APPEND or INI_SETVAL_REPLACE
section_name
key
value
Returns
Here is the call graph for this function:

◆ ini_write()

int ini_write ( struct INIFILE * ini,
FILE ** stream,
unsigned mode )

Write INIFILE sections and data to a file stream

Parameters
inipointer to INIFILE
filepointer to address of file stream
Returns
0 on success, -1 on error
Here is the call graph for this function: